diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 8f2af51f2d..9d98629279 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -5,6 +5,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/tangem/tap/features/home/DefaultHomeComponent.kt b/app/src/main/java/com/tangem/tap/features/home/DefaultHomeComponent.kt index 9f0bff8ab1..85e57a4ae2 100644 --- a/app/src/main/java/com/tangem/tap/features/home/DefaultHomeComponent.kt +++ b/app/src/main/java/com/tangem/tap/features/home/DefaultHomeComponent.kt @@ -2,10 +2,8 @@ package com.tangem.tap.features.home import androidx.activity.compose.BackHandler import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext @@ -13,7 +11,7 @@ import com.arkivanov.essenty.lifecycle.subscribe import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel import com.tangem.core.ui.components.SystemBarsIconsDisposable -import com.tangem.core.ui.res.LocalRootBackgroundColor +import com.tangem.core.ui.utils.ChangeRootBackgroundColorEffect import com.tangem.core.ui.utils.findActivity import com.tangem.tap.common.redux.AppState import com.tangem.tap.features.home.api.HomeComponent @@ -65,17 +63,7 @@ internal class DefaultHomeComponent @AssistedInject constructor( onShopButtonClick = model::onShopClick, onSearchTokensClick = model::onSearchClick, ) - - val rootBackgroundColor = LocalRootBackgroundColor.current - val previousColor = remember { rootBackgroundColor.value } - val storiesBackgroundColor = Color(color = 0xFF010101) - - DisposableEffect(Unit) { - rootBackgroundColor.value = storiesBackgroundColor - onDispose { - rootBackgroundColor.value = previousColor - } - } + ChangeRootBackgroundColorEffect(Color(color = 0xFF010101)) } override fun newState(state: HomeState) { diff --git a/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt index c1df30c687..b6410efd58 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/res/TangemTheme.kt @@ -107,7 +107,7 @@ fun TangemTheme( CompositionLocalProvider( LocalTangemShimmer provides TangemShimmer, LocalMainBottomSheetColor provides remember { mutableStateOf(Color.Unspecified) }, - LocalRootBackgroundColor provides remember { mutableStateOf(rootBackgroundColor) }, + LocalRootBackgroundColor provides remember(rootBackgroundColor) { mutableStateOf(rootBackgroundColor) }, LocalTextSelectionColors provides TangemTextSelectionColors, ) { ProvideTextStyle( diff --git a/core/ui/src/main/java/com/tangem/core/ui/utils/TangemThemeUtils.kt b/core/ui/src/main/java/com/tangem/core/ui/utils/TangemThemeUtils.kt new file mode 100644 index 0000000000..560034ee3b --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/utils/TangemThemeUtils.kt @@ -0,0 +1,31 @@ +package com.tangem.core.ui.utils + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.graphics.Color +import com.tangem.core.ui.res.LocalRootBackgroundColor + +@Composable +fun ChangeRootBackgroundColorEffect(color: Color) { + var rootBackgroundColor by LocalRootBackgroundColor.current + var previousColor by remember { mutableStateOf(rootBackgroundColor) } + + DisposableEffect(color) { + rootBackgroundColor = color + onDispose { + rootBackgroundColor = previousColor + } + } + + LaunchedEffect(rootBackgroundColor) { + if (rootBackgroundColor != color) { + previousColor = rootBackgroundColor + rootBackgroundColor = color + } + } +} \ No newline at end of file diff --git a/domain/wallets/models/src/main/java/com/tangem/domain/wallets/models/Test.kt b/domain/wallets/models/src/main/java/com/tangem/domain/wallets/models/Test.kt new file mode 100644 index 0000000000..1a984b127a --- /dev/null +++ b/domain/wallets/models/src/main/java/com/tangem/domain/wallets/models/Test.kt @@ -0,0 +1,66 @@ +package com.tangem.domain.wallets.models + +import com.squareup.moshi.Json +import com.squareup.moshi.JsonClass +import com.tangem.crypto.hdWallet.DerivationPath +import com.tangem.domain.models.scan.ScanResponse +import kotlinx.serialization.Serializable + +sealed interface NewUserWallet { + + val name: String + val walletId: UserWalletId + + @JsonClass(generateAdapter = true) + data class Cold( + @Json(name = "name") + override val name: String, + @Json(name = "walletId") + override val walletId: UserWalletId, + @Json(name = "cardsInWallet") + val cardsInWallet: Set, + @Json(name = "isMultiCurrency") + val isMultiCurrency: Boolean, + @Json(name = "hasBackupError") + val hasBackupError: Boolean, + @Json(name = "scanResponse") + val scanResponse: ScanResponse, + ) : NewUserWallet + + @JsonClass(generateAdapter = true) + data class Hot( + @Json(name = "name") + override val name: String, + @Json(name = "walletId") + override val walletId: UserWalletId, + ) : NewUserWallet + + @JsonClass(generateAdapter = true) + data class Pay( + @Json(name = "name") + override val name: String, + @Json(name = "walletId") + override val walletId: UserWalletId, + @Json(name = "cardsInWallet") + val cardsInWallet: Set, + @Json(name = "scanResponse") + val scanResponse: ScanResponse, + ) : NewUserWallet +} + +@JsonClass(generateAdapter = true) +data class UserWalletAccount( + val accountId: AccountId, + val userWalletId: UserWalletId, + val name: String, + val derivationPath: DerivationPath, + val otherInfo: String, +) + +@Serializable +@JvmInline +@JsonClass(generateAdapter = true) +value class AccountId( + @Json(name = "stringValue") + val stringValue: String, +) \ No newline at end of file diff --git a/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/DefaultStoriesComponent.kt b/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/DefaultStoriesComponent.kt index 06f7b4b69f..5bc136d305 100644 --- a/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/DefaultStoriesComponent.kt +++ b/features/stories/impl/src/main/java/com/tangem/feature/stories/impl/DefaultStoriesComponent.kt @@ -1,16 +1,14 @@ package com.tangem.feature.stories.impl import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.Stable -import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.tangem.common.ui.swapStoriesScreen.SwapStoriesScreen import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.decompose.model.getOrCreateModel -import com.tangem.core.ui.res.LocalRootBackgroundColor import com.tangem.core.ui.res.TangemColorPalette +import com.tangem.core.ui.utils.ChangeRootBackgroundColorEffect import com.tangem.feature.stories.api.StoriesComponent import com.tangem.feature.stories.impl.model.StoriesModel import dagger.assisted.Assisted @@ -29,16 +27,7 @@ internal class DefaultStoriesComponent @AssistedInject constructor( override fun Content(modifier: Modifier) { val state = model.state.collectAsStateWithLifecycle() SwapStoriesScreen(state.value) - - val rootBackgroundColor = LocalRootBackgroundColor.current - val previousColor = remember { rootBackgroundColor.value } - - DisposableEffect(Unit) { - rootBackgroundColor.value = TangemColorPalette.Black - onDispose { - rootBackgroundColor.value = previousColor - } - } + ChangeRootBackgroundColorEffect(TangemColorPalette.Black) } @AssistedFactory