diff --git a/app/src/main/java/com/tangem/tap/common/extensions/Navigation.kt b/app/src/main/java/com/tangem/tap/common/extensions/Navigation.kt index fa0d174bf9..019b203988 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/Navigation.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/Navigation.kt @@ -128,18 +128,13 @@ private fun fragmentFactory(screen: AppScreen): Fragment { AppScreen.OnboardingTwins -> OnboardingTwinsFragment() AppScreen.OnboardingOther -> OnboardingOtherCardsFragment() AppScreen.Wallet -> { - store.state.daggerGraphState - .get(getDependency = DaggerGraphState::walletRouter) - .getEntryFragment() + store.inject(getDependency = DaggerGraphState::walletRouter).getEntryFragment() } AppScreen.Send -> { - val featureToggles = store.state.daggerGraphState.get( - getDependency = DaggerGraphState::sendFeatureToggles, - ) + val featureToggles = store.inject(getDependency = DaggerGraphState::sendFeatureToggles) + if (featureToggles.isRedesignedSendEnabled) { - store.state.daggerGraphState - .get(getDependency = DaggerGraphState::sendRouter) - .getEntryFragment() + store.inject(getDependency = DaggerGraphState::sendRouter).getEntryFragment() } else { SendFragment() } @@ -154,15 +149,11 @@ private fun fragmentFactory(screen: AppScreen): Fragment { AppScreen.ManageTokens -> TokensListFragment() AppScreen.AddCustomToken -> AddCustomTokenFragment() AppScreen.WalletDetails -> { - store.state.daggerGraphState - .get(getDependency = DaggerGraphState::tokenDetailsRouter) - .getEntryFragment() + store.inject(getDependency = DaggerGraphState::tokenDetailsRouter).getEntryFragment() } AppScreen.WalletConnectSessions -> WalletConnectFragment() AppScreen.QrScanning -> { - store.state.daggerGraphState - .get(getDependency = DaggerGraphState::qrScanningRouter) - .getEntryFragment() + store.inject(getDependency = DaggerGraphState::qrScanningRouter).getEntryFragment() } AppScreen.ReferralProgram -> ReferralFragment() AppScreen.Swap -> SwapFragment() diff --git a/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt b/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt index 9f6ba786f0..11c26259ee 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt @@ -37,7 +37,7 @@ suspend fun WalletManager.safeUpdate(isDemoCard: Boolean): Result = try } catch (exception: Exception) { Timber.e(exception) - val networkConnectionManager = store.state.daggerGraphState.get(DaggerGraphState::networkConnectionManager) + val networkConnectionManager = store.inject(DaggerGraphState::networkConnectionManager) if (!networkConnectionManager.isOnline) { Result.Failure(TapError.NoInternetConnection) } else { diff --git a/app/src/main/java/com/tangem/tap/common/redux/AccessCodeRequestPolicyMiddleware.kt b/app/src/main/java/com/tangem/tap/common/redux/AccessCodeRequestPolicyMiddleware.kt index c385b121ae..c8fa6db166 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/AccessCodeRequestPolicyMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/AccessCodeRequestPolicyMiddleware.kt @@ -1,6 +1,7 @@ package com.tangem.tap.common.redux import com.tangem.domain.models.scan.ScanResponse +import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.preferencesStorage import com.tangem.tap.proxy.redux.DaggerGraphState @@ -20,7 +21,7 @@ class AccessCodeRequestPolicyMiddleware { } private fun updateAccessCodeRequestPolicy(scanResponse: ScanResponse) { - store.state.daggerGraphState.get(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( + store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( isBiometricsRequestPolicy = preferencesStorage.shouldSaveAccessCodes && scanResponse.card.isAccessCodeSet, ) } diff --git a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMiddleware.kt b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMiddleware.kt index 666a16ab82..79d6ed3a69 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalMiddleware.kt @@ -123,7 +123,7 @@ private fun handleAction(action: Action, appState: () -> AppState?) { primaryRules = CardExchangeRules(cardProvider), ) // TODO: for refactoring (after remove old design refactor CurrencyExchangeManager and use 1 instance) - store.state.daggerGraphState.get(DaggerGraphState::appStateHolder).exchangeService = exchangeManager + store.inject(DaggerGraphState::appStateHolder).exchangeService = exchangeManager store.dispatchOnMain(GlobalAction.ExchangeManager.Init.Success(exchangeManager)) store.dispatchOnMain(GlobalAction.ExchangeManager.Update) } @@ -155,7 +155,7 @@ private fun handleAction(action: Action, appState: () -> AppState?) { } } is GlobalAction.UpdateUserWalletsListManager -> { - val walletManagersFacade = store.state.daggerGraphState.get(DaggerGraphState::walletManagersFacade) + val walletManagersFacade = store.inject(DaggerGraphState::walletManagersFacade) /* * If implementation of the UserWalletsListManager is changed, @@ -186,7 +186,7 @@ private fun handleAction(action: Action, appState: () -> AppState?) { private fun restoreAppCurrency() { scope.launch { - val currency = store.state.daggerGraphState.get(DaggerGraphState::appCurrencyRepository) + val currency = store.inject(DaggerGraphState::appCurrencyRepository) .getSelectedAppCurrency() .firstOrNull() ?: AppCurrency.Default diff --git a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt index 24db8bcbc8..03f3022a51 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -12,6 +12,7 @@ import com.tangem.domain.common.util.cardTypesResolver import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.wallets.models.UserWallet import com.tangem.operations.attestation.Attestation +import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.extensions.setContext import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.features.details.redux.walletconnect.WalletConnectAction @@ -44,8 +45,8 @@ class TapWalletManager( val walletManagerFactory: WalletManagerFactory by lazy { WalletManagerFactory( config = blockchainSdkConfig, - accountCreator = store.state.daggerGraphState.get(DaggerGraphState::accountCreator), - blockchainDataStorage = store.state.daggerGraphState.get(DaggerGraphState::blockchainDataStorage), + accountCreator = store.inject(DaggerGraphState::accountCreator), + blockchainDataStorage = store.inject(DaggerGraphState::blockchainDataStorage), ) } diff --git a/app/src/main/java/com/tangem/tap/domain/scanCard/DefaultScanCardProcessor.kt b/app/src/main/java/com/tangem/tap/domain/scanCard/DefaultScanCardProcessor.kt index 7c21a8a2f2..1bac186d83 100644 --- a/app/src/main/java/com/tangem/tap/domain/scanCard/DefaultScanCardProcessor.kt +++ b/app/src/main/java/com/tangem/tap/domain/scanCard/DefaultScanCardProcessor.kt @@ -5,15 +5,14 @@ import com.tangem.common.core.TangemError import com.tangem.core.analytics.models.AnalyticsEvent import com.tangem.domain.card.ScanCardProcessor import com.tangem.domain.models.scan.ScanResponse +import com.tangem.tap.common.extensions.inject import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.store // TODO: Remove this object after feature toggle was removed and use ScanCardUseCase instead internal class DefaultScanCardProcessor : ScanCardProcessor { private val isNewCardScanningEnabled: Boolean - get() = store.state.daggerGraphState - .get(DaggerGraphState::customTokenFeatureToggles) - .isNewCardScanningEnabled + get() = store.inject(DaggerGraphState::customTokenFeatureToggles).isNewCardScanningEnabled override suspend fun scan( cardId: String?, diff --git a/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt b/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt index b5949c7c5a..02e1701894 100644 --- a/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt +++ b/app/src/main/java/com/tangem/tap/domain/scanCard/UseCaseScanProcessor.kt @@ -9,6 +9,7 @@ import com.tangem.core.navigation.NavigationAction import com.tangem.domain.card.ScanCardException import com.tangem.domain.models.scan.ScanResponse import com.tangem.tap.common.extensions.dispatchOnMain +import com.tangem.tap.common.extensions.inject import com.tangem.tap.domain.scanCard.chains.* import com.tangem.tap.domain.scanCard.utils.ScanCardExceptionConverter import com.tangem.tap.proxy.redux.DaggerGraphState @@ -23,7 +24,7 @@ internal object UseCaseScanProcessor { cardId: String? = null, allowsRequestAccessCodeFromRepository: Boolean = false, ): CompletionResult { - val scanCardUseCase = store.state.daggerGraphState.get(DaggerGraphState::scanCardUseCase) + val scanCardUseCase = store.inject(DaggerGraphState::scanCardUseCase) return scanCardUseCase(cardId, allowsRequestAccessCodeFromRepository) .fold( ifLeft = { CompletionResult.Failure(scanCardExceptionConverter.convertBack(it)) }, @@ -44,7 +45,7 @@ internal object UseCaseScanProcessor { ) = progressScope(onProgressStateChange) { onScanStateChange(true) - val scanCardUseCase = store.state.daggerGraphState.get(DaggerGraphState::scanCardUseCase) + val scanCardUseCase = store.inject(DaggerGraphState::scanCardUseCase) val chains = buildList { add(ScanningFinishedChain { onScanStateChange(false) }) if (analyticsEvent != null) { diff --git a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt index cbc281470e..a1c5cb5c0b 100644 --- a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt +++ b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt @@ -20,6 +20,7 @@ import com.tangem.core.analytics.models.Basic import com.tangem.core.analytics.models.Basic.TransactionSent.MemoType import com.tangem.domain.common.extensions.fromNetworkId import com.tangem.operations.sign.SignHashCommand +import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.extensions.safeUpdate import com.tangem.tap.common.extensions.toFormattedString import com.tangem.tap.domain.walletconnect.BnbHelper.toWCBinanceTradeOrder @@ -59,7 +60,7 @@ class WalletConnectSdkHelper { val decimals = wallet.blockchain.decimals() val value = (transaction.value ?: "0").hexToBigDecimal() - ?.movePointLeft(decimals) ?: return null + .movePointLeft(decimals) ?: return null val gasLimit = getGasLimitFromTx(value, walletManager, transaction) @@ -118,8 +119,7 @@ class WalletConnectSdkHelper { private suspend fun getWalletManager(blockchain: Blockchain, derivationPath: String?): WalletManager? { val userWallet = userWalletsListManager.selectedUserWalletSync ?: return null - val walletManagerFacade = store.state.daggerGraphState - .get(DaggerGraphState::walletManagersFacade) + val walletManagerFacade = store.inject(DaggerGraphState::walletManagersFacade) return walletManagerFacade.getOrCreateWalletManager( userWalletId = userWallet.walletId, blockchain = blockchain, @@ -172,7 +172,7 @@ class WalletConnectSdkHelper { val result = (data.walletManager as TransactionSender).send( transactionData = data.transaction, signer = CommonSigner( - tangemSdk = store.state.daggerGraphState.get(DaggerGraphState::cardSdkConfigRepository).sdk, + tangemSdk = store.inject(DaggerGraphState::cardSdkConfigRepository).sdk, cardId = cardId, ), ) diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt index f3f73a98d3..2de3e037af 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt @@ -10,6 +10,7 @@ import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.AddCryptoCurrenciesUseCase import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase +import com.tangem.tap.common.extensions.inject import com.tangem.tap.domain.model.Currency import com.tangem.tap.features.customtoken.impl.domain.models.FoundToken import com.tangem.tap.proxy.redux.DaggerGraphState @@ -31,8 +32,8 @@ class DefaultCustomTokenInteractor( // TODO: Move to DI private val addCryptoCurrenciesUseCase by lazy(LazyThreadSafetyMode.NONE) { - val currenciesRepository = store.state.daggerGraphState.get(DaggerGraphState::currenciesRepository) - val networksRepository = store.state.daggerGraphState.get(DaggerGraphState::networksRepository) + val currenciesRepository = store.inject(DaggerGraphState::currenciesRepository) + val networksRepository = store.inject(DaggerGraphState::networksRepository) AddCryptoCurrenciesUseCase(currenciesRepository, networksRepository) } diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt index 3d68508c7e..0d40b9bca5 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt @@ -265,7 +265,7 @@ class DetailsMiddleware { } private fun changeAppThemeMode(appThemeMode: AppThemeMode) { - val repository = store.state.daggerGraphState.get(DaggerGraphState::appThemeModeRepository) + val repository = store.inject(DaggerGraphState::appThemeModeRepository) scope.launch { repository.changeAppThemeMode(appThemeMode) @@ -275,7 +275,7 @@ class DetailsMiddleware { } private fun changeBalanceHiding(hideBalance: Boolean) { - val repository = store.state.daggerGraphState.get(DaggerGraphState::balanceHidingRepository) + val repository = store.inject(DaggerGraphState::balanceHidingRepository) scope.launch { val newState = repository.getBalanceHidingSettings().copy( @@ -458,8 +458,7 @@ class DetailsMiddleware { Analytics.send(Settings.AppSettings.SaveAccessCodeSwitcherChanged(AnalyticsParam.OnOffState.On)) preferencesStorage.shouldSaveAccessCodes = true - store.state.daggerGraphState - .get(DaggerGraphState::cardSdkConfigRepository) + store.inject(DaggerGraphState::cardSdkConfigRepository) .setAccessCodeRequestPolicy(isBiometricsRequestPolicy = scanResponse?.card?.isAccessCodeSet == true) return CompletionResult.Success(Unit) @@ -471,8 +470,7 @@ class DetailsMiddleware { Analytics.send(Settings.AppSettings.SaveAccessCodeSwitcherChanged(AnalyticsParam.OnOffState.Off)) preferencesStorage.shouldSaveAccessCodes = false - store.state.daggerGraphState - .get(DaggerGraphState::cardSdkConfigRepository) + store.inject(DaggerGraphState::cardSdkConfigRepository) .setAccessCodeRequestPolicy(isBiometricsRequestPolicy = false) } .doOnFailure { error -> @@ -531,7 +529,7 @@ class DetailsMiddleware { } private fun scanCard(state: DetailsState) = scope.launch { - store.state.daggerGraphState.get(DaggerGraphState::scanCardProcessor) + store.inject(DaggerGraphState::scanCardProcessor) .scan(allowsRequestAccessCodeFromRepository = true) .doOnSuccess { scanResponse -> // if we use biometric, scanResponse in GlobalState is null, and crashes NPE on twin cards @@ -561,7 +559,7 @@ class DetailsMiddleware { } private fun scanAndSaveUserWallet() = scope.launch(Dispatchers.IO) { - val cardSdkConfigRepository = store.state.daggerGraphState.get(DaggerGraphState::cardSdkConfigRepository) + val cardSdkConfigRepository = store.inject(DaggerGraphState::cardSdkConfigRepository) val prevUseBiometricsForAccessCode = cardSdkConfigRepository.isBiometricsRequestPolicy() @@ -570,7 +568,7 @@ class DetailsMiddleware { isBiometricsRequestPolicy = preferencesStorage.shouldSaveAccessCodes, ) - store.state.daggerGraphState.get(DaggerGraphState::scanCardProcessor).scan( + store.inject(DaggerGraphState::scanCardProcessor).scan( analyticsEvent = Basic.CardWasScanned(CoreAnalyticsParam.ScannedFrom.MyWallets), onWalletNotCreated = { // No need to rollback policy, continue with the policy set before the card scan diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt index e6098d1dc9..e829d9c937 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsReducer.kt @@ -4,9 +4,11 @@ import com.tangem.domain.apptheme.model.AppThemeMode import com.tangem.domain.common.CardTypesResolver import com.tangem.domain.common.util.cardTypesResolver import com.tangem.domain.models.scan.CardDTO +import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.redux.AppState import com.tangem.tap.domain.extensions.signedHashesCount import com.tangem.tap.preferencesStorage +import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.store import com.tangem.tap.tangemSdkManager import kotlinx.coroutines.flow.firstOrNull @@ -76,12 +78,12 @@ private fun handlePrepareScreen(action: DetailsAction.PrepareScreen): DetailsSta saveAccessCodes = preferencesStorage.shouldSaveAccessCodes, selectedAppCurrency = store.state.globalState.appCurrency, selectedThemeMode = runBlocking { - store.state.daggerGraphState - .get { appThemeModeRepository }.getAppThemeMode().firstOrNull() ?: AppThemeMode.DEFAULT + store.inject(DaggerGraphState::appThemeModeRepository).getAppThemeMode().firstOrNull() + ?: AppThemeMode.DEFAULT }, isHidingEnabled = runBlocking { - store.state.daggerGraphState - .get { balanceHidingRepository }.getBalanceHidingSettings().isHidingEnabledInSettings + store.inject(DaggerGraphState::balanceHidingRepository) + .getBalanceHidingSettings().isHidingEnabledInSettings }, ), ) diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectMiddleware.kt b/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectMiddleware.kt index 60c2e73559..c6422a0706 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectMiddleware.kt @@ -20,6 +20,7 @@ import com.tangem.domain.wallets.models.UserWalletId import com.tangem.feature.qrscanning.QrScanningRouter import com.tangem.feature.qrscanning.SourceType import com.tangem.tap.common.extensions.dispatchOnMain +import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.domain.walletconnect.BnbHelper @@ -47,9 +48,9 @@ import timber.log.Timber class WalletConnectMiddleware { private var walletConnectManager = WalletConnectManager() private val walletConnectInteractor: WalletConnectInteractor - get() = store.state.daggerGraphState.get(DaggerGraphState::walletConnectInteractor) + get() = store.inject(DaggerGraphState::walletConnectInteractor) private val walletConnectRepository: WalletConnectRepository - get() = store.state.daggerGraphState.get(DaggerGraphState::walletConnectRepository) + get() = store.inject(DaggerGraphState::walletConnectRepository) val walletConnectMiddleware: Middleware = { dispatch, state -> { next -> @@ -387,8 +388,7 @@ class WalletConnectMiddleware { } private suspend fun getWalletManagers(): List { - val walletManagerFacade = store.state.daggerGraphState - .get(DaggerGraphState::walletManagersFacade) + val walletManagerFacade = store.inject(DaggerGraphState::walletManagersFacade) val userWallet = userWalletsListManager.selectedUserWalletSync ?: return emptyList() return walletManagerFacade.getStoredWalletManagers(userWallet.walletId) @@ -407,7 +407,7 @@ class WalletConnectMiddleware { } private suspend fun getAvailableEvmBlockchains(userWalletId: UserWalletId): List { - val currenciesRepository = store.state.daggerGraphState.get(DaggerGraphState::currenciesRepository) + val currenciesRepository = store.inject(DaggerGraphState::currenciesRepository) return currenciesRepository.getMultiCurrencyWalletCurrenciesSync(userWalletId) .asSequence() @@ -496,8 +496,7 @@ class WalletConnectMiddleware { style = userWallet.scanResponse.derivationStyleProvider.getDerivationStyle(), )?.rawPath - val walletManagerFacade = store.state.daggerGraphState - .get(DaggerGraphState::walletManagersFacade) + val walletManagerFacade = store.inject(DaggerGraphState::walletManagersFacade) return walletManagerFacade.getOrCreateWalletManager( userWalletId = userWallet.walletId, @@ -511,8 +510,7 @@ class WalletConnectMiddleware { } private suspend fun getAccountsForWc(wcInteractor: WalletConnectInteractor, userWallet: UserWallet): List { - val walletManagerFacade = store.state.daggerGraphState - .get(DaggerGraphState::walletManagersFacade) + val walletManagerFacade = store.inject(DaggerGraphState::walletManagersFacade) return walletManagerFacade.getStoredWalletManagers(userWallet.walletId).mapNotNull { val wallet = it.wallet val chainId = wcInteractor.blockchainHelper.networkIdToChainIdOrNull( diff --git a/app/src/main/java/com/tangem/tap/features/disclaimer/DisclaimerType.kt b/app/src/main/java/com/tangem/tap/features/disclaimer/DisclaimerType.kt index 152ade0763..796452dcab 100644 --- a/app/src/main/java/com/tangem/tap/features/disclaimer/DisclaimerType.kt +++ b/app/src/main/java/com/tangem/tap/features/disclaimer/DisclaimerType.kt @@ -2,6 +2,7 @@ package com.tangem.tap.features.disclaimer import com.tangem.domain.common.TapWorkarounds.isStart2Coin import com.tangem.domain.models.scan.CardDTO +import com.tangem.tap.common.extensions.inject import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.store import java.util.Locale @@ -35,7 +36,7 @@ fun DisclaimerType.createDisclaimer(cardDTO: CardDTO): Disclaimer { fun CardDTO.createDisclaimer(): Disclaimer = DisclaimerType.get(this).createDisclaimer(this) private fun provideDisclaimerDataProvider(cardId: String, disclaimerType: DisclaimerType): DisclaimerDataProvider { - val cardRepository = store.state.daggerGraphState.get(DaggerGraphState::cardRepository) + val cardRepository = store.inject(DaggerGraphState::cardRepository) return object : DisclaimerDataProvider { override fun getLanguage(): String = Locale.getDefault().language override fun getCardId(): String = cardId diff --git a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt index d1210fe911..2bec7b7af6 100644 --- a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt @@ -6,18 +6,15 @@ import com.tangem.common.doOnSuccess import com.tangem.common.extensions.guard import com.tangem.core.analytics.Analytics import com.tangem.core.analytics.models.AnalyticsEvent +import com.tangem.core.analytics.models.Basic import com.tangem.core.navigation.AppScreen import com.tangem.core.navigation.NavigationAction import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.userwallets.UserWalletBuilder -import com.tangem.core.analytics.models.Basic import com.tangem.tap.common.analytics.events.IntroductionProcess import com.tangem.tap.common.analytics.events.Shop import com.tangem.tap.common.entities.IndeterminateProgressButton -import com.tangem.tap.common.extensions.dispatchOnMain -import com.tangem.tap.common.extensions.dispatchOpenUrl -import com.tangem.tap.common.extensions.eraseContext -import com.tangem.tap.common.extensions.onUserWalletSelected +import com.tangem.tap.common.extensions.* import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.features.home.redux.HomeMiddleware.NEW_BUY_WALLET_URL @@ -79,11 +76,11 @@ private fun handleHomeAction(action: Action) { } private suspend fun readCard(analyticsEvent: AnalyticsEvent?) { - store.state.daggerGraphState.get(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( + store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( isBiometricsRequestPolicy = preferencesStorage.shouldSaveAccessCodes, ) - store.state.daggerGraphState.get(DaggerGraphState::scanCardProcessor).scan( + store.inject(DaggerGraphState::scanCardProcessor).scan( analyticsEvent = analyticsEvent, onProgressStateChange = { showProgress -> if (showProgress) { diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt index 0d1788de88..fd59efff07 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt @@ -15,10 +15,7 @@ import com.tangem.domain.userwallets.UserWalletBuilder import com.tangem.domain.userwallets.UserWalletIdBuilder import com.tangem.tap.* import com.tangem.tap.common.analytics.converters.ParamCardCurrencyConverter -import com.tangem.tap.common.extensions.dispatchOnMain -import com.tangem.tap.common.extensions.onUserWalletSelected -import com.tangem.tap.common.extensions.removeContext -import com.tangem.tap.common.extensions.setContext +import com.tangem.tap.common.extensions.* import com.tangem.tap.features.saveWallet.redux.SaveWalletAction import com.tangem.tap.proxy.redux.DaggerGraphState import kotlinx.coroutines.delay @@ -80,7 +77,7 @@ object OnboardingHelper { scope.launch { when { // When should save user wallets, then save card without navigate to save wallet screen - store.state.daggerGraphState.get(DaggerGraphState::walletsRepository).shouldSaveUserWalletsSync() -> { + store.inject(DaggerGraphState::walletsRepository).shouldSaveUserWalletsSync() -> { proceedWithScanResponse(scanResponse, backupCardsIds) store.dispatchOnMain( diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt index ca0b30020d..460734903f 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt @@ -28,6 +28,7 @@ import com.tangem.tap.common.analytics.events.Onboarding import com.tangem.tap.common.extensions.dispatchDialogShow import com.tangem.tap.common.extensions.dispatchOnMain import com.tangem.tap.common.extensions.dispatchWithMain +import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.domain.tasks.product.CreateProductWalletTaskResponse @@ -403,8 +404,7 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction) store.dispatchOnMain(BackupAction.AddBackupCard.ChangeButtonLoading(true)) backupService.addBackupCard { result -> backupService.skipCompatibilityChecks = false - store.state.daggerGraphState.get(DaggerGraphState::cardSdkConfigRepository).sdk - .config.filter.cardIdFilter = null + store.inject(DaggerGraphState::cardSdkConfigRepository).sdk.config.filter.cardIdFilter = null store.dispatchOnMain(BackupAction.AddBackupCard.ChangeButtonLoading(false)) when (result) { is CompletionResult.Success -> { diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt index 2c21ea333c..dd10c08389 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt @@ -24,10 +24,7 @@ import com.tangem.domain.models.scan.CardDTO import com.tangem.domain.tokens.legacy.TradeCryptoAction import com.tangem.tap.common.analytics.events.Token import com.tangem.tap.common.analytics.events.Token.Send.SelectedCurrency.CurrencyType -import com.tangem.tap.common.extensions.dispatchDialogShow -import com.tangem.tap.common.extensions.dispatchErrorNotification -import com.tangem.tap.common.extensions.dispatchOnMain -import com.tangem.tap.common.extensions.stripZeroPlainString +import com.tangem.tap.common.extensions.* import com.tangem.tap.common.redux.AppDialog import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction @@ -211,7 +208,7 @@ private fun sendTransaction( // return@launch // } - val tangemSdk = store.state.daggerGraphState.get(DaggerGraphState::cardSdkConfigRepository).sdk + val tangemSdk = store.inject(DaggerGraphState::cardSdkConfigRepository).sdk val linkedTerminalState = tangemSdk.config.linkedTerminal if (card.isStart2Coin) { tangemSdk.config.linkedTerminal = false diff --git a/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListMigration.kt b/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListMigration.kt index 0768165d5b..3a49bac80a 100644 --- a/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListMigration.kt +++ b/app/src/main/java/com/tangem/tap/features/tokens/impl/presentation/viewmodels/TokensListMigration.kt @@ -16,6 +16,7 @@ import com.tangem.domain.wallets.models.UserWalletId import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase import com.tangem.tap.common.extensions.dispatchDebugErrorNotification import com.tangem.tap.common.extensions.dispatchOnMain +import com.tangem.tap.common.extensions.inject import com.tangem.tap.proxy.redux.DaggerGraphState import com.tangem.tap.store import timber.log.Timber @@ -140,8 +141,8 @@ internal class TokensListMigration( private suspend fun removeCurrenciesIfNeeded(userWalletId: UserWalletId, currencies: List) { if (currencies.isEmpty()) return - val currenciesRepository = store.state.daggerGraphState.get(DaggerGraphState::currenciesRepository) - val walletManagersFacade = store.state.daggerGraphState.get(DaggerGraphState::walletManagersFacade) + val currenciesRepository = store.inject(DaggerGraphState::currenciesRepository) + val walletManagersFacade = store.inject(DaggerGraphState::walletManagersFacade) currenciesRepository.removeCurrencies(userWalletId = userWalletId, currencies = currencies) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/TradeCryptoMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/TradeCryptoMiddleware.kt index a3425aeb83..28a73436b5 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/TradeCryptoMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/TradeCryptoMiddleware.kt @@ -47,9 +47,7 @@ object TradeCryptoMiddleware { } private val isSendRedesignedEnabled: Boolean - get() = store.state.daggerGraphState.get( - getDependency = DaggerGraphState::sendFeatureToggles, - ).isRedesignedSendEnabled + get() = store.inject(getDependency = DaggerGraphState::sendFeatureToggles).isRedesignedSendEnabled @Suppress("LongMethod", "CyclomaticComplexMethod") private fun handle(state: () -> AppState?, action: TradeCryptoAction) { @@ -106,8 +104,7 @@ object TradeCryptoMiddleware { if (currency is CryptoCurrency.Token && currency.network.isTestnet) { scope.launch { - val walletManager = store.state.daggerGraphState - .get(DaggerGraphState::walletManagersFacade) + val walletManager = store.inject(DaggerGraphState::walletManagersFacade) .getOrCreateWalletManager( userWalletId = action.userWallet.walletId, blockchain = blockchain, @@ -175,8 +172,7 @@ object TradeCryptoMiddleware { val blockchain = Blockchain.fromId(currency.network.id.value) scope.launch { - val walletManager = store.state.daggerGraphState - .get(DaggerGraphState::walletManagersFacade) + val walletManager = store.inject(DaggerGraphState::walletManagersFacade) .getOrCreateWalletManager( userWalletId = action.userWallet.walletId, blockchain = blockchain, @@ -234,8 +230,7 @@ object TradeCryptoMiddleware { val blockchain = Blockchain.fromId(currency.network.id.value) scope.launch { - val walletManager = store.state.daggerGraphState - .get(DaggerGraphState::walletManagersFacade) + val walletManager = store.inject(DaggerGraphState::walletManagersFacade) .getOrCreateWalletManager( userWalletId = action.userWallet.walletId, blockchain = blockchain, diff --git a/app/src/main/java/com/tangem/tap/features/welcome/redux/WelcomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/welcome/redux/WelcomeMiddleware.kt index 555f73988c..5e03eed1a5 100644 --- a/app/src/main/java/com/tangem/tap/features/welcome/redux/WelcomeMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/welcome/redux/WelcomeMiddleware.kt @@ -8,6 +8,7 @@ import com.tangem.common.doOnSuccess import com.tangem.common.flatMap import com.tangem.core.analytics.Analytics import com.tangem.core.analytics.models.AnalyticsParam +import com.tangem.core.analytics.models.Basic import com.tangem.core.navigation.AppScreen import com.tangem.core.navigation.NavigationAction import com.tangem.domain.common.util.cardTypesResolver @@ -16,9 +17,9 @@ import com.tangem.domain.userwallets.UserWalletBuilder import com.tangem.domain.wallets.legacy.unlockIfLockable import com.tangem.tap.* import com.tangem.tap.common.analytics.converters.ParamCardCurrencyConverter -import com.tangem.core.analytics.models.Basic import com.tangem.tap.common.extensions.dispatchOnMain import com.tangem.tap.common.extensions.dispatchWithMain +import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.extensions.onUserWalletSelected import com.tangem.tap.common.redux.AppState import com.tangem.tap.features.intentHandler.handlers.BackgroundScanIntentHandler @@ -169,10 +170,10 @@ internal class WelcomeMiddleware { } private suspend inline fun scanCardInternal(crossinline onCardScanned: suspend (ScanResponse) -> Unit) { - store.state.daggerGraphState.get(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( + store.inject(DaggerGraphState::cardSdkConfigRepository).setAccessCodeRequestPolicy( isBiometricsRequestPolicy = preferencesStorage.shouldSaveAccessCodes, ) - store.state.daggerGraphState.get(DaggerGraphState::scanCardProcessor).scan( + store.inject(DaggerGraphState::scanCardProcessor).scan( analyticsEvent = Basic.CardWasScanned(AnalyticsParam.ScannedFrom.SignIn), onSuccess = { scanResponse -> scope.launch { onCardScanned(scanResponse) } diff --git a/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt b/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt index 7b0d4d5a93..1f0dc4ea68 100644 --- a/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt +++ b/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt @@ -8,6 +8,7 @@ import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.transaction.TransactionFee import com.tangem.blockchain.extensions.Result import com.tangem.domain.models.scan.CardDTO +import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.extensions.safeUpdate import com.tangem.tap.common.redux.global.CryptoCurrencyName import com.tangem.tap.common.redux.global.GlobalAction @@ -105,7 +106,7 @@ suspend fun buyErc20TestnetTokens(card: CardDTO, walletManager: EthereumWalletMa val signer = TangemSigner( card = card, - tangemSdk = store.state.daggerGraphState.get(DaggerGraphState::cardSdkConfigRepository).sdk, + tangemSdk = store.inject(DaggerGraphState::cardSdkConfigRepository).sdk, initialMessage = Message(), ) { signResponse -> store.dispatch( diff --git a/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt b/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt index eef3877a77..c2b7b52edd 100644 --- a/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt +++ b/app/src/main/java/com/tangem/tap/proxy/redux/DaggerGraphState.kt @@ -65,11 +65,4 @@ data class DaggerGraphState( val wasTwinsOnboardingShownUseCase: WasTwinsOnboardingShownUseCase? = null, val saveTwinsOnboardingShownUseCase: SaveTwinsOnboardingShownUseCase? = null, val cardRepository: CardRepository? = null, -) : StateType { - - inline fun get(getDependency: DaggerGraphState.() -> T?): T { - return requireNotNull(getDependency()) { - "${T::class.simpleName} isn't initialized " - } - } -} \ No newline at end of file +) : StateType \ No newline at end of file