From c37842c34da4d7a32102588bd29e05d83377036c Mon Sep 17 00:00:00 2001 From: Julien Eluard Date: Fri, 19 Apr 2019 12:48:25 +0200 Subject: [PATCH] [Fixes #7325] Add EIP681 deeplink support --- android/app/src/main/AndroidManifest.xml | 1 + .../ui/screens/wallet/choose_recipient/events.cljs | 4 ++-- src/status_im/utils/universal_links/core.cljs | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 19192cabf80..14e2b186478 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -73,6 +73,7 @@ + diff --git a/src/status_im/ui/screens/wallet/choose_recipient/events.cljs b/src/status_im/ui/screens/wallet/choose_recipient/events.cljs index 738bc83563b..f87143ba971 100644 --- a/src/status_im/ui/screens/wallet/choose_recipient/events.cljs +++ b/src/status_im/ui/screens/wallet/choose_recipient/events.cljs @@ -105,8 +105,8 @@ new-amount (:value details) new-gas (:gas details) symbol-changed? (and old-symbol new-symbol (not= old-symbol new-symbol))] - (cond-> {:db db - :dispatch [:navigate-back]} + (cond-> {:db db} + (not= :deep-link origin) (assoc :dispatch [:navigate-back]) (and address valid-network?) (update :db #(fill-request-details % details false)) symbol-changed? (changed-asset old-symbol new-symbol) (and old-amount new-amount (not= old-amount new-amount)) (changed-amount-warning old-amount new-amount) diff --git a/src/status_im/utils/universal_links/core.cljs b/src/status_im/utils/universal_links/core.cljs index 7a0fc3a7772..2f658cffd28 100644 --- a/src/status_im/utils/universal_links/core.cljs +++ b/src/status_im/utils/universal_links/core.cljs @@ -13,6 +13,7 @@ [status-im.ui.screens.navigation :as navigation] [status-im.utils.config :as config] [status-im.utils.fx :as fx] + [status-im.utils.ethereum.eip681 :as eip681] [taoensso.timbre :as log] [status-im.utils.platform :as platform] [status-im.constants :as constants])) @@ -79,6 +80,10 @@ (log/info "universal-links: handling url profile" url) (extensions.registry/load cofx url false)) +(fx/defn handle-eip681 [cofx url] + {:dispatch-n [[:navigate-to :wallet-send-transaction] + [:wallet/fill-request-from-url url :deep-link]]}) + (defn handle-not-found [full-url] (log/info "universal-links: no handler for " full-url)) @@ -105,6 +110,9 @@ (and config/extensions-enabled? (match-url url extension-regex)) (handle-extension cofx url) + (some? (eip681/parse-uri url)) + (handle-eip681 cofx url) + :else (handle-not-found url))) (fx/defn store-url-for-later