forked from melod1n/fast-messenger
twoFa -> validation naming; fixes for preview for screens (separating view model from ui); some improvements & fixes
This commit is contained in:
@@ -57,4 +57,6 @@ dependencies {
|
||||
implementation(libs.coil.compose)
|
||||
implementation(libs.androidx.navigation.compose)
|
||||
implementation(libs.kotlin.serialization)
|
||||
|
||||
debugImplementation(libs.androidx.ui.tooling)
|
||||
}
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import kotlinx.serialization.Serializable
|
||||
@Serializable
|
||||
@Parcelize
|
||||
data class UserBannedArguments(
|
||||
val name: String,
|
||||
val userName: String,
|
||||
val message: String,
|
||||
val restoreUrl: String,
|
||||
val accessToken: String
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.meloda.app.fast.userbanned.model
|
||||
|
||||
data class UserBannedScreenState(
|
||||
val userName: String,
|
||||
val message: String
|
||||
) {
|
||||
|
||||
companion object {
|
||||
val EMPTY: UserBannedScreenState = UserBannedScreenState(
|
||||
userName = "",
|
||||
message = ""
|
||||
)
|
||||
}
|
||||
}
|
||||
+5
-7
@@ -8,7 +8,7 @@ import androidx.navigation.NavType
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.toRoute
|
||||
import com.meloda.app.fast.userbanned.model.UserBannedArguments
|
||||
import com.meloda.app.fast.userbanned.presentation.UserBannedScreen
|
||||
import com.meloda.app.fast.userbanned.presentation.UserBannedRoute
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.json.Json
|
||||
@@ -32,18 +32,16 @@ val UserBannedNavType = object : NavType<UserBannedArguments>(isNullableAllowed
|
||||
override val name: String = "UserBannedArguments"
|
||||
}
|
||||
|
||||
fun NavGraphBuilder.userBannedRoute(
|
||||
onBack: () -> Unit
|
||||
) {
|
||||
fun NavGraphBuilder.userBannedRoute(onBack: () -> Unit) {
|
||||
composable<UserBanned>(
|
||||
typeMap = mapOf(typeOf<UserBannedArguments>() to UserBannedNavType)
|
||||
) { backStackEntry ->
|
||||
val arguments: UserBannedArguments = backStackEntry.toRoute()
|
||||
|
||||
UserBannedScreen(
|
||||
UserBannedRoute(
|
||||
onBack = onBack,
|
||||
name = arguments.name,
|
||||
message = arguments.message,
|
||||
userName = arguments.userName,
|
||||
message = arguments.message
|
||||
)
|
||||
}
|
||||
}
|
||||
+29
-11
@@ -14,6 +14,7 @@ import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.material3.TopAppBar
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.SpanStyle
|
||||
@@ -22,27 +23,44 @@ import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.withStyle
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.meloda.app.fast.designsystem.AppTheme
|
||||
import com.meloda.app.fast.userbanned.model.UserBannedScreenState
|
||||
import com.meloda.app.fast.designsystem.R as UiR
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun UserBannedScreenPreview() {
|
||||
AppTheme {
|
||||
UserBannedScreen(
|
||||
onBack = {},
|
||||
name = "Calvin Harris",
|
||||
message = "Eto konets"
|
||||
UserBannedScreen(
|
||||
screenState = UserBannedScreenState(
|
||||
userName = "Andre Shultz",
|
||||
message = "Bruteforce"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun UserBannedRoute(
|
||||
onBack: () -> Unit,
|
||||
userName: String,
|
||||
message: String
|
||||
) {
|
||||
val screenState = remember(userName, message) {
|
||||
UserBannedScreenState(
|
||||
userName = userName,
|
||||
message = message
|
||||
)
|
||||
}
|
||||
|
||||
UserBannedScreen(
|
||||
screenState = screenState,
|
||||
onBack = onBack
|
||||
)
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun UserBannedScreen(
|
||||
onBack: () -> Unit,
|
||||
name: String,
|
||||
message: String,
|
||||
screenState: UserBannedScreenState = UserBannedScreenState.EMPTY,
|
||||
onBack: () -> Unit = {},
|
||||
) {
|
||||
Scaffold(
|
||||
topBar = {
|
||||
@@ -80,7 +98,7 @@ fun UserBannedScreen(
|
||||
append(": ")
|
||||
}
|
||||
|
||||
append(name)
|
||||
append(screenState.userName)
|
||||
}
|
||||
)
|
||||
Text(
|
||||
@@ -89,7 +107,7 @@ fun UserBannedScreen(
|
||||
append(stringResource(id = UiR.string.blocking_reason_title))
|
||||
append(": ")
|
||||
}
|
||||
append(message)
|
||||
append(screenState.message)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user