From 6a48d80deccb5284b8ab80da33829d9a00022248 Mon Sep 17 00:00:00 2001 From: lihenggui Date: Tue, 15 Oct 2024 11:42:16 -0700 Subject: [PATCH] Make foryou module to use koin --- feature/foryou/build.gradle.kts | 2 ++ .../feature/foryou/ForYouScreen.kt | 3 ++- .../feature/foryou/ForYouViewModel.kt | 3 +-- .../feature/foryou/di/ForYouModule.kt | 25 +++++++++++++++++++ .../foryou/navigation/ForYouNavigation.kt | 9 ++++--- 5 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/di/ForYouModule.kt diff --git a/feature/foryou/build.gradle.kts b/feature/foryou/build.gradle.kts index d4d8cbdc8..e35140a9d 100644 --- a/feature/foryou/build.gradle.kts +++ b/feature/foryou/build.gradle.kts @@ -18,6 +18,7 @@ plugins { alias(libs.plugins.nowinandroid.cmp.feature) alias(libs.plugins.nowinandroid.android.library.jacoco) alias(libs.plugins.roborazzi) + alias(libs.plugins.kotlin.serialization) } android { @@ -36,6 +37,7 @@ kotlin { implementation(compose.components.uiToolingPreview) implementation(libs.coil) implementation(libs.coil.compose) + implementation(libs.kotlinx.serialization.core) } androidMain.dependencies { implementation(libs.accompanist.permissions) diff --git a/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt b/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt index 44eef41aa..4225e0d74 100644 --- a/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt +++ b/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt @@ -95,12 +95,13 @@ import nowinandroid.feature.foryou.generated.resources.feature_foryou_onboarding import nowinandroid.feature.foryou.generated.resources.feature_foryou_onboarding_guidance_title import org.jetbrains.compose.resources.stringResource import org.jetbrains.compose.ui.tooling.preview.PreviewParameter +import org.koin.compose.viewmodel.koinViewModel @Composable internal fun ForYouScreen( onTopicClick: (String) -> Unit, modifier: Modifier = Modifier, - viewModel: ForYouViewModel, + viewModel: ForYouViewModel = koinViewModel(), ) { val onboardingUiState by viewModel.onboardingUiState.collectAsStateWithLifecycle() val feedState by viewModel.feedState.collectAsStateWithLifecycle() diff --git a/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt b/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt index 1ae15e4e0..7bdb61b96 100644 --- a/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt +++ b/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt @@ -39,9 +39,8 @@ import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch -import me.tatarka.inject.annotations.Inject -class ForYouViewModel @Inject constructor( +class ForYouViewModel( private val savedStateHandle: SavedStateHandle, syncManager: SyncManager, private val analyticsHelper: AnalyticsHelper, diff --git a/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/di/ForYouModule.kt b/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/di/ForYouModule.kt new file mode 100644 index 000000000..2031e63b9 --- /dev/null +++ b/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/di/ForYouModule.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.samples.apps.nowinandroid.feature.foryou.di + +import com.google.samples.apps.nowinandroid.feature.foryou.ForYouViewModel +import org.koin.core.module.dsl.viewModel +import org.koin.dsl.module + +val forYouModule = module { + viewModel { ForYouViewModel(get(), get(), get(), get(), get(), get()) } +} diff --git a/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt b/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt index 835a59f3f..8898c471a 100644 --- a/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt +++ b/feature/foryou/src/commonMain/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt @@ -22,11 +22,14 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import androidx.navigation.navDeepLink import com.google.samples.apps.nowinandroid.core.notifications.DEEP_LINK_URI_PATTERN +import com.google.samples.apps.nowinandroid.feature.foryou.ForYouScreen import kotlinx.serialization.Serializable -@Serializable data object ForYouRoute +@Serializable +data object ForYouRoute -fun NavController.navigateToForYou(navOptions: NavOptions) = navigate(route = ForYouRoute, navOptions) +fun NavController.navigateToForYou(navOptions: NavOptions) = + navigate(route = ForYouRoute, navOptions) fun NavGraphBuilder.forYouScreen(onTopicClick: (String) -> Unit) { composable( @@ -43,6 +46,6 @@ fun NavGraphBuilder.forYouScreen(onTopicClick: (String) -> Unit) { }, ), ) { -// ForYouRoute(onTopicClick) + ForYouScreen(onTopicClick) } }