File tree Expand file tree Collapse file tree
api/src/main/java/com/neki/android/feature/sample/api
src/main/java/com/neki/android/feature/sample/impl Expand file tree Collapse file tree Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ package com.neki.android.feature.sample.api
2+
3+ import androidx.navigation3.runtime.NavKey
4+ import com.neki.android.core.navigation.Navigator
5+ import kotlinx.serialization.Serializable
6+
7+ sealed interface SampleNavKey : NavKey {
8+
9+ @Serializable
10+ data class Sample (val id : Long ) : SampleNavKey
11+ }
12+
13+ fun Navigator.navigateToSample (id : Long ) {
14+ navigate(SampleNavKey .Sample (id))
15+ }
Original file line number Diff line number Diff line change @@ -10,5 +10,5 @@ dependencies {
1010 implementation(libs.androidx.activity.compose)
1111 implementation(libs.androidx.appcompat)
1212 implementation(libs.androidx.core.ktx)
13-
13+ implementation(projects.feature.sample.api)
1414}
Original file line number Diff line number Diff line change 1+ package com.neki.android.feature.sample.impl
2+
3+ import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
4+ import androidx.navigation3.runtime.EntryProviderScope
5+ import androidx.navigation3.runtime.NavKey
6+ import com.neki.android.core.navigation.EntryProviderInstaller
7+ import com.neki.android.core.navigation.Navigator
8+ import com.neki.android.feature.sample.api.SampleNavKey
9+ import dagger.Module
10+ import dagger.Provides
11+ import dagger.hilt.InstallIn
12+ import dagger.hilt.android.components.ActivityRetainedComponent
13+ import dagger.multibindings.IntoSet
14+
15+ @Module
16+ @InstallIn(ActivityRetainedComponent ::class )
17+ object SampleEntryProviderModule {
18+
19+ @IntoSet
20+ @Provides
21+ fun provideSampleEntryBuilder (navigator : Navigator ): EntryProviderInstaller = {
22+ sampleEntry(navigator)
23+ }
24+ }
25+
26+ private fun EntryProviderScope<NavKey>.sampleEntry (navigator : Navigator ) {
27+ entry<SampleNavKey .Sample > { key ->
28+ val viewModel = hiltViewModel<SampleViewModel , SampleViewModel .Factory >(
29+ creationCallback = { factory ->
30+ factory.create(key)
31+ }
32+ )
33+ SampleScreen (viewModel = viewModel)
34+ }
35+ }
Original file line number Diff line number Diff line change 1+ package com.neki.android.feature.sample.impl
2+
3+ import androidx.compose.material3.Text
4+ import androidx.compose.runtime.Composable
5+ import androidx.compose.ui.Modifier
6+ import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
7+
8+ @Composable
9+ fun SampleScreen (
10+ modifier : Modifier = Modifier ,
11+ viewModel : SampleViewModel = hiltViewModel(),
12+ ) {
13+ Text (" Sample" )
14+ }
Original file line number Diff line number Diff line change 1+ package com.neki.android.feature.sample.impl
2+
3+ import androidx.lifecycle.ViewModel
4+ import com.neki.android.feature.sample.api.SampleNavKey
5+ import dagger.assisted.Assisted
6+ import dagger.assisted.AssistedFactory
7+ import dagger.assisted.AssistedInject
8+ import dagger.hilt.android.lifecycle.HiltViewModel
9+
10+ @HiltViewModel(assistedFactory = SampleViewModel .Factory ::class )
11+ class SampleViewModel @AssistedInject constructor(
12+ @Assisted val navKey : SampleNavKey .Sample ,
13+ ) : ViewModel() {
14+
15+ val id = navKey.id
16+
17+ @AssistedFactory
18+ interface Factory {
19+ fun create (navKey : SampleNavKey .Sample ): SampleViewModel
20+ }
21+ }
You can’t perform that action at this time.
0 commit comments