mirror of
https://github.com/status-im/status-react.git
synced 2025-02-22 23:58:30 +00:00
* [#21853] fix: check deeplink pending request after wallet connect loaded * [#21853] fix: isolate the usage of pending deeplink url * [#21853] fix: remove redundant check for web3 object * [#21853] fix: unregister event listener after logout * [#21853] fix: extract handler
This commit is contained in:
parent
ae00ecb3e0
commit
35c5d5ae6a
@ -87,3 +87,11 @@
|
||||
event
|
||||
#(-> (bean/->clj %)
|
||||
handler)))
|
||||
|
||||
(defn unregister-handler
|
||||
[{:keys [web3-wallet event handler]}]
|
||||
(oops/ocall web3-wallet
|
||||
"off"
|
||||
event
|
||||
#(-> (bean/->clj %)
|
||||
handler)))
|
||||
|
@ -108,8 +108,7 @@
|
||||
(rf/defn handle-wallet-connect
|
||||
[_ uri]
|
||||
(log/info "universal-links: handle-wallet-connect" uri)
|
||||
{:dispatch-later {:ms 1500
|
||||
:dispatch [:wallet-connect/on-scan-connection uri]}})
|
||||
{:dispatch [:wallet-connect/process-deeplink uri]})
|
||||
|
||||
(defn dispatch-url
|
||||
"Dispatch url so we can get access to re-frame/db"
|
||||
|
@ -44,6 +44,7 @@
|
||||
{:db (assoc db :profile/logging-out? true)
|
||||
;; We need to disable notifications before starting the logout process
|
||||
:fx [[:dispatch [:profile.logout/disable-notifications]]
|
||||
[:dispatch [:wallet-connect/unregister-event-listeners]]
|
||||
[:dispatch-later
|
||||
{:ms 100
|
||||
:dispatch [:profile.logout/reset-state]}]]}))
|
||||
|
@ -30,7 +30,8 @@
|
||||
(log/info "WalletConnect SDK initialisation successful")
|
||||
{:db (assoc db :wallet-connect/web3-wallet web3-wallet)
|
||||
:fx [[:dispatch [:wallet-connect/register-event-listeners]]
|
||||
[:dispatch [:wallet-connect/get-sessions]]]}))
|
||||
[:dispatch [:wallet-connect/get-sessions]]
|
||||
[:dispatch [:wallet-connect/pair-with-pending-deeplink]]]}))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet-connect/reload-on-network-change
|
||||
@ -40,6 +41,19 @@
|
||||
(log/info "Re-Initialising WalletConnect SDK due to network change")
|
||||
{:fx [[:dispatch [:wallet-connect/init]]]}))))
|
||||
|
||||
(defn- on-session-proposal
|
||||
[data]
|
||||
(rf/dispatch [:wallet-connect/on-session-proposal data]))
|
||||
|
||||
(defn- on-session-request
|
||||
[data]
|
||||
(rf/dispatch [:wallet-connect/on-session-request data]))
|
||||
|
||||
(defn- on-session-delete
|
||||
[data]
|
||||
(rf/dispatch [:wallet-connect/on-session-delete data]))
|
||||
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet-connect/register-event-listeners
|
||||
(fn [{:keys [db]}]
|
||||
@ -47,15 +61,32 @@
|
||||
{:fx [[:effects.wallet-connect/register-event-listener
|
||||
[web3-wallet
|
||||
constants/wallet-connect-session-proposal-event
|
||||
#(rf/dispatch [:wallet-connect/on-session-proposal %])]]
|
||||
on-session-proposal]]
|
||||
[:effects.wallet-connect/register-event-listener
|
||||
[web3-wallet
|
||||
constants/wallet-connect-session-request-event
|
||||
#(rf/dispatch [:wallet-connect/on-session-request %])]]
|
||||
on-session-request]]
|
||||
[:effects.wallet-connect/register-event-listener
|
||||
[web3-wallet
|
||||
constants/wallet-connect-session-delete-event
|
||||
#(rf/dispatch [:wallet-connect/on-session-delete %])]]]})))
|
||||
on-session-delete]]]})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet-connect/unregister-event-listeners
|
||||
(fn [{:keys [db]}]
|
||||
(let [web3-wallet (get db :wallet-connect/web3-wallet)]
|
||||
{:fx [[:effects.wallet-connect/unregister-event-listener
|
||||
[web3-wallet
|
||||
constants/wallet-connect-session-proposal-event
|
||||
on-session-proposal]]
|
||||
[:effects.wallet-connect/unregister-event-listener
|
||||
[web3-wallet
|
||||
constants/wallet-connect-session-request-event
|
||||
on-session-request]]
|
||||
[:effects.wallet-connect/unregister-event-listener
|
||||
[web3-wallet
|
||||
constants/wallet-connect-session-delete-event
|
||||
on-session-delete]]]})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet-connect/on-init-fail
|
||||
|
@ -34,6 +34,14 @@
|
||||
:event wc-event
|
||||
:handler handler})))
|
||||
|
||||
(rf/reg-fx
|
||||
:effects.wallet-connect/unregister-event-listener
|
||||
(fn [[web3-wallet wc-event handler]]
|
||||
(wallet-connect/unregister-handler
|
||||
{:web3-wallet web3-wallet
|
||||
:event wc-event
|
||||
:handler handler})))
|
||||
|
||||
(rf/reg-fx
|
||||
:effects.wallet-connect/pair
|
||||
(fn [{:keys [web3-wallet url on-success on-fail]}]
|
||||
|
@ -21,6 +21,21 @@
|
||||
:on-fail #(log/error "Failed to pair with dApp" {:error %})
|
||||
:on-success #(log/info "dApp paired successfully")}]]})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet-connect/process-deeplink
|
||||
(fn [{:keys [db]} [url]]
|
||||
(let [web3-wallet (get db :wallet-connect/web3-wallet)]
|
||||
(if web3-wallet
|
||||
{:fx [[:dispatch [:wallet-connect/on-scan-connection url]]]}
|
||||
{:db (assoc db :wallet-connect/pending-url url)}))))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet-connect/pair-with-pending-deeplink
|
||||
(fn [{:keys [db]}]
|
||||
(when-let [pending-url (get db :wallet-connect/pending-url)]
|
||||
{:db (dissoc db :wallet-connect/pending-url)
|
||||
:fx [[:dispatch [:wallet-connect/on-scan-connection pending-url]]]})))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:wallet-connect/on-scan-connection
|
||||
(fn [{:keys [db]} [scanned-text]]
|
||||
|
Loading…
x
Reference in New Issue
Block a user