diff --git a/app-shared-tests/src/main/java/com/appunite/loudius/AbsLoginScreenTest.kt b/app-shared-tests/src/main/java/com/appunite/loudius/AbsLoginScreenTest.kt index cb1ba89a..8fa77a44 100644 --- a/app-shared-tests/src/main/java/com/appunite/loudius/AbsLoginScreenTest.kt +++ b/app-shared-tests/src/main/java/com/appunite/loudius/AbsLoginScreenTest.kt @@ -43,6 +43,7 @@ import org.hamcrest.Matchers.allOf import org.junit.Before import org.junit.Rule import org.junit.Test +import org.koin.compose.KoinContext import org.koin.core.context.GlobalContext import org.koin.dsl.module import strikt.api.expectThat @@ -81,8 +82,10 @@ abstract class AbsLoginScreenTest { .respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, null)) composeTestRule.setContent { - LoudiusTheme { - LoginScreen() + KoinContext { + LoudiusTheme { + LoginScreen() + } } } @@ -110,8 +113,10 @@ abstract class AbsLoginScreenTest { .respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, null)) composeTestRule.setContent { - LoudiusTheme { - LoginScreen() + KoinContext { + LoudiusTheme { + LoginScreen() + } } } diff --git a/app-shared-tests/src/main/java/com/appunite/loudius/AbsPullRequestsScreenTest.kt b/app-shared-tests/src/main/java/com/appunite/loudius/AbsPullRequestsScreenTest.kt index 36e7bad8..0f57ca4d 100644 --- a/app-shared-tests/src/main/java/com/appunite/loudius/AbsPullRequestsScreenTest.kt +++ b/app-shared-tests/src/main/java/com/appunite/loudius/AbsPullRequestsScreenTest.kt @@ -28,6 +28,7 @@ import com.appunite.loudius.util.Register import com.appunite.loudius.util.waitUntilLoadingDoesNotExist import org.junit.Rule import org.junit.Test +import org.koin.compose.KoinContext import strikt.api.expectThat import strikt.assertions.containsExactly @@ -49,8 +50,10 @@ abstract class AbsPullRequestsScreenTest { Register.issues(mockWebServer) composeTestRule.setContent { - LoudiusTheme { - PullRequestsScreen { _, _, _, _ -> } + KoinContext { + LoudiusTheme { + PullRequestsScreen { _, _, _, _ -> } + } } } diff --git a/app-shared-tests/src/main/java/com/appunite/loudius/AbsReviewersScreenTest.kt b/app-shared-tests/src/main/java/com/appunite/loudius/AbsReviewersScreenTest.kt index 759b887f..8c4e0abc 100644 --- a/app-shared-tests/src/main/java/com/appunite/loudius/AbsReviewersScreenTest.kt +++ b/app-shared-tests/src/main/java/com/appunite/loudius/AbsReviewersScreenTest.kt @@ -30,6 +30,7 @@ import com.appunite.loudius.util.waitUntilLoadingDoesNotExist import org.junit.Before import org.junit.Rule import org.junit.Test +import org.koin.compose.KoinContext import strikt.api.expectThat import strikt.assertions.containsExactly @@ -53,8 +54,10 @@ abstract class AbsReviewersScreenTest { fun whenResponseIsCorrectThenReviewersAreVisible() { with(integrationTestRule) { composeTestRule.setContent { - LoudiusTheme { - ReviewersScreen { } + KoinContext { + LoudiusTheme { + ReviewersScreen { } + } } } @@ -76,8 +79,10 @@ abstract class AbsReviewersScreenTest { Register.comment(mockWebServer) composeTestRule.setContent { - LoudiusTheme { - ReviewersScreen { } + KoinContext { + LoudiusTheme { + ReviewersScreen { } + } } } @@ -107,8 +112,10 @@ abstract class AbsReviewersScreenTest { fun whenClickOnNotifyAndDoNotCommentThenShowError() { with(integrationTestRule) { composeTestRule.setContent { - LoudiusTheme { - ReviewersScreen { } + KoinContext { + LoudiusTheme { + ReviewersScreen { } + } } } diff --git a/app/src/main/java/com/appunite/loudius/MainActivity.kt b/app/src/main/java/com/appunite/loudius/MainActivity.kt index 37936c33..e349ac9b 100644 --- a/app/src/main/java/com/appunite/loudius/MainActivity.kt +++ b/app/src/main/java/com/appunite/loudius/MainActivity.kt @@ -37,6 +37,7 @@ import com.appunite.loudius.ui.login.LoginScreen import com.appunite.loudius.ui.pullrequests.PullRequestsScreen import com.appunite.loudius.ui.reviewers.ReviewersScreen import org.koin.androidx.viewmodel.ext.android.viewModel +import org.koin.compose.KoinContext class MainActivity : ComponentActivity() { @@ -44,58 +45,60 @@ class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { - LoudiusTheme { - // A surface container using the 'background' color from the theme - Surface( - modifier = Modifier.fillMaxSize(), - color = MaterialTheme.colorScheme.background - ) { - val navController = rememberNavController() - - LaunchedEffect(viewModel.state.authFailureEvent) { - navigateToLoginOnAuthFailure(navController) - } - - NavHost( - navController = navController, - startDestination = Screen.Login.route + KoinContext { + LoudiusTheme { + // A surface container using the 'background' color from the theme + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background ) { - composable(route = Screen.Login.route) { - LoginScreen() + val navController = rememberNavController() + + LaunchedEffect(viewModel.state.authFailureEvent) { + navigateToLoginOnAuthFailure(navController) } - composable( - route = Screen.Authenticating.route, - deepLinks = Screen.Authenticating.deepLinks + + NavHost( + navController = navController, + startDestination = Screen.Login.route ) { - AuthenticatingScreen( - onNavigateToPullRequest = { - navController.navigate(Screen.PullRequests.route) { - popUpTo(Screen.Login.route) { inclusive = true } - } - }, - onNavigateToLogin = { - navController.navigate(Screen.Login.route) { - popUpTo(Screen.Login.route) { inclusive = true } + composable(route = Screen.Login.route) { + LoginScreen() + } + composable( + route = Screen.Authenticating.route, + deepLinks = Screen.Authenticating.deepLinks + ) { + AuthenticatingScreen( + onNavigateToPullRequest = { + navController.navigate(Screen.PullRequests.route) { + popUpTo(Screen.Login.route) { inclusive = true } + } + }, + onNavigateToLogin = { + navController.navigate(Screen.Login.route) { + popUpTo(Screen.Login.route) { inclusive = true } + } } - } - ) - } - composable(route = Screen.PullRequests.route) { - PullRequestsScreen { owner, repo, pullRequestNumber, submissionTime -> - val route = Screen.Reviewers.constructRoute( - owner = owner, - repo = repo, - pullRequestNumber = pullRequestNumber, - submissionDate = submissionTime ) - navController.navigate(route) } - } - composable( - route = Screen.Reviewers.route, - arguments = Screen.Reviewers.arguments - ) { - ReviewersScreen { navController.popBackStack() } + composable(route = Screen.PullRequests.route) { + PullRequestsScreen { owner, repo, pullRequestNumber, submissionTime -> + val route = Screen.Reviewers.constructRoute( + owner = owner, + repo = repo, + pullRequestNumber = pullRequestNumber, + submissionDate = submissionTime + ) + navController.navigate(route) + } + } + composable( + route = Screen.Reviewers.route, + arguments = Screen.Reviewers.arguments + ) { + ReviewersScreen { navController.popBackStack() } + } } } } diff --git a/components/README.md b/components/README.md index 4eb383eb..8d5203f2 100644 --- a/components/README.md +++ b/components/README.md @@ -60,4 +60,4 @@ Topbar is a component on the top of the screen. | Variant | Snapshot | |--------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| | **Topbar with back navigation**
[Source Code](../components/src/main/java/com/appunite/loudius/components/components/LoudiusTopAppBar.kt#L61-L70) | | -| **Topbar with no navigation**
[Source Code](../components/src/main/java/com/appunite/loudius/components/components/LoudiusTopAppBar.kt#L72-L80) | | \ No newline at end of file +| **Topbar with no navigation**
[Source Code](../components/src/main/java/com/appunite/loudius/components/components/LoudiusTopAppBar.kt#L72-L80) | | diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bad8fcd7..c4fc320b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ googleServices = "4.4.0" junit = "4.13.2" junitBom = "5.10.1" junitVersion = "1.1.5" -koin = "3.5.0" +koin = "3.5.3" kotlinxCoroutines = "1.7.3" kotlinxDatetime = "0.4.1" kotlinxDatetimeVersion = "0.4.1"