From 5b024c8d6eeb9d2c201706f803758fe2137aeaea Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 10 May 2022 13:51:59 +0530 Subject: [PATCH] common: add UserProfile composable and integrate navigation --- .../msfjarvis/claw/android/ui/LobstersApp.kt | 17 +++++++++++++++++ .../msfjarvis/claw/common/user/UserProfile.kt | 14 ++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 common/src/commonMain/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt index d5c83a43..18e60c10 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt @@ -45,6 +45,7 @@ import dev.msfjarvis.claw.common.comments.LocalHTMLConverter import dev.msfjarvis.claw.common.res.ClawIcons import dev.msfjarvis.claw.common.theme.LobstersTheme import dev.msfjarvis.claw.common.urllauncher.UrlLauncher +import dev.msfjarvis.claw.common.user.UserProfile import kotlinx.coroutines.launch import soup.compose.material.motion.materialElevationScaleIn import soup.compose.material.motion.materialElevationScaleOut @@ -212,6 +213,22 @@ fun LobstersApp( postActions = postActions, ) } + composable( + route = Destinations.User.getRoute("{username}"), + arguments = listOf(navArgument("username") { type = NavType.StringType }), + deepLinks = listOf(navDeepLink { uriPattern = "$uri/u/{username}" }), + enterMotionSpec = { translateXIn { it } }, + exitMotionSpec = { materialElevationScaleOut() }, + popEnterMotionSpec = { materialElevationScaleIn() }, + popExitMotionSpec = { translateXOut { it } }, + ) { backStackEntry -> + val username = requireNotNull(backStackEntry.arguments?.getString("username")) + UserProfile( + username = username, + getProfile = viewModel::getUserProfile, + modifier = Modifier.navigationBarsPadding(), + ) + } } } } diff --git a/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt new file mode 100644 index 00000000..4c5089cd --- /dev/null +++ b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/user/UserProfile.kt @@ -0,0 +1,14 @@ +package dev.msfjarvis.claw.common.user + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import dev.msfjarvis.claw.model.User + +@Suppress("UNCHECKED_CAST") +@Composable +fun UserProfile( + username: String, + getProfile: suspend (username: String) -> User, + modifier: Modifier = Modifier, +) { +}