diff --git a/app/src/main/java/org/thoughtcrime/securesms/compose/ComposeFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/compose/ComposeFragment.kt new file mode 100644 index 000000000..8e4224639 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/compose/ComposeFragment.kt @@ -0,0 +1,34 @@ +package org.thoughtcrime.securesms.compose + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.ComposeView +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.ViewCompositionStrategy +import org.signal.core.ui.theme.SignalTheme +import org.thoughtcrime.securesms.LoggingFragment +import org.thoughtcrime.securesms.util.DynamicTheme + +/** + * Generic ComposeFragment which can be subclassed to build UI with compose. + */ +abstract class ComposeFragment : LoggingFragment() { + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return ComposeView(requireContext()).apply { + setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) + setContent { + SignalTheme( + isDarkMode = DynamicTheme.isDarkTheme(LocalContext.current) + ) { + SheetContent() + } + } + } + } + + @Composable + abstract fun SheetContent() +}