Updated on 2026-08-14
This commit is contained in:
parent
128f3b8d43
commit
328c38c86b
17 changed files with 66 additions and 72 deletions
|
|
@ -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,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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 ->
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -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()
|
|
||||||
}
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue