Inject Koin context in Compose hierarchy

This commit is contained in:
Shinokuni 2024-04-10 17:14:16 +02:00
parent c071426bbd
commit bf7ac41d6e

View File

@ -10,10 +10,13 @@ import com.readrops.app.compose.account.selection.AccountSelectionScreen
import com.readrops.app.compose.account.selection.AccountSelectionViewModel import com.readrops.app.compose.account.selection.AccountSelectionViewModel
import com.readrops.app.compose.home.HomeScreen import com.readrops.app.compose.home.HomeScreen
import com.readrops.app.compose.util.theme.ReadropsTheme import com.readrops.app.compose.util.theme.ReadropsTheme
import org.koin.androidx.compose.KoinAndroidContext
import org.koin.androidx.viewmodel.ext.android.getViewModel import org.koin.androidx.viewmodel.ext.android.getViewModel
import org.koin.core.annotation.KoinExperimentalAPI
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
@OptIn(KoinExperimentalAPI::class)
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -21,15 +24,17 @@ class MainActivity : ComponentActivity() {
val accountExists = viewModel.accountExists() val accountExists = viewModel.accountExists()
setContent { setContent {
ReadropsTheme { KoinAndroidContext {
Navigator( ReadropsTheme {
screen = if (accountExists) HomeScreen() else AccountSelectionScreen(), Navigator(
disposeBehavior = NavigatorDisposeBehavior( screen = if (accountExists) HomeScreen() else AccountSelectionScreen(),
// prevent screenModels being recreated when opening a screen from a tab disposeBehavior = NavigatorDisposeBehavior(
disposeNestedNavigators = false // prevent screenModels being recreated when opening a screen from a tab
) disposeNestedNavigators = false
) { )
CurrentScreen() ) {
CurrentScreen()
}
} }
} }
} }