Skip to content

Commit 21f3fd0

Browse files
committed
chore(nav3): clean up ViewModel scoping extensions
Rename Voyager.kt to ViewModelExtensions.kt, remove deprecated getStackScopedViewModel, and fix deprecated hiltViewModel import. Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent 684fda0 commit 21f3fd0

4 files changed

Lines changed: 4 additions & 27 deletions

File tree

apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/ui/navigation/AppRestrictedScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.rememberCoroutineScope
55
import com.flipcash.app.core.AppRoute
66
import com.flipcash.app.internal.ui.HomeViewModel
7-
import com.getcode.navigation.core.LocalCodeNavigator
87
import com.getcode.navigation.extensions.getActivityScopedViewModel
8+
import com.getcode.navigation.core.LocalCodeNavigator
99
import com.getcode.ui.components.restrictions.ContentRestrictedView
1010
import com.getcode.ui.core.RestrictionType
1111
import kotlinx.coroutines.launch

apps/flipcash/features/balance/src/main/kotlin/com/flipcash/app/balance/BalanceScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.ui.Alignment
88
import androidx.compose.ui.Modifier
99
import androidx.compose.ui.res.stringResource
1010
import androidx.hilt.navigation.compose.hiltViewModel
11+
import com.getcode.navigation.extensions.getActivityScopedViewModel
1112
import com.flipcash.app.balance.internal.BalanceScreen
1213
import com.flipcash.app.balance.internal.BalanceViewModel
1314
import com.flipcash.app.core.AppRoute
@@ -16,7 +17,6 @@ import com.flipcash.app.core.tokens.TokenPurpose
1617
import com.flipcash.app.tokens.ui.SelectTokenViewModel
1718
import com.flipcash.core.R
1819
import com.getcode.navigation.core.LocalCodeNavigator
19-
import com.getcode.navigation.extensions.getActivityScopedViewModel
2020
import com.getcode.ui.components.AppBarDefaults
2121
import com.getcode.ui.components.AppBarWithTitle
2222
import kotlinx.coroutines.flow.filterIsInstance

apps/flipcash/features/lab/src/main/kotlin/com/flipcash/app/lab/LabsScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import androidx.compose.ui.Modifier
88
import androidx.compose.ui.res.stringResource
99
import com.flipcash.app.lab.internal.LabsScreenContent
1010
import com.flipcash.app.lab.internal.LabsScreenViewModel
11+
import com.getcode.navigation.extensions.getActivityScopedViewModel
1112
import com.flipcash.core.R
1213
import com.getcode.navigation.core.LocalCodeNavigator
13-
import com.getcode.navigation.extensions.getActivityScopedViewModel
1414
import com.getcode.ui.components.AppBarDefaults
1515
import com.getcode.ui.components.AppBarWithTitle
1616

ui/navigation/src/main/kotlin/com/getcode/navigation/extensions/Voyager.kt renamed to ui/navigation/src/main/kotlin/com/getcode/navigation/extensions/ViewModelExtensions.kt

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import androidx.activity.ComponentActivity
44
import androidx.compose.runtime.Composable
55
import androidx.compose.runtime.remember
66
import androidx.compose.ui.platform.LocalContext
7-
import androidx.hilt.navigation.compose.hiltViewModel
7+
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
88
import androidx.lifecycle.HasDefaultViewModelProviderFactory
99
import androidx.lifecycle.ViewModel
1010
import androidx.lifecycle.ViewModelProvider
@@ -25,29 +25,6 @@ inline fun <reified T : ViewModel> getActivityScopedViewModel(): T {
2525
}
2626
}
2727

28-
/**
29-
* Get a ViewModel scoped to a key (for multi-step flows sharing state).
30-
* Falls back to activity-scoped hiltViewModel when no key is provided.
31-
*/
32-
@Deprecated(
33-
"Use flowScopedViewModel(key) for flow-shared VMs or hiltViewModel() for entry-scoped VMs",
34-
ReplaceWith("flowScopedViewModel(key)", "com.getcode.navigation.extensions.flowScopedViewModel")
35-
)
36-
@Composable
37-
inline fun <reified T : ViewModel> getStackScopedViewModel(key: String? = null): T {
38-
return if (key != null) {
39-
val activity = LocalContext.current.getActivity() as ComponentActivity
40-
remember(key1 = key) {
41-
val factory = activity.defaultViewModelProviderFactory
42-
val extras = activity.defaultViewModelCreationExtras
43-
val provider = ViewModelProvider(activity.viewModelStore, factory, extras)
44-
provider[key, T::class.java]
45-
}
46-
} else {
47-
hiltViewModel<T>()
48-
}
49-
}
50-
5128
/**
5229
* Get a Hilt ViewModel shared across multiple screens in a multi-step flow.
5330
* The ViewModel is scoped to the activity's ViewModelStore with the given [key],

0 commit comments

Comments
 (0)