generated from bitwarden/template
-
Notifications
You must be signed in to change notification settings - Fork 9
/
EditItemNavigation.kt
55 lines (50 loc) · 1.52 KB
/
EditItemNavigation.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.bitwarden.authenticator.ui.authenticator.feature.edititem
import androidx.lifecycle.SavedStateHandle
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.NavType
import androidx.navigation.navArgument
import com.bitwarden.authenticator.ui.platform.base.util.composableWithPushTransitions
private const val EDIT_ITEM_PREFIX = "edit_item"
private const val EDIT_ITEM_ITEM_ID = "item_id"
private const val EDIT_ITEM_ROUTE = "$EDIT_ITEM_PREFIX/{$EDIT_ITEM_ITEM_ID}"
/**
* Class to retrieve authenticator item arguments from the [SavedStateHandle].
*
* @property itemId ID of the item to be edited.
*/
data class EditItemArgs(val itemId: String) {
constructor(savedStateHandle: SavedStateHandle) : this(
checkNotNull(savedStateHandle[EDIT_ITEM_ITEM_ID]) as String,
)
}
/**
* Add the edit item screen to the nav graph.
*/
fun NavGraphBuilder.editItemDestination(
onNavigateBack: () -> Unit = { },
) {
composableWithPushTransitions(
route = EDIT_ITEM_ROUTE,
arguments = listOf(
navArgument(EDIT_ITEM_ITEM_ID) { type = NavType.StringType },
),
) {
EditItemScreen(
onNavigateBack = onNavigateBack,
)
}
}
/**
* Navigate to the edit item screen.
*/
fun NavController.navigateToEditItem(
itemId: String,
navOptions: NavOptions? = null,
) {
navigate(
route = "$EDIT_ITEM_PREFIX/$itemId",
navOptions = navOptions,
)
}