mirror of
https://github.com/status-im/status-react.git
synced 2025-02-23 16:18:32 +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
|
event
|
||||||
#(-> (bean/->clj %)
|
#(-> (bean/->clj %)
|
||||||
handler)))
|
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
|
(rf/defn handle-wallet-connect
|
||||||
[_ uri]
|
[_ uri]
|
||||||
(log/info "universal-links: handle-wallet-connect" uri)
|
(log/info "universal-links: handle-wallet-connect" uri)
|
||||||
{:dispatch-later {:ms 1500
|
{:dispatch [:wallet-connect/process-deeplink uri]})
|
||||||
:dispatch [:wallet-connect/on-scan-connection uri]}})
|
|
||||||
|
|
||||||
(defn dispatch-url
|
(defn dispatch-url
|
||||||
"Dispatch url so we can get access to re-frame/db"
|
"Dispatch url so we can get access to re-frame/db"
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
{:db (assoc db :profile/logging-out? true)
|
{:db (assoc db :profile/logging-out? true)
|
||||||
;; We need to disable notifications before starting the logout process
|
;; We need to disable notifications before starting the logout process
|
||||||
:fx [[:dispatch [:profile.logout/disable-notifications]]
|
:fx [[:dispatch [:profile.logout/disable-notifications]]
|
||||||
|
[:dispatch [:wallet-connect/unregister-event-listeners]]
|
||||||
[:dispatch-later
|
[:dispatch-later
|
||||||
{:ms 100
|
{:ms 100
|
||||||
:dispatch [:profile.logout/reset-state]}]]}))
|
:dispatch [:profile.logout/reset-state]}]]}))
|
||||||
|
@ -30,7 +30,8 @@
|
|||||||
(log/info "WalletConnect SDK initialisation successful")
|
(log/info "WalletConnect SDK initialisation successful")
|
||||||
{:db (assoc db :wallet-connect/web3-wallet web3-wallet)
|
{:db (assoc db :wallet-connect/web3-wallet web3-wallet)
|
||||||
:fx [[:dispatch [:wallet-connect/register-event-listeners]]
|
: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
|
(rf/reg-event-fx
|
||||||
:wallet-connect/reload-on-network-change
|
:wallet-connect/reload-on-network-change
|
||||||
@ -40,6 +41,19 @@
|
|||||||
(log/info "Re-Initialising WalletConnect SDK due to network change")
|
(log/info "Re-Initialising WalletConnect SDK due to network change")
|
||||||
{:fx [[:dispatch [:wallet-connect/init]]]}))))
|
{: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
|
(rf/reg-event-fx
|
||||||
:wallet-connect/register-event-listeners
|
:wallet-connect/register-event-listeners
|
||||||
(fn [{:keys [db]}]
|
(fn [{:keys [db]}]
|
||||||
@ -47,15 +61,32 @@
|
|||||||
{:fx [[:effects.wallet-connect/register-event-listener
|
{:fx [[:effects.wallet-connect/register-event-listener
|
||||||
[web3-wallet
|
[web3-wallet
|
||||||
constants/wallet-connect-session-proposal-event
|
constants/wallet-connect-session-proposal-event
|
||||||
#(rf/dispatch [:wallet-connect/on-session-proposal %])]]
|
on-session-proposal]]
|
||||||
[:effects.wallet-connect/register-event-listener
|
[:effects.wallet-connect/register-event-listener
|
||||||
[web3-wallet
|
[web3-wallet
|
||||||
constants/wallet-connect-session-request-event
|
constants/wallet-connect-session-request-event
|
||||||
#(rf/dispatch [:wallet-connect/on-session-request %])]]
|
on-session-request]]
|
||||||
[:effects.wallet-connect/register-event-listener
|
[:effects.wallet-connect/register-event-listener
|
||||||
[web3-wallet
|
[web3-wallet
|
||||||
constants/wallet-connect-session-delete-event
|
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
|
(rf/reg-event-fx
|
||||||
:wallet-connect/on-init-fail
|
:wallet-connect/on-init-fail
|
||||||
|
@ -34,6 +34,14 @@
|
|||||||
:event wc-event
|
:event wc-event
|
||||||
:handler handler})))
|
: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
|
(rf/reg-fx
|
||||||
:effects.wallet-connect/pair
|
:effects.wallet-connect/pair
|
||||||
(fn [{:keys [web3-wallet url on-success on-fail]}]
|
(fn [{:keys [web3-wallet url on-success on-fail]}]
|
||||||
|
@ -21,6 +21,21 @@
|
|||||||
:on-fail #(log/error "Failed to pair with dApp" {:error %})
|
:on-fail #(log/error "Failed to pair with dApp" {:error %})
|
||||||
:on-success #(log/info "dApp paired successfully")}]]})))
|
: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
|
(rf/reg-event-fx
|
||||||
:wallet-connect/on-scan-connection
|
:wallet-connect/on-scan-connection
|
||||||
(fn [{:keys [db]} [scanned-text]]
|
(fn [{:keys [db]} [scanned-text]]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user