diff --git a/app/src/main/java/com/tangem/tap/common/DialogManager.kt b/app/src/main/java/com/tangem/tap/common/DialogManager.kt index 07582f5c87..7af8cc775b 100644 --- a/app/src/main/java/com/tangem/tap/common/DialogManager.kt +++ b/app/src/main/java/com/tangem/tap/common/DialogManager.kt @@ -101,7 +101,7 @@ class DialogManager : StoreSubscriber { is WalletConnectDialog.ApproveWcSession -> ApproveWcSessionDialog.create(state.dialog.session, state.dialog.networks, context) is WalletConnectDialog.ChooseNetwork -> - ChooseNetworkDialog.create(state.dialog.networks, context) + ChooseNetworkDialog.create(state.dialog.session, state.dialog.networks, context) is WalletConnectDialog.ClipboardOrScanQr -> ClipboardOrScanQrDialog.create(state.dialog.clipboardUri, context) is WalletConnectDialog.RequestTransaction -> diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectAction.kt b/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectAction.kt index 0c852b3467..14a871fbd9 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectAction.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectAction.kt @@ -47,7 +47,7 @@ sealed class WalletConnectAction : Action { val session: WalletConnectSession, ) : WalletConnectAction() - data class SelectNetwork(val networks: List) : WalletConnectAction() + data class SelectNetwork(val session: WalletConnectSession, val networks: List) : WalletConnectAction() data class ChooseNetwork(val blockchain: Blockchain) : WalletConnectAction() data class UpdateBlockchain( val updatedSession: WalletConnectSession, 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 4694af35f2..d98fb0b0f5 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 @@ -62,7 +62,14 @@ class WalletConnectMiddleware { } } is WalletConnectAction.SelectNetwork -> { - store.dispatch(GlobalAction.ShowDialog(WalletConnectDialog.ChooseNetwork(action.networks))) + store.dispatch( + GlobalAction.ShowDialog( + WalletConnectDialog.ChooseNetwork( + session = action.session, + networks = action.networks, + ), + ), + ) } is WalletConnectAction.ChooseNetwork -> { val data = state()?.walletConnectState?.newSessionData ?: return diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectState.kt b/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectState.kt index 14181de2e6..0bdfaf69f6 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectState.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/walletconnect/WalletConnectState.kt @@ -95,10 +95,12 @@ sealed class WalletConnectDialog : StateDialog { object OpeningSessionRejected : WalletConnectDialog() object SessionTimeout : WalletConnectDialog() data class ApproveWcSession( - val session: WalletConnectSession, val networks: List, + val session: WalletConnectSession, + val networks: List, ) : WalletConnectDialog() data class ChooseNetwork( + val session: WalletConnectSession, val networks: List, ) : WalletConnectDialog() diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt index 1834618476..efa9da619b 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ApproveWcSessionDialog.kt @@ -27,7 +27,7 @@ class ApproveWcSessionDialog { } if (networks.size > 1) { setNeutralButton(context.getText(R.string.wallet_connect_select_network)) { _, _ -> - store.dispatch(WalletConnectAction.SelectNetwork(networks)) + store.dispatch(WalletConnectAction.SelectNetwork(session = session, networks = networks)) } } setNegativeButton(context.getText(R.string.common_reject)) { _, _ -> diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ChooseNetworkDialog.kt b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ChooseNetworkDialog.kt index 2b1779dafc..dedf44dd04 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ChooseNetworkDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/walletconnect/dialogs/ChooseNetworkDialog.kt @@ -5,22 +5,26 @@ import androidx.appcompat.app.AlertDialog import com.tangem.blockchain.common.Blockchain import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.features.details.redux.walletconnect.WalletConnectAction +import com.tangem.tap.features.details.redux.walletconnect.WalletConnectSession import com.tangem.tap.store import com.tangem.wallet.R object ChooseNetworkDialog { fun create( - blockchains: List, + session: WalletConnectSession, + networks: List, context: Context, ): AlertDialog { return AlertDialog.Builder(context) .setTitle(context.getString(R.string.wallet_connect_select_network)) - .setNegativeButton(context.getString(R.string.common_cancel)) { _, _ -> /* no-op */ } + .setNegativeButton(context.getString(R.string.common_cancel)) { _, _ -> + store.dispatch(WalletConnectAction.FailureEstablishingSession(session.session)) + } .setOnDismissListener { store.dispatch(GlobalAction.HideDialog()) } - .setSingleChoiceItems(blockchains.map { it.fullName }.toTypedArray(), 0) { _, which -> - blockchains.getOrNull(which)?.let { selectedBlockchain -> + .setSingleChoiceItems(networks.map { it.fullName }.toTypedArray(), 0) { _, which -> + networks.getOrNull(which)?.let { selectedBlockchain -> store.dispatch( WalletConnectAction.ChooseNetwork( blockchain = selectedBlockchain,