🚷 Reject Wc sessions

This commit is contained in:
Shivek Khurana 2024-06-21 15:23:17 +05:30
parent 2ccd990255
commit 85e9df69f8
No known key found for this signature in database
GPG Key ID: 6BBA04C82FA07036
3 changed files with 36 additions and 18 deletions

View File

@ -279,6 +279,7 @@
(def ^:const wallet-connect-supported-events #{"accountsChanged" "chainChanged"})
(def ^:const wallet-connect-session-proposal-event "session_proposal")
(def ^:const wallet-connect-session-request-event "session_request")
(def ^:const wallet-connect-user-rejected-session-proposal-error-type "USER_REJECTED_METHODS")
(def ^:const dapp-permission-contact-code "contact-code")
(def ^:const dapp-permission-web3 "web3")

View File

@ -78,6 +78,18 @@
(promesa/then on-success)
(promesa/catch on-fail)))))
(rf/reg-fx
:effects.wallet-connect/reject-session
(fn [{:keys [web3-wallet proposal on-success on-fail]}]
(let [{:keys [id]} proposal
reason (wallet-connect/get-sdk-error
constants/wallet-connect-user-rejected-session-proposal-error-type)]
(-> (.rejectSession web3-wallet
(clj->js {:id id
:reason reason}))
(promesa/then on-success)
(promesa/catch on-fail)))))
(rf/reg-fx
:effects.wallet-connect/sign-message
(fn [{:keys [password address data on-success on-error]}]

View File

@ -111,7 +111,12 @@
:wallet-connect/close-session-request
(fn [_ _]
{:fx [[:dispatch [:dismiss-modal :screen/wallet.wallet-connect-session-proposal]]
[:dispatch [:wallet-connect/reset-current-session-request]]]}))
[:dispatch [:wallet-connect/reset-current-session-request]]
[:effects.wallet-connect/reject-session
{:web3-wallet
:proposal
:on-success
:on-fail}]]}))
(rf/reg-event-fx
:wallet-connect/fetch-active-sessions
@ -146,24 +151,24 @@
:events constants/wallet-connect-supported-events
:accounts accounts}})]
{:fx [[:effects.wallet-connect/approve-session
{:web3-wallet web3-wallet
:proposal current-proposal
{:web3-wallet web3-wallet
:proposal current-proposal
:supported-namespaces supported-namespaces
:on-success (fn []
(log/info "Wallet Connect session approved")
(let [metadata (-> current-proposal :params :proposer :metadata)]
(rf/dispatch [:wallet-connect/reset-current-session-proposal])
(rf/dispatch [:wallet-connect/persist-session
{:id (:id current-proposal)
:dapp-name (:name metadata)
:dapp-url (:url metadata)
:session-info current-proposal}])))
:on-fail (fn [error]
(log/error "Wallet Connect session approval failed"
{:error error
:event :wallet-connect/approve-session})
(rf/dispatch
[:wallet-connect/reset-current-session-proposal]))}]
:on-success (fn []
(log/info "Wallet Connect session approved")
(let [metadata (-> current-proposal :params :proposer :metadata)]
(rf/dispatch [:wallet-connect/reset-current-session-proposal])
(rf/dispatch [:wallet-connect/persist-session
{:id (:id current-proposal)
:dapp-name (:name metadata)
:dapp-url (:url metadata)
:session-info current-proposal}])))
:on-fail (fn [error]
(log/error "Wallet Connect session approval failed"
{:error error
:event :wallet-connect/approve-session})
(rf/dispatch
[:wallet-connect/reset-current-session-proposal]))}]
[:dispatch [:dismiss-modal :screen/wallet.wallet-connect-session-proposal]]]})))
(rf/reg-event-fx