From decd081f950091b887fa3a04550c3d1ce2ff152a Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 4 Apr 2024 14:37:10 +0100 Subject: [PATCH] Updated on 2026-08-14 --- .../BiometricUserWalletsListManager.kt | 4 ++++ .../GeneralUserWalletsListManager.kt | 4 ++++ .../RuntimeUserWalletsListManager.kt | 4 ++++ .../saveWallet/redux/SaveWalletMiddleware.kt | 3 +-- .../wallets/legacy/UserWalletsListManager.kt | 5 +++++ .../UserWalletsListManagerExtensions.kt | 21 ++++--------------- 6 files changed, 22 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/BiometricUserWalletsListManager.kt b/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/BiometricUserWalletsListManager.kt index 160d433012..99418a7aa0 100644 --- a/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/BiometricUserWalletsListManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/BiometricUserWalletsListManager.kt @@ -81,6 +81,10 @@ internal class BiometricUserWalletsListManager( state.update { State() } } + override fun isLockable(): Boolean { + return true + } + override suspend fun select(userWalletId: UserWalletId): CompletionResult = catching { if (state.value.selectedUserWalletId == userWalletId) { return@catching findSelectedUserWallet()!! diff --git a/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/GeneralUserWalletsListManager.kt b/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/GeneralUserWalletsListManager.kt index 1e01c26cd2..762ba82f54 100644 --- a/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/GeneralUserWalletsListManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/GeneralUserWalletsListManager.kt @@ -118,6 +118,10 @@ internal class GeneralUserWalletsListManager( } } + override fun isLockable(): Boolean { + return implementation.value.isLockable() + } + private fun subscribeOnCurrentManager() { appPreferencesStore.get(key = PreferencesKeys.SAVE_USER_WALLETS_KEY, default = false) .distinctUntilChanged() diff --git a/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/RuntimeUserWalletsListManager.kt b/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/RuntimeUserWalletsListManager.kt index eedc68771b..31ef3366dd 100644 --- a/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/RuntimeUserWalletsListManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/userWalletList/implementation/RuntimeUserWalletsListManager.kt @@ -85,6 +85,10 @@ internal class RuntimeUserWalletsListManager : UserWalletsListManager { state.value.userWallet ?: walletNotFound() } + override fun isLockable(): Boolean { + return false + } + private fun saveInternal(userWallet: UserWallet): CompletionResult = catching { state.update { prevState -> prevState.copy( diff --git a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt index 62fa03d837..9e327ce3e5 100644 --- a/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/saveWallet/redux/SaveWalletMiddleware.kt @@ -8,7 +8,6 @@ import com.tangem.core.navigation.AppScreen import com.tangem.core.navigation.NavigationAction import com.tangem.domain.userwallets.UserWalletBuilder import com.tangem.domain.wallets.legacy.UserWalletsListManager -import com.tangem.domain.wallets.legacy.isLockable import com.tangem.domain.wallets.models.UserWallet import com.tangem.tap.* import com.tangem.tap.common.analytics.events.AnalyticsParam @@ -208,7 +207,7 @@ internal class SaveWalletMiddleware { } private suspend fun provideLockableUserWalletsListManagerIfNot() { - if (store.state.globalState.userWalletsListManager?.isLockable == true) return + if (store.state.globalState.userWalletsListManager?.isLockable() == true) return val context = foregroundActivityObserver.foregroundActivity?.applicationContext.guard { val error = IllegalStateException("No activities in foreground") diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UserWalletsListManager.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UserWalletsListManager.kt index 8a63233bed..213d780d07 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UserWalletsListManager.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UserWalletsListManager.kt @@ -84,6 +84,11 @@ interface UserWalletsListManager { */ suspend fun get(userWalletId: UserWalletId): CompletionResult + /** + * Indicates that the [UserWalletsListManager] supports [UserWalletsListManager.Lockable] + * */ + fun isLockable(): Boolean + interface Lockable : UserWalletsListManager { /** diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UserWalletsListManagerExtensions.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UserWalletsListManagerExtensions.kt index 0003a1300d..a6bdbde07f 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UserWalletsListManagerExtensions.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/legacy/UserWalletsListManagerExtensions.kt @@ -6,12 +6,6 @@ import com.tangem.domain.wallets.models.UserWallet import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOf -/** - * Indicates that the [UserWalletsListManager] implements [UserWalletsListManager.Lockable] - * */ -val UserWalletsListManager.isLockable: Boolean - get() = this is UserWalletsListManager.Lockable - /** * Indicates that the [UserWalletsListManager] is locked * @@ -48,16 +42,6 @@ suspend fun UserWalletsListManager.unlockIfLockable(type: UnlockType = UnlockTyp return asLockable()?.unlock(type) ?: CompletionResult.Failure(UserWalletsListError.UnableToUnlockUserWallets()) } -/** - * Call [UserWalletsListManager.Lockable.lock] if [UserWalletsListManager] implements [UserWalletsListManager.Lockable] - * or do nothing otherwise - * - * @see UserWalletsListManager.Lockable.lock - * */ -fun UserWalletsListManager.lockIfLockable() { - asLockable()?.lock() -} - /** * Safe cast [UserWalletsListManager] to [UserWalletsListManager.Lockable] * @@ -65,5 +49,8 @@ fun UserWalletsListManager.lockIfLockable() { * [UserWalletsListManager.Lockable] otherwise * */ fun UserWalletsListManager.asLockable(): UserWalletsListManager.Lockable? { - return this as? UserWalletsListManager.Lockable + if (this.isLockable()) { + return this as? UserWalletsListManager.Lockable + } + return null } \ No newline at end of file