Updated on 2026-08-14

This commit is contained in:
Tangem 2022-07-27 23:06:57 +04:00
commit 23fd02dc06
10 changed files with 58 additions and 34 deletions

View file

@ -86,8 +86,15 @@ class MainActivity : AppCompatActivity(), SnackbarHandler {
private fun systemActions() {
WindowCompat.setDecorFitsSystemWindows(window, false)
WindowInsetsControllerCompat(window, binding.root)
.isAppearanceLightStatusBars = true
val windowInsetsController = WindowInsetsControllerCompat(window, binding.root)
windowInsetsController.isAppearanceLightStatusBars = true
windowInsetsController.isAppearanceLightNavigationBars = true
supportFragmentManager.registerFragmentLifecycleCallbacks(
NavBarInsetsFragmentLifecycleCallback(),
true
)
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}

View file

@ -0,0 +1,29 @@
package com.tangem.tap
import android.os.Bundle
import android.view.View
import androidx.compose.ui.platform.ComposeView
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks
class NavBarInsetsFragmentLifecycleCallback : FragmentLifecycleCallbacks() {
override fun onFragmentViewCreated(
fm: FragmentManager,
f: Fragment,
v: View,
savedInstanceState: Bundle?,
) {
if (v is ComposeView) return
ViewCompat.setOnApplyWindowInsetsListener(v) { view, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars())
view.updatePadding(
bottom = insets.bottom,
)
windowInsets
}
}
}

View file

@ -87,7 +87,7 @@ class TapWalletManager {
updateConfigManager(data)
withMainContext {
store.dispatch(WalletAction.ResetState)
store.dispatch(WalletAction.ResetState(data.card.cardId))
store.dispatch(GlobalAction.SaveScanNoteResponse(data))
store.dispatch(WalletAction.SetIfTestnetCard(data.card.isTestCard))
store.dispatch(WalletAction.MultiWallet.SetIsMultiwalletAllowed(data.card.isMultiwalletAllowed))

View file

@ -45,7 +45,6 @@ class WcWalletManagerFactory(
if (blockchainNetworkWithTokens != null) {
factory.makeWalletManager(
cardId = wallet.cardId,
blockchain = blockchainToMake,
publicKey = Wallet.PublicKey(
wallet.walletPublicKey!!,

View file

@ -96,12 +96,14 @@ class HomeFragment : Fragment(), StoreSubscriber<HomeState> {
/*
* !!! Workaround !!!
* Used to roll back the color of icons in the status bar after the stories screen
* Used to roll back the color of icons in the system bars after the stories screen
* */
private fun rollbackStatusBarIconsColor() {
WindowInsetsControllerCompat(
val windowInsetsController = WindowInsetsControllerCompat(
activity?.window ?: return,
view ?: return,
).isAppearanceLightStatusBars = true
)
windowInsetsController.isAppearanceLightStatusBars = true
windowInsetsController.isAppearanceLightNavigationBars = true
}
}

View file

@ -12,16 +12,17 @@ import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.statusBars
import androidx.compose.foundation.layout.union
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material.Button
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
@ -79,10 +80,10 @@ fun StoriesScreen(
val hideContent = remember { mutableStateOf(true) }
SideEffect {
LaunchedEffect(key1 = isDarkBackground) {
systemUiController.setSystemBarsColor(
color = Color.Transparent,
darkIcons = false,
darkIcons = !isDarkBackground,
)
}
@ -140,12 +141,12 @@ fun StoriesScreen(
)
}
val insets = WindowInsets.systemBars
val statusBarInsets = WindowInsets.statusBars
.union(WindowInsets(top = 32.dp))
Column(
modifier = Modifier
.windowInsetsPadding(insets)
.windowInsetsPadding(statusBarInsets)
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
@ -179,8 +180,9 @@ fun StoriesScreen(
}
Column(
modifier = Modifier
.navigationBarsPadding()
.align(Alignment.BottomCenter)
.fillMaxWidth()
.fillMaxWidth(),
) {
if (currentStep.value == 4) Button(
onClick = onSearchTokensClick,
@ -213,7 +215,6 @@ fun StoriesScreen(
onShopButtonClick = onShopButtonClick
)
}
}
}

View file

@ -17,12 +17,12 @@ import com.tangem.tap.domain.configurable.warningMessage.WarningMessage
import com.tangem.tap.domain.tokens.models.BlockchainNetwork
import com.tangem.tap.features.wallet.models.Currency
import com.tangem.wallet.R
import java.math.BigDecimal
import org.rekotlin.Action
import java.math.BigDecimal
sealed class WalletAction : Action {
object ResetState : WalletAction()
data class ResetState(val newCardId: String) : WalletAction()
data class SetIfTestnetCard(val isTestnet: Boolean) : WalletAction()

View file

@ -27,6 +27,7 @@ import java.math.BigDecimal
import kotlin.properties.ReadOnlyProperty
data class WalletState(
val cardId: String = "",
val state: ProgressState = ProgressState.Done,
val error: ErrorType? = null,
val cardImage: Artwork? = null,
@ -73,9 +74,6 @@ data class WalletState(
val walletManagers: List<WalletManager>
get() = wallets.mapNotNull { it.walletManager }
val cardId: String?
get() = wallets.firstOrNull()?.walletManager?.wallet?.cardId
fun getWalletManager(currency: Currency?): WalletManager? {
if (currency?.blockchain == null) return null
return getWalletStore(currency)?.walletManager

View file

@ -12,20 +12,9 @@ import com.tangem.tap.domain.TapError
import com.tangem.tap.domain.extensions.getArtworkUrl
import com.tangem.tap.domain.getFirstToken
import com.tangem.tap.domain.tokens.models.BlockchainNetwork
import com.tangem.tap.features.wallet.models.Currency
import com.tangem.tap.features.wallet.models.WalletRent
import com.tangem.tap.features.wallet.redux.*
import com.tangem.tap.features.wallet.redux.AddressData
import com.tangem.tap.features.wallet.redux.Artwork
import com.tangem.tap.features.wallet.models.Currency
import com.tangem.tap.features.wallet.redux.ErrorType
import com.tangem.tap.features.wallet.redux.ProgressState
import com.tangem.tap.features.wallet.redux.TradeCryptoState
import com.tangem.tap.features.wallet.redux.WalletAction
import com.tangem.tap.features.wallet.redux.WalletAddresses
import com.tangem.tap.features.wallet.redux.WalletData
import com.tangem.tap.features.wallet.redux.WalletMainButton
import com.tangem.tap.features.wallet.redux.WalletState
import com.tangem.tap.features.wallet.redux.WalletStore
import com.tangem.tap.features.wallet.ui.BalanceStatus
import com.tangem.tap.features.wallet.ui.BalanceWidgetData
import com.tangem.tap.store
@ -53,7 +42,7 @@ private fun internalReduce(action: Action, state: AppState): WalletState {
is WalletAction.Warnings -> newState = handleCheckSignedHashesActions(action, newState)
is WalletAction.MultiWallet -> newState = multiWalletReducer.reduce(action, newState)
is WalletAction.ResetState -> newState = WalletState()
is WalletAction.ResetState -> newState = WalletState(cardId = action.newCardId)
is WalletAction.SetIfTestnetCard -> newState = newState.copy(isTestnet = action.isTestnet)
is WalletAction.EmptyWallet -> {
newState = newState.copy(