Updated on 2026-08-14

This commit is contained in:
Tangem 2024-02-13 09:56:02 +03:00
parent b97ddcb3f2
commit c6ddab601b
20 changed files with 370 additions and 160 deletions

View file

@ -30,6 +30,8 @@ dependencies {
implementation(deps.compose.ui.tooling)
implementation(deps.compose.ui.utils)
implementation(deps.compose.coil)
implementation(deps.compose.navigation)
implementation(deps.compose.navigation.hilt)
/** Other libraries */
implementation(deps.compose.accompanist.systemUiController)
@ -38,4 +40,5 @@ dependencies {
implementation(deps.kotlin.immutable.collections)
implementation(deps.zxing.qrCore)
implementation(deps.jodatime)
implementation(deps.timber)
}

View file

@ -39,6 +39,11 @@ fun SpacerH16(modifier: Modifier = Modifier) {
SpacerH(16.dp, modifier)
}
@Composable
fun SpacerH18(modifier: Modifier = Modifier) {
SpacerH(18.dp, modifier)
}
@Composable
fun SpacerH24(modifier: Modifier = Modifier) {
SpacerH(24.dp, modifier)

View file

@ -1,17 +1,13 @@
package com.tangem.core.ui.components.atoms
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.ReadOnlyComposable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import com.tangem.core.ui.res.TangemTheme
/**
@ -21,7 +17,7 @@ import com.tangem.core.ui.res.TangemTheme
fun Hand(modifier: Modifier = Modifier) {
Box(
modifier = modifier
.padding(vertical = TangemTheme.dimens.spacing8)
.height(handComposableComponentHeight)
.fillMaxWidth(),
contentAlignment = Alignment.Center,
) {
@ -37,6 +33,11 @@ fun Hand(modifier: Modifier = Modifier) {
}
}
val handComposableComponentHeight: Dp
@Composable
@ReadOnlyComposable
get() = TangemTheme.dimens.size4 + TangemTheme.dimens.spacing16
// region Preview
@Composable
private fun HandSample(modifier: Modifier = Modifier) {

View file

@ -0,0 +1,49 @@
package com.tangem.core.ui.extensions
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.ViewModel
import androidx.navigation.NavBackStackEntry
import androidx.navigation.NavController
import timber.log.Timber
/**
* The ViewModel is scoped to the parent route Navigation graph
* and is provided using the Hilt-generated ViewModel factory
*
* ```
* val navController = rememberNavController()
*
* navigation(
* route = "parent",
* startDestination = "parent/1"
* ) {
* composable("route/1") { entry ->
* val viewModel = entry.parentHiltViewModel(navController)
* }
* composable("route/2") { entry ->
* val viewModel = entry.parentHiltViewModel(navController)
* }
* composable("route/3") { entry ->
* val viewModel = entry.parentHiltViewModel(navController)
* }
* }
* ```
*
* @param navController NavController within the common NavGraph
* @throws Exception if there is no parent route
*/
@Composable
inline fun <reified T : ViewModel> NavBackStackEntry.parentHiltViewModel(navController: NavController): T {
val viewModelStoreOwner = remember(this) {
try {
navController.getBackStackEntry(this.destination.parent!!.id)
} catch (e: Exception) {
Timber.tag("scopedViewModel").e(e, "There is no parent route'")
throw e
}
}
return hiltViewModel<T>(viewModelStoreOwner)
}