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 89dc7ed09b..ab69008a6b 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 @@ -68,7 +68,7 @@ class DetailsMiddleware { private fun handleAction(state: DetailsState, action: Action) { when (action) { is DetailsAction.ResetToFactory -> eraseWalletMiddleware.handle(action) - is DetailsAction.ManageSecurity -> manageSecurityMiddleware.handle(action) + is DetailsAction.ManageSecurity -> manageSecurityMiddleware.handle(action, state) is DetailsAction.AppSettings -> managePrivacyMiddleware.handle(state, action) is DetailsAction.ReCreateTwinsWallet -> { store.dispatch(TwinCardsAction.SetMode(CreateTwinWalletMode.RecreateWallet)) @@ -157,15 +157,15 @@ class DetailsMiddleware { class ManageSecurityMiddleware { @Suppress("ComplexMethod") - fun handle(action: DetailsAction.ManageSecurity) { + fun handle(action: DetailsAction.ManageSecurity, detailsState: DetailsState) { when (action) { is DetailsAction.ManageSecurity.OpenSecurity -> { store.dispatch(NavigationAction.NavigateTo(AppScreen.DetailsSecurity)) } is DetailsAction.ManageSecurity.SaveChanges -> { - val cardId = store.state.detailsState.scanResponse?.card?.cardId - val selectedOption = - store.state.detailsState.cardSettingsState?.manageSecurityState?.selectedOption + val cardSettingsState = detailsState.cardSettingsState + val cardId = cardSettingsState?.card?.cardId + val selectedOption = cardSettingsState?.manageSecurityState?.selectedOption scope.launch { val result = when (selectedOption) { SecurityOption.LongTap -> tangemSdkManager.setLongTap(cardId) diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt index dd560af176..62179b433d 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsState.kt @@ -5,11 +5,8 @@ import com.tangem.domain.common.CardDTO import com.tangem.domain.common.ScanResponse import com.tangem.tap.common.entities.Button import com.tangem.tap.common.entities.FiatCurrency -import com.tangem.tap.features.onboarding.products.twins.redux.TwinCardsState -import com.tangem.tap.store import org.rekotlin.StateType import java.util.* -import kotlin.properties.ReadOnlyProperty data class DetailsState( val scanResponse: ScanResponse? = null, @@ -19,14 +16,7 @@ data class DetailsState( val createBackupAllowed: Boolean = false, val appCurrency: FiatCurrency = FiatCurrency.Default, val appSettingsState: AppSettingsState = AppSettingsState(), -) : StateType { - - // if you do not delegate - the application crashes on startup, - // because twinCardsState has not been created yet - val twinCardsState: TwinCardsState by ReadOnlyProperty { _, _ -> - store.state.twinCardsState - } -} +) : StateType data class CardInfo( val cardId: String, diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt index 3e99ac95ed..06cda93c02 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt @@ -246,10 +246,10 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), StoreSubscriber { store.dispatch(GlobalAction.UpdateFeedbackInfo(store.state.walletState.walletManagers)) - store.state.globalState.scanResponse?.let { scanNoteResponse -> + store.state.globalState.scanResponse?.let { scanResponse -> store.dispatch( DetailsAction.PrepareScreen( - scanResponse = scanNoteResponse, + scanResponse = scanResponse, wallets = store.state.walletState.walletManagers.map { it.wallet }, ), )