Make foryou module to use koin

pull/2064/head
lihenggui 1 year ago
parent 454acf5d3d
commit 6a48d80dec

@ -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)

@ -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()

@ -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,

@ -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()) }
}

@ -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<ForYouRoute>(
@ -43,6 +46,6 @@ fun NavGraphBuilder.forYouScreen(onTopicClick: (String) -> Unit) {
},
),
) {
// ForYouRoute(onTopicClick)
ForYouScreen(onTopicClick)
}
}

Loading…
Cancel
Save