Refactor(ToolView): Optimize preview code logic
This commit is contained in:
@@ -11,7 +11,7 @@ const val TOOL_STORE_ROUTE = "tool_store_route"
|
||||
fun NavController.navigateToToolStore(navOptions: NavOptions? = null) = navigate(TOOL_STORE_ROUTE, navOptions)
|
||||
|
||||
fun NavGraphBuilder.toolStoreScreen(
|
||||
onNavigateToToolView: (username: String, toolId: String) -> Unit
|
||||
onNavigateToToolView: (username: String, toolId: String, preview: Boolean) -> Unit
|
||||
) {
|
||||
composable(
|
||||
route = TOOL_STORE_ROUTE
|
||||
|
||||
@@ -16,9 +16,10 @@ private val URL_CHARACTER_ENCODING = UTF_8.name()
|
||||
|
||||
internal const val USER_NAME_ARG = "username"
|
||||
internal const val TOOL_ID_ARG = "toolId"
|
||||
internal const val PREVIEW_ARG = "preview"
|
||||
const val TOOL_VIEW_ROUTE = "tool_view_route"
|
||||
|
||||
internal class ToolViewArgs(val username: String, val toolId: String) {
|
||||
internal class ToolViewArgs(val username: String, val toolId: String, val preview: Boolean) {
|
||||
constructor(savedStateHandle: SavedStateHandle) :
|
||||
this(
|
||||
URLDecoder.decode(
|
||||
@@ -28,18 +29,20 @@ internal class ToolViewArgs(val username: String, val toolId: String) {
|
||||
URLDecoder.decode(
|
||||
checkNotNull(savedStateHandle[TOOL_ID_ARG]),
|
||||
URL_CHARACTER_ENCODING
|
||||
)
|
||||
),
|
||||
checkNotNull(savedStateHandle[PREVIEW_ARG])
|
||||
)
|
||||
}
|
||||
|
||||
fun NavController.navigateToToolView(
|
||||
username: String,
|
||||
toolId: String,
|
||||
preview: Boolean,
|
||||
navOptions: NavOptionsBuilder.() -> Unit = {}
|
||||
) {
|
||||
val encodedUsername = URLEncoder.encode(username, URL_CHARACTER_ENCODING)
|
||||
val encodedToolId = URLEncoder.encode(toolId, URL_CHARACTER_ENCODING)
|
||||
val newRoute = "$TOOL_VIEW_ROUTE/$encodedUsername/$encodedToolId"
|
||||
val newRoute = "$TOOL_VIEW_ROUTE/$encodedUsername/$encodedToolId?$PREVIEW_ARG=$preview"
|
||||
navigate(newRoute) {
|
||||
navOptions()
|
||||
}
|
||||
@@ -49,10 +52,11 @@ fun NavGraphBuilder.toolViewScreen(
|
||||
onBackClick: () -> Unit
|
||||
) {
|
||||
composable(
|
||||
route = "${TOOL_VIEW_ROUTE}/{$USER_NAME_ARG}/{$TOOL_ID_ARG}",
|
||||
route = "${TOOL_VIEW_ROUTE}/{$USER_NAME_ARG}/{$TOOL_ID_ARG}?$PREVIEW_ARG={$PREVIEW_ARG}",
|
||||
arguments = listOf(
|
||||
navArgument(USER_NAME_ARG) { type = NavType.StringType },
|
||||
navArgument(TOOL_ID_ARG) { type = NavType.StringType }
|
||||
navArgument(TOOL_ID_ARG) { type = NavType.StringType },
|
||||
navArgument(PREVIEW_ARG) { type = NavType.BoolType; defaultValue = false }
|
||||
)
|
||||
) {
|
||||
ToolViewRoute(
|
||||
|
||||
@@ -12,7 +12,7 @@ fun NavController.navigateToTools(navOptions: NavOptions) = navigate(TOOLS_ROUTE
|
||||
|
||||
fun NavGraphBuilder.toolsScreen(
|
||||
onShowSnackbar: suspend (message: String, action: String?) -> Boolean,
|
||||
onNavigateToToolView: (username: String, toolId: String) -> Unit,
|
||||
onNavigateToToolView: (username: String, toolId: String, preview: Boolean) -> Unit,
|
||||
onNavigateToToolStore: () -> Unit
|
||||
) {
|
||||
composable(
|
||||
|
||||
Reference in New Issue
Block a user