From 8687282d632f3ff33ddf5431b744625062812613 Mon Sep 17 00:00:00 2001 From: flexsurfer Date: Wed, 15 Jan 2025 12:27:51 +0100 Subject: [PATCH] [#21836] Relative derivation paths are not supported by keycard (#21888) --- .../wallet/account/tabs/about/view.cljs | 3 +- .../add_account/create_account/utils.cljs | 13 +++++++- .../add_account/create_account/view.cljs | 10 +++--- src/status_im/contexts/wallet/home/view.cljs | 31 ++++++++----------- 4 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/status_im/contexts/wallet/account/tabs/about/view.cljs b/src/status_im/contexts/wallet/account/tabs/about/view.cljs index b5c3adb09c..57140a7247 100644 --- a/src/status_im/contexts/wallet/account/tabs/about/view.cljs +++ b/src/status_im/contexts/wallet/account/tabs/about/view.cljs @@ -7,6 +7,7 @@ [status-im.contexts.profile.utils :as profile.utils] [status-im.contexts.shell.constants :as constants] [status-im.contexts.wallet.account.tabs.about.style :as style] + [status-im.contexts.wallet.add-account.create-account.utils :as create-account.utils] [status-im.contexts.wallet.common.utils :as utils] [utils.i18n :as i18n] [utils.re-frame :as rf])) @@ -103,5 +104,5 @@ :stored (if keypair-keycard? :on-keycard :on-device) :profile-picture (profile.utils/photo profile) :customization-color customization-color - :derivation-path path + :derivation-path (create-account.utils/normalize-path path) :keypair-name keypair-name}])])) diff --git a/src/status_im/contexts/wallet/add_account/create_account/utils.cljs b/src/status_im/contexts/wallet/add_account/create_account/utils.cljs index ad77728ae0..d9746a0432 100644 --- a/src/status_im/contexts/wallet/add_account/create_account/utils.cljs +++ b/src/status_im/contexts/wallet/add_account/create_account/utils.cljs @@ -1,5 +1,6 @@ (ns status-im.contexts.wallet.add-account.create-account.utils - (:require [status-im.constants :as constants])) + (:require [clojure.string :as string] + [status-im.constants :as constants])) (defn first-derived-account [account-data keypair-type] @@ -56,3 +57,13 @@ :derived-from address :last-used-derivation-index 0 :accounts [account-config]})) + +(defn legacy-path? + [s] + (re-matches #"m/\d+" s)) + +(defn normalize-path + [path] + (if (legacy-path? path) + (str constants/path-wallet-root "/" (last (string/split path "/"))) + path)) diff --git a/src/status_im/contexts/wallet/add_account/create_account/view.cljs b/src/status_im/contexts/wallet/add_account/create_account/view.cljs index 8c0ab7472d..0dc6e82155 100644 --- a/src/status_im/contexts/wallet/add_account/create_account/view.cljs +++ b/src/status_im/contexts/wallet/add_account/create_account/view.cljs @@ -12,6 +12,7 @@ [status-im.common.standard-authentication.core :as standard-auth] [status-im.constants :as constants] [status-im.contexts.wallet.add-account.create-account.style :as style] + [status-im.contexts.wallet.add-account.create-account.utils :as create-account.utils] [status-im.contexts.wallet.common.utils :as common.utils] [status-im.contexts.wallet.sheets.account-origin.view :as account-origin] [status-im.feature-flags :as ff] @@ -255,11 +256,12 @@ {:on-complete #(rf/dispatch [:keycard/connect-derive-address-and-add-account - {:pin % + {:pin % :derived-from-address derived-from - :key-uid key-uid - :derivation-path @derivation-path - :account-preferences preferences}])}]))) + :key-uid key-uid + :derivation-path (create-account.utils/normalize-path + @derivation-path) + :account-preferences preferences}])}]))) [derived-from])] (rn/use-effect #(rf/dispatch diff --git a/src/status_im/contexts/wallet/home/view.cljs b/src/status_im/contexts/wallet/home/view.cljs index 7c59149acf..77b453e9bf 100644 --- a/src/status_im/contexts/wallet/home/view.cljs +++ b/src/status_im/contexts/wallet/home/view.cljs @@ -15,24 +15,19 @@ (defn new-account [] - (let [keycard? (rf/sub [:keycard/keycard-profile?])] - [quo/action-drawer - [[{:icon :i/add - :accessibility-label :start-a-new-chat - :label (i18n/label :t/add-account) - :sub-label (i18n/label :t/add-account-description) - :on-press (fn [] - (if keycard? - (rf/dispatch [:keycard/feature-unavailable-show - {:feature-name :wallet.new-account}]) - (rf/dispatch [:navigate-to :screen/wallet.create-account])))} - (when (ff/enabled? ::ff/wallet.add-watched-address) - {:icon :i/reveal - :accessibility-label :add-a-contact - :label (i18n/label :t/add-address-to-watch) - :sub-label (i18n/label :t/add-address-to-watch-description) - :on-press #(rf/dispatch [:navigate-to :screen/wallet.add-address-to-watch]) - :add-divider? true})]]])) + [quo/action-drawer + [[{:icon :i/add + :accessibility-label :start-a-new-chat + :label (i18n/label :t/add-account) + :sub-label (i18n/label :t/add-account-description) + :on-press #(rf/dispatch [:navigate-to :screen/wallet.create-account])} + (when (ff/enabled? ::ff/wallet.add-watched-address) + {:icon :i/reveal + :accessibility-label :add-a-contact + :label (i18n/label :t/add-address-to-watch) + :sub-label (i18n/label :t/add-address-to-watch-description) + :on-press #(rf/dispatch [:navigate-to :screen/wallet.add-address-to-watch]) + :add-divider? true})]]]) (defn- new-account-card-data []