WC: Last account that established connection is not selected when connecting through global scanner #20801 (#20913)

* WC: Last account that established connection is not selected when connecting through global scanner

* WC: Last account that established connection is not selected when connecting through global scanner

* Fixes
This commit is contained in:
Alexander 2024-09-17 15:29:05 +02:00 committed by GitHub
parent 7cad13c3c7
commit 3363152160
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 32 additions and 11 deletions

View File

@ -1,5 +1,6 @@
(ns status-im.contexts.wallet.wallet-connect.events.session-proposals
(:require [re-frame.core :as rf]
(:require [clojure.string :as string]
[re-frame.core :as rf]
[react-native.wallet-connect :as wallet-connect]
[status-im.contexts.wallet.wallet-connect.utils.data-store :as
data-store]
@ -61,7 +62,9 @@
(log/info "Received Wallet Connect session proposal: " proposal)
(let [accounts (get-in db [:wallet :accounts])
current-viewing-address (get-in db [:wallet :current-viewing-account-address])
sessions (get db :wallet-connect/sessions)
available-accounts (sessions/filter-operable-accounts (vals accounts))
latest-connected-account-address (sessions/latest-connected-account-address sessions)
networks (networks/get-networks-by-mode db)
session-networks (networks/proposal-networks-intersection proposal networks)
required-networks-supported? (networks/required-networks-supported? proposal networks)]
@ -70,8 +73,15 @@
:wallet-connect/current-proposal assoc
:request proposal
:session-networks session-networks
:address (or current-viewing-address
(-> available-accounts
:address (cond
(not (string/blank? current-viewing-address))
current-viewing-address
(not (string/blank?
latest-connected-account-address))
latest-connected-account-address
:else (-> available-accounts
first
:address)))
:fx [[:dispatch [:open-modal :screen/wallet.wallet-connect-session-proposal]]]}

View File

@ -31,3 +31,14 @@
account-addresses))
accounts))
sessions))
(defn latest-connected-account-address
[sessions]
(let [all-accounts (->> sessions
(sort-by :expiry >)
first
:accounts)]
(-> all-accounts
first
(string/split #":")
last)))