Updated on 2026-08-14

This commit is contained in:
Tangem 2024-04-02 11:37:11 +08:00
parent 128f3b8d43
commit 328c38c86b
17 changed files with 66 additions and 72 deletions

View file

@ -37,6 +37,7 @@ import com.tangem.domain.common.LogConfig
import com.tangem.domain.feedback.FeedbackManagerFeatureToggles import com.tangem.domain.feedback.FeedbackManagerFeatureToggles
import com.tangem.domain.onboarding.SaveTwinsOnboardingShownUseCase import com.tangem.domain.onboarding.SaveTwinsOnboardingShownUseCase
import com.tangem.domain.onboarding.WasTwinsOnboardingShownUseCase import com.tangem.domain.onboarding.WasTwinsOnboardingShownUseCase
import com.tangem.domain.settings.repositories.SettingsRepository
import com.tangem.domain.tokens.repository.CurrenciesRepository import com.tangem.domain.tokens.repository.CurrenciesRepository
import com.tangem.domain.tokens.repository.NetworksRepository import com.tangem.domain.tokens.repository.NetworksRepository
import com.tangem.domain.walletmanager.WalletManagersFacade import com.tangem.domain.walletmanager.WalletManagersFacade
@ -184,6 +185,9 @@ internal class TapApplication : Application(), ImageLoaderFactory {
@Inject @Inject
lateinit var tangemSdkLogger: TangemSdkLogger lateinit var tangemSdkLogger: TangemSdkLogger
@Inject
lateinit var settingsRepository: SettingsRepository
// endregion Injected // endregion Injected
override fun onCreate() { override fun onCreate() {
@ -274,6 +278,7 @@ internal class TapApplication : Application(), ImageLoaderFactory {
feedbackManagerFeatureToggles = feedbackManagerFeatureToggles, feedbackManagerFeatureToggles = feedbackManagerFeatureToggles,
tangemSdkLogger = tangemSdkLogger, tangemSdkLogger = tangemSdkLogger,
blockchainSDKLogger = blockchainSDKLogger, blockchainSDKLogger = blockchainSDKLogger,
settingsRepository = settingsRepository,
), ),
), ),
) )

View file

@ -3,9 +3,10 @@ package com.tangem.tap.common.redux
import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.models.scan.ScanResponse
import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.extensions.inject
import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.common.redux.global.GlobalAction
import com.tangem.tap.preferencesStorage import com.tangem.tap.mainScope
import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.proxy.redux.DaggerGraphState
import com.tangem.tap.store import com.tangem.tap.store
import kotlinx.coroutines.launch
import org.rekotlin.Middleware import org.rekotlin.Middleware
class AccessCodeRequestPolicyMiddleware { class AccessCodeRequestPolicyMiddleware {
@ -21,8 +22,12 @@ class AccessCodeRequestPolicyMiddleware {
} }
private fun updateAccessCodeRequestPolicy(scanResponse: ScanResponse) { private fun updateAccessCodeRequestPolicy(scanResponse: ScanResponse) {
store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( mainScope.launch {
isBiometricsRequestPolicy = preferencesStorage.shouldSaveAccessCodes && scanResponse.card.isAccessCodeSet, val shouldSaveAccessCodes = store.inject(DaggerGraphState::settingsRepository).shouldSaveAccessCodes()
)
store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy(
isBiometricsRequestPolicy = shouldSaveAccessCodes && scanResponse.card.isAccessCodeSet,
)
}
} }
} }

View file

@ -34,14 +34,6 @@ internal object CardDomainModule {
return SetAccessCodeRequestPolicyUseCase(cardSdkConfigRepository = cardSdkConfigRepository) return SetAccessCodeRequestPolicyUseCase(cardSdkConfigRepository = cardSdkConfigRepository)
} }
@Provides
@ViewModelScoped
fun provideGetAccessCodeSavingStatusUseCase(
cardSdkConfigRepository: CardSdkConfigRepository,
): GetAccessCodeSavingStatusUseCase {
return GetAccessCodeSavingStatusUseCase(cardSdkConfigRepository = cardSdkConfigRepository)
}
@Provides @Provides
@ViewModelScoped @ViewModelScoped
fun provideWasWalletAlreadySignedHashesConfirmedUseCase(cardRepository: CardRepository): WasCardScannedUseCase { fun provideWasWalletAlreadySignedHashesConfirmedUseCase(cardRepository: CardRepository): WasCardScannedUseCase {

View file

@ -330,8 +330,10 @@ class DetailsMiddleware {
} }
private fun toggleSaveAccessCodes(state: DetailsState, enable: Boolean) = scope.launch { private fun toggleSaveAccessCodes(state: DetailsState, enable: Boolean) = scope.launch {
val shouldSaveAccessCodes = store.inject(DaggerGraphState::settingsRepository).shouldSaveAccessCodes()
// Nothing to change // Nothing to change
if (preferencesStorage.shouldSaveAccessCodes == enable) { if (shouldSaveAccessCodes == enable) {
store.dispatchWithMain(DetailsAction.AppSettings.SwitchPrivacySetting.Success) store.dispatchWithMain(DetailsAction.AppSettings.SwitchPrivacySetting.Success)
return@launch return@launch
} }
@ -465,12 +467,14 @@ class DetailsMiddleware {
return CompletionResult.Success(Unit) return CompletionResult.Success(Unit)
} }
private fun saveAccessCodes(scanResponse: ScanResponse?): CompletionResult<Unit> { private suspend fun saveAccessCodes(scanResponse: ScanResponse?): CompletionResult<Unit> {
Analytics.send(Settings.AppSettings.SaveAccessCodeSwitcherChanged(AnalyticsParam.OnOffState.On)) Analytics.send(Settings.AppSettings.SaveAccessCodeSwitcherChanged(AnalyticsParam.OnOffState.On))
preferencesStorage.shouldSaveAccessCodes = true store.inject(DaggerGraphState::settingsRepository).setShouldSaveAccessCodes(value = true)
store.inject(DaggerGraphState::cardSdkConfigRepository)
.setAccessCodeRequestPolicy(isBiometricsRequestPolicy = scanResponse?.card?.isAccessCodeSet == true) store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy(
isBiometricsRequestPolicy = scanResponse?.card?.isAccessCodeSet == true,
)
return CompletionResult.Success(Unit) return CompletionResult.Success(Unit)
} }
@ -480,9 +484,11 @@ class DetailsMiddleware {
.doOnSuccess { .doOnSuccess {
Analytics.send(Settings.AppSettings.SaveAccessCodeSwitcherChanged(AnalyticsParam.OnOffState.Off)) Analytics.send(Settings.AppSettings.SaveAccessCodeSwitcherChanged(AnalyticsParam.OnOffState.Off))
preferencesStorage.shouldSaveAccessCodes = false store.inject(DaggerGraphState::settingsRepository).setShouldSaveAccessCodes(value = false)
store.inject(DaggerGraphState::cardSdkConfigRepository)
.setAccessCodeRequestPolicy(isBiometricsRequestPolicy = false) store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy(
isBiometricsRequestPolicy = false,
)
} }
.doOnFailure { error -> .doOnFailure { error ->
Timber.e(error, "Unable to delete saved access codes") Timber.e(error, "Unable to delete saved access codes")
@ -575,9 +581,8 @@ class DetailsMiddleware {
val prevUseBiometricsForAccessCode = cardSdkConfigRepository.isBiometricsRequestPolicy() val prevUseBiometricsForAccessCode = cardSdkConfigRepository.isBiometricsRequestPolicy()
// Update access code policy for access code saving when a card was scanned // Update access code policy for access code saving when a card was scanned
cardSdkConfigRepository.setAccessCodeRequestPolicy( val shouldSaveAccessCodes = store.inject(DaggerGraphState::settingsRepository).shouldSaveAccessCodes()
isBiometricsRequestPolicy = preferencesStorage.shouldSaveAccessCodes, cardSdkConfigRepository.setAccessCodeRequestPolicy(isBiometricsRequestPolicy = shouldSaveAccessCodes)
)
store.inject(DaggerGraphState::scanCardProcessor).scan( store.inject(DaggerGraphState::scanCardProcessor).scan(
analyticsEvent = Basic.CardWasScanned(CoreAnalyticsParam.ScannedFrom.MyWallets), analyticsEvent = Basic.CardWasScanned(CoreAnalyticsParam.ScannedFrom.MyWallets),

View file

@ -7,7 +7,6 @@ import com.tangem.domain.models.scan.CardDTO
import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.extensions.inject
import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.AppState
import com.tangem.tap.domain.extensions.signedHashesCount import com.tangem.tap.domain.extensions.signedHashesCount
import com.tangem.tap.preferencesStorage
import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.proxy.redux.DaggerGraphState
import com.tangem.tap.store import com.tangem.tap.store
import com.tangem.tap.tangemSdkManager import com.tangem.tap.tangemSdkManager
@ -75,7 +74,9 @@ private fun handlePrepareScreen(action: DetailsAction.PrepareScreen): DetailsSta
appSettingsState = AppSettingsState( appSettingsState = AppSettingsState(
isBiometricsAvailable = tangemSdkManager.canUseBiometry, isBiometricsAvailable = tangemSdkManager.canUseBiometry,
saveWallets = action.shouldSaveUserWallets, saveWallets = action.shouldSaveUserWallets,
saveAccessCodes = preferencesStorage.shouldSaveAccessCodes, saveAccessCodes = runBlocking {
store.inject(DaggerGraphState::settingsRepository).shouldSaveAccessCodes()
},
selectedAppCurrency = store.state.globalState.appCurrency, selectedAppCurrency = store.state.globalState.appCurrency,
selectedThemeMode = runBlocking { selectedThemeMode = runBlocking {
store.inject(DaggerGraphState::appThemeModeRepository).getAppThemeMode().firstOrNull() store.inject(DaggerGraphState::appThemeModeRepository).getAppThemeMode().firstOrNull()

View file

@ -19,7 +19,6 @@ import com.tangem.tap.common.extensions.*
import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.AppState
import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.common.redux.global.GlobalAction
import com.tangem.tap.features.home.redux.HomeMiddleware.NEW_BUY_WALLET_URL import com.tangem.tap.features.home.redux.HomeMiddleware.NEW_BUY_WALLET_URL
import com.tangem.tap.preferencesStorage
import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.proxy.redux.DaggerGraphState
import com.tangem.tap.scope import com.tangem.tap.scope
import com.tangem.tap.store import com.tangem.tap.store
@ -77,8 +76,10 @@ private fun handleHomeAction(action: Action) {
} }
private suspend fun readCard(analyticsEvent: AnalyticsEvent?) { private suspend fun readCard(analyticsEvent: AnalyticsEvent?) {
val shouldSaveAccessCodes = store.inject(DaggerGraphState::settingsRepository).shouldSaveAccessCodes()
store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy(
isBiometricsRequestPolicy = preferencesStorage.shouldSaveAccessCodes, isBiometricsRequestPolicy = shouldSaveAccessCodes,
) )
store.inject(DaggerGraphState::scanCardProcessor).scan( store.inject(DaggerGraphState::scanCardProcessor).scan(

View file

@ -156,7 +156,8 @@ internal class SaveWalletMiddleware {
// Enable saving access codes only if this is the first time user save the wallet // Enable saving access codes only if this is the first time user save the wallet
if (isFirstSavedWallet) { if (isFirstSavedWallet) {
preferencesStorage.shouldSaveAccessCodes = true store.inject(DaggerGraphState::settingsRepository).setShouldSaveAccessCodes(value = true)
store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy(
isBiometricsRequestPolicy = userWallet.hasAccessCode, isBiometricsRequestPolicy = userWallet.hasAccessCode,
) )
@ -199,7 +200,9 @@ internal class SaveWalletMiddleware {
private suspend fun handleSuccessAllowing(userWallet: UserWallet) { private suspend fun handleSuccessAllowing(userWallet: UserWallet) {
store.inject(DaggerGraphState::walletsRepository).saveShouldSaveUserWallets(item = true) store.inject(DaggerGraphState::walletsRepository).saveShouldSaveUserWallets(item = true)
preferencesStorage.shouldSaveAccessCodes = true
store.inject(DaggerGraphState::settingsRepository).setShouldSaveAccessCodes(value = true)
store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy(
isBiometricsRequestPolicy = userWallet.hasAccessCode, isBiometricsRequestPolicy = userWallet.hasAccessCode,
) )

View file

@ -168,9 +168,12 @@ internal class WelcomeMiddleware {
} }
private suspend inline fun scanCardInternal(crossinline onCardScanned: suspend (ScanResponse) -> Unit) { private suspend inline fun scanCardInternal(crossinline onCardScanned: suspend (ScanResponse) -> Unit) {
val shouldSaveAccessCodes = store.inject(DaggerGraphState::settingsRepository).shouldSaveAccessCodes()
store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy(
isBiometricsRequestPolicy = preferencesStorage.shouldSaveAccessCodes, isBiometricsRequestPolicy = shouldSaveAccessCodes,
) )
store.inject(DaggerGraphState::scanCardProcessor).scan( store.inject(DaggerGraphState::scanCardProcessor).scan(
analyticsEvent = Basic.CardWasScanned(AnalyticsParam.ScannedFrom.SignIn), analyticsEvent = Basic.CardWasScanned(AnalyticsParam.ScannedFrom.SignIn),
onSuccess = { scanResponse -> onSuccess = { scanResponse ->

View file

@ -15,6 +15,7 @@ import com.tangem.domain.card.repository.CardSdkConfigRepository
import com.tangem.domain.feedback.FeedbackManagerFeatureToggles import com.tangem.domain.feedback.FeedbackManagerFeatureToggles
import com.tangem.domain.onboarding.SaveTwinsOnboardingShownUseCase import com.tangem.domain.onboarding.SaveTwinsOnboardingShownUseCase
import com.tangem.domain.onboarding.WasTwinsOnboardingShownUseCase import com.tangem.domain.onboarding.WasTwinsOnboardingShownUseCase
import com.tangem.domain.settings.repositories.SettingsRepository
import com.tangem.domain.tokens.repository.CurrenciesRepository import com.tangem.domain.tokens.repository.CurrenciesRepository
import com.tangem.domain.tokens.repository.NetworksRepository import com.tangem.domain.tokens.repository.NetworksRepository
import com.tangem.domain.walletmanager.WalletManagersFacade import com.tangem.domain.walletmanager.WalletManagersFacade
@ -71,4 +72,5 @@ data class DaggerGraphState(
val feedbackManagerFeatureToggles: FeedbackManagerFeatureToggles? = null, val feedbackManagerFeatureToggles: FeedbackManagerFeatureToggles? = null,
val tangemSdkLogger: TangemSdkLogger? = null, val tangemSdkLogger: TangemSdkLogger? = null,
val blockchainSDKLogger: BlockchainSDKLogger? = null, val blockchainSDKLogger: BlockchainSDKLogger? = null,
val settingsRepository: SettingsRepository? = null,
) : StateType ) : StateType

View file

@ -6,6 +6,7 @@ import com.tangem.datasource.local.preferences.PreferencesKeys.FUNDS_FOUND_DATE_
import com.tangem.datasource.local.preferences.PreferencesKeys.IS_TANGEM_TOS_ACCEPTED_KEY import com.tangem.datasource.local.preferences.PreferencesKeys.IS_TANGEM_TOS_ACCEPTED_KEY
import com.tangem.datasource.local.preferences.PreferencesKeys.SAVE_USER_WALLETS_KEY import com.tangem.datasource.local.preferences.PreferencesKeys.SAVE_USER_WALLETS_KEY
import com.tangem.datasource.local.preferences.PreferencesKeys.SHOULD_OPEN_WELCOME_ON_RESUME_KEY import com.tangem.datasource.local.preferences.PreferencesKeys.SHOULD_OPEN_WELCOME_ON_RESUME_KEY
import com.tangem.datasource.local.preferences.PreferencesKeys.SHOULD_SAVE_ACCESS_CODES_KEY
import com.tangem.datasource.local.preferences.PreferencesKeys.SHOW_RATING_DIALOG_AT_LAUNCH_COUNT_KEY import com.tangem.datasource.local.preferences.PreferencesKeys.SHOW_RATING_DIALOG_AT_LAUNCH_COUNT_KEY
import com.tangem.datasource.local.preferences.PreferencesKeys.USED_CARDS_INFO_KEY import com.tangem.datasource.local.preferences.PreferencesKeys.USED_CARDS_INFO_KEY
import com.tangem.datasource.local.preferences.PreferencesKeys.USER_WAS_INTERACT_WITH_RATING_KEY import com.tangem.datasource.local.preferences.PreferencesKeys.USER_WAS_INTERACT_WITH_RATING_KEY
@ -71,6 +72,8 @@ object PreferencesKeys {
val SHOULD_OPEN_WELCOME_ON_RESUME_KEY by lazy { booleanPreferencesKey(name = "openWelcomeOnResume") } val SHOULD_OPEN_WELCOME_ON_RESUME_KEY by lazy { booleanPreferencesKey(name = "openWelcomeOnResume") }
val SHOULD_SAVE_ACCESS_CODES_KEY by lazy { booleanPreferencesKey(name = "saveAccessCodes") }
fun getStart2CoinTOSAcceptedKey(region: String?) = booleanPreferencesKey(name = "start2Coin_tos_accepted_$region") fun getStart2CoinTOSAcceptedKey(region: String?) = booleanPreferencesKey(name = "start2Coin_tos_accepted_$region")
} }
@ -87,6 +90,7 @@ internal fun getTapPrefKeysToMigrate(): Set<String> {
IS_TANGEM_TOS_ACCEPTED_KEY, IS_TANGEM_TOS_ACCEPTED_KEY,
WAS_APPLICATION_STOPPED_KEY, WAS_APPLICATION_STOPPED_KEY,
SHOULD_OPEN_WELCOME_ON_RESUME_KEY, SHOULD_OPEN_WELCOME_ON_RESUME_KEY,
SHOULD_SAVE_ACCESS_CODES_KEY,
) )
.map(Preferences.Key<*>::name) .map(Preferences.Key<*>::name)
.toSet() .toSet()

View file

@ -6,7 +6,6 @@ import com.tangem.common.UserCodeType
import com.tangem.common.core.CardIdDisplayFormat import com.tangem.common.core.CardIdDisplayFormat
import com.tangem.common.core.UserCodeRequestPolicy import com.tangem.common.core.UserCodeRequestPolicy
import com.tangem.data.card.sdk.CardSdkProvider import com.tangem.data.card.sdk.CardSdkProvider
import com.tangem.data.source.preferences.PreferencesDataSource
import com.tangem.domain.card.repository.CardSdkConfigRepository import com.tangem.domain.card.repository.CardSdkConfigRepository
import com.tangem.domain.models.scan.ProductType import com.tangem.domain.models.scan.ProductType
@ -14,14 +13,10 @@ import com.tangem.domain.models.scan.ProductType
* Implementation of repository for managing of CardSDK config * Implementation of repository for managing of CardSDK config
* *
* @property cardSdkProvider CardSDK instance provider * @property cardSdkProvider CardSDK instance provider
* @property preferencesDataSource application shared preferences
* *
[REDACTED_AUTHOR] [REDACTED_AUTHOR]
*/ */
internal class DefaultCardSdkConfigRepository( internal class DefaultCardSdkConfigRepository(private val cardSdkProvider: CardSdkProvider) : CardSdkConfigRepository {
private val cardSdkProvider: CardSdkProvider,
private val preferencesDataSource: PreferencesDataSource,
) : CardSdkConfigRepository {
@Deprecated("Use CardSdkConfigRepository's methods instead of this property") @Deprecated("Use CardSdkConfigRepository's methods instead of this property")
override val sdk: TangemSdk override val sdk: TangemSdk
@ -58,8 +53,6 @@ internal class DefaultCardSdkConfigRepository(
} }
} }
override fun isAccessCodeSavingEnabled(): Boolean = preferencesDataSource.shouldSaveAccessCodes
override fun getCommonSigner(cardId: String?) = CommonSigner( override fun getCommonSigner(cardId: String?) = CommonSigner(
tangemSdk = sdk, tangemSdk = sdk,
cardId = cardId, cardId = cardId,

View file

@ -3,7 +3,6 @@ package com.tangem.data.card.di
import com.tangem.data.card.DefaultCardRepository import com.tangem.data.card.DefaultCardRepository
import com.tangem.data.card.DefaultCardSdkConfigRepository import com.tangem.data.card.DefaultCardSdkConfigRepository
import com.tangem.data.card.sdk.CardSdkProvider import com.tangem.data.card.sdk.CardSdkProvider
import com.tangem.data.source.preferences.PreferencesDataSource
import com.tangem.datasource.local.preferences.AppPreferencesStore import com.tangem.datasource.local.preferences.AppPreferencesStore
import com.tangem.domain.card.repository.CardRepository import com.tangem.domain.card.repository.CardRepository
import com.tangem.domain.card.repository.CardSdkConfigRepository import com.tangem.domain.card.repository.CardSdkConfigRepository
@ -19,14 +18,8 @@ internal object CardDataModule {
@Provides @Provides
@Singleton @Singleton
fun provideCardSdkConfigRepository( fun provideCardSdkConfigRepository(cardSdkProvider: CardSdkProvider): CardSdkConfigRepository {
cardSdkProvider: CardSdkProvider, return DefaultCardSdkConfigRepository(cardSdkProvider = cardSdkProvider)
preferencesDataSource: PreferencesDataSource,
): CardSdkConfigRepository {
return DefaultCardSdkConfigRepository(
cardSdkProvider = cardSdkProvider,
preferencesDataSource = preferencesDataSource,
)
} }
@Provides @Provides

View file

@ -94,4 +94,12 @@ internal class DefaultSettingsRepository(
override suspend fun setShouldOpenWelcomeScreenOnResume(value: Boolean) { override suspend fun setShouldOpenWelcomeScreenOnResume(value: Boolean) {
appPreferencesStore.store(key = PreferencesKeys.SHOULD_OPEN_WELCOME_ON_RESUME_KEY, value = value) appPreferencesStore.store(key = PreferencesKeys.SHOULD_OPEN_WELCOME_ON_RESUME_KEY, value = value)
} }
override suspend fun shouldSaveAccessCodes(): Boolean {
return appPreferencesStore.getSyncOrDefault(key = PreferencesKeys.SHOULD_SAVE_ACCESS_CODES_KEY, default = false)
}
override suspend fun setShouldSaveAccessCodes(value: Boolean) {
appPreferencesStore.store(key = PreferencesKeys.SHOULD_SAVE_ACCESS_CODES_KEY, value = value)
}
} }

View file

@ -23,12 +23,6 @@ class PreferencesDataSource @Inject internal constructor(applicationContext: Con
putBoolean(SAVE_WALLET_DIALOG_SHOWN_KEY, value) putBoolean(SAVE_WALLET_DIALOG_SHOWN_KEY, value)
} }
var shouldSaveAccessCodes: Boolean
get() = preferences.getBoolean(SAVE_ACCESS_CODES_KEY, false)
set(value) = preferences.edit {
putBoolean(SAVE_ACCESS_CODES_KEY, value)
}
private fun incrementLaunchCounter() { private fun incrementLaunchCounter() {
var count = preferences.getInt(APP_LAUNCH_COUNT_KEY, 0) var count = preferences.getInt(APP_LAUNCH_COUNT_KEY, 0)
preferences.edit { putInt(APP_LAUNCH_COUNT_KEY, ++count) } preferences.edit { putInt(APP_LAUNCH_COUNT_KEY, ++count) }
@ -38,6 +32,5 @@ class PreferencesDataSource @Inject internal constructor(applicationContext: Con
private const val PREFERENCES_NAME = "tapPrefs" private const val PREFERENCES_NAME = "tapPrefs"
private const val APP_LAUNCH_COUNT_KEY = "launchCount" private const val APP_LAUNCH_COUNT_KEY = "launchCount"
private const val SAVE_WALLET_DIALOG_SHOWN_KEY = "saveUserWalletShown" private const val SAVE_WALLET_DIALOG_SHOWN_KEY = "saveUserWalletShown"
private const val SAVE_ACCESS_CODES_KEY = "saveAccessCodes"
} }
} }

View file

@ -1,15 +0,0 @@
package com.tangem.domain.card
import com.tangem.domain.card.repository.CardSdkConfigRepository
/**
* Use case for getting access code saving status
*
* @property cardSdkConfigRepository repository for managing of CardSDK config
*
[REDACTED_AUTHOR]
*/
class GetAccessCodeSavingStatusUseCase(private val cardSdkConfigRepository: CardSdkConfigRepository) {
operator fun invoke(): Boolean = cardSdkConfigRepository.isAccessCodeSavingEnabled()
}

View file

@ -27,9 +27,6 @@ interface CardSdkConfigRepository {
/** Update the card ID display format according to the [productType] of the scanned card */ /** Update the card ID display format according to the [productType] of the scanned card */
fun updateCardIdDisplayFormat(productType: ProductType) fun updateCardIdDisplayFormat(productType: ProductType)
/** Check if access code saving is enabled */
fun isAccessCodeSavingEnabled(): Boolean
/** Get common signer by [cardId] */ /** Get common signer by [cardId] */
fun getCommonSigner(cardId: String?): CommonSigner fun getCommonSigner(cardId: String?): CommonSigner

View file

@ -25,4 +25,8 @@ interface SettingsRepository {
suspend fun shouldOpenWelcomeScreenOnResume(): Boolean suspend fun shouldOpenWelcomeScreenOnResume(): Boolean
suspend fun setShouldOpenWelcomeScreenOnResume(value: Boolean) suspend fun setShouldOpenWelcomeScreenOnResume(value: Boolean)
suspend fun shouldSaveAccessCodes(): Boolean
suspend fun setShouldSaveAccessCodes(value: Boolean)
} }