From f0079961f407a5ce56fdddba4b5a4e8b6fe6fe06 Mon Sep 17 00:00:00 2001 From: flexsurfer Date: Fri, 1 Nov 2024 12:48:07 +0100 Subject: [PATCH] =?UTF-8?q?[#21316]=20Keycard=20-=20Allow=20user=20to=20mi?= =?UTF-8?q?grate=20existing=20Profile=20to=20the=20new=20=E2=80=A6=20(#214?= =?UTF-8?q?67)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/images/ui2/keycard-buy.png | Bin 0 -> 15814 bytes .../images/ui2/keycard-migration-failed.png | Bin 0 -> 52144 bytes .../ui2/keycard-migration-succeeded.png | Bin 0 -> 45882 bytes resources/images/ui2/keycard-migration.png | Bin 0 -> 41301 bytes resources/images/ui2/not-keycard.png | Bin 0 -> 70756 bytes src/keycard/keycard.cljs | 22 ++- src/native_module/core.cljs | 13 +- src/quo/components/keycard/view.cljs | 2 +- src/quo/components/markdown/list/style.cljs | 6 +- src/quo/components/markdown/list/view.cljs | 2 +- .../text_combinations/page_top/style.cljs | 3 +- .../standard_title/view.cljs | 1 - .../metrics_confirmation_modal/style.cljs | 3 +- src/status_im/common/resources.cljs | 5 + .../enter_password/view.cljs | 8 +- .../password_input/view.cljs | 39 ++--- src/status_im/constants.cljs | 3 +- .../contexts/keycard/authorise/view.cljs | 18 +-- .../contexts/keycard/check/view.cljs | 23 +-- src/status_im/contexts/keycard/effects.cljs | 145 +++++------------- .../contexts/keycard/empty/view.cljs | 21 +-- .../contexts/keycard/error/view.cljs | 47 +++--- src/status_im/contexts/keycard/events.cljs | 139 ++++++++--------- .../contexts/keycard/login/events.cljs | 1 - .../contexts/keycard/migrate/events.cljs | 132 ++++++++++++++++ .../contexts/keycard/migrate/fail/view.cljs | 32 ++++ .../keycard/migrate/re_encrypting/events.cljs | 31 ++++ .../keycard/migrate/re_encrypting/view.cljs | 27 ++++ .../migrate => migrate/sheets}/view.cljs | 17 +- .../keycard/migrate/success/view.cljs | 31 ++++ .../contexts/keycard/migrate/view.cljs | 34 ++++ .../contexts/keycard/nfc/effects.cljs | 11 ++ .../contexts/keycard/nfc/events.cljs | 27 ++++ .../{nfc_sheet => nfc/sheets}/events.cljs | 2 +- .../{nfc_sheet => nfc/sheets}/view.cljs | 2 +- .../contexts/keycard/not_keycard/view.cljs | 38 ++--- .../contexts/keycard/pin/create/view.cljs | 22 ++- .../contexts/keycard/pin/events.cljs | 4 + src/status_im/contexts/keycard/pin/view.cljs | 14 +- .../contexts/keycard/sign/events.cljs | 30 ++-- src/status_im/contexts/keycard/utils.cljs | 74 ++++++--- .../contexts/profile/login/effects.cljs | 4 + .../contexts/profile/profiles/view.cljs | 47 ++++-- .../contexts/settings/keycard/view.cljs | 7 +- .../share_usage/view.cljs | 7 +- src/status_im/navigation/options.cljs | 6 - src/status_im/navigation/screens.cljs | 76 +++++++-- src/status_im/navigation/view.cljs | 2 +- translations/en.json | 20 +++ 49 files changed, 783 insertions(+), 415 deletions(-) create mode 100644 resources/images/ui2/keycard-buy.png create mode 100644 resources/images/ui2/keycard-migration-failed.png create mode 100644 resources/images/ui2/keycard-migration-succeeded.png create mode 100644 resources/images/ui2/keycard-migration.png create mode 100644 resources/images/ui2/not-keycard.png create mode 100644 src/status_im/contexts/keycard/migrate/events.cljs create mode 100644 src/status_im/contexts/keycard/migrate/fail/view.cljs create mode 100644 src/status_im/contexts/keycard/migrate/re_encrypting/events.cljs create mode 100644 src/status_im/contexts/keycard/migrate/re_encrypting/view.cljs rename src/status_im/contexts/keycard/{sheets/migrate => migrate/sheets}/view.cljs (58%) create mode 100644 src/status_im/contexts/keycard/migrate/success/view.cljs create mode 100644 src/status_im/contexts/keycard/migrate/view.cljs create mode 100644 src/status_im/contexts/keycard/nfc/effects.cljs create mode 100644 src/status_im/contexts/keycard/nfc/events.cljs rename src/status_im/contexts/keycard/{nfc_sheet => nfc/sheets}/events.cljs (95%) rename src/status_im/contexts/keycard/{nfc_sheet => nfc/sheets}/view.cljs (96%) diff --git a/resources/images/ui2/keycard-buy.png b/resources/images/ui2/keycard-buy.png new file mode 100644 index 0000000000000000000000000000000000000000..447aba87587e39d4b2389b9aa62d8df79b1f0b08 GIT binary patch literal 15814 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

@$&GpIA{)jRLl=qWC9N+C45R}W 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

@+O~GmTtN^ewaY)sY!!p<}I}~VJiN@v`WV1L_ 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

%+Hsrlr56(ByC?CXB(VBYvgM>0FzrDSyK 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

8JO?BrI@uf<)tVCB^Hz=fX(`f`O&5O9Wms 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 Hu0mjfPq!o3 literal 0 HcmV?d00001 diff --git a/resources/images/ui2/keycard-migration.png b/resources/images/ui2/keycard-migration.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd5ac2e4039414c8b415e5761f3ad277227dd85 GIT binary patch literal 41301 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 literal 0 HcmV?d00001 diff --git a/resources/images/ui2/not-keycard.png b/resources/images/ui2/not-keycard.png new file mode 100644 index 0000000000000000000000000000000000000000..a02ae5329c9c3f5cbb1c1dc10e938a3113cd0b8a GIT binary patch literal 70756 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 N;;3XpqV~f(DJ9XQu*NfT;2UpEKKQv#yG|%b6 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 literal 0 HcmV?d00001 diff --git a/src/keycard/keycard.cljs b/src/keycard/keycard.cljs index 7ea3692fe5..9820200093 100644 --- a/src/keycard/keycard.cljs +++ b/src/keycard/keycard.cljs @@ -3,8 +3,7 @@ ["react-native" :as rn] ["react-native-status-keycard" :default status-keycard] [react-native.platform :as platform] - [taoensso.timbre :as log] - [utils.address :as address])) + [taoensso.timbre :as log])) (defonce event-emitter (if platform/ios? @@ -94,22 +93,14 @@ [{:keys [on-success on-failure]}] (.. status-keycard (getApplicationInfo) - (then (fn [response] - (let [info (-> response - (js->clj :keywordize-keys true) - (update :key-uid address/normalized-hex))] - (on-success info)))) + (then on-success) (catch on-failure))) (defn factory-reset [{:keys [on-success on-failure]}] (.. status-keycard (factoryReset) - (then (fn [response] - (let [info (-> response - (js->clj :keywordize-keys true) - (update :key-uid address/normalized-hex))] - (on-success info)))) + (then on-success) (catch on-failure))) (defn install-applet @@ -155,6 +146,13 @@ (then on-success) (catch on-failure))) +(defn save-mnemonic + [{:keys [mnemonic pin on-success on-failure]}] + (.. status-keycard + (saveMnemonic mnemonic pin) + (then on-success) + (catch on-failure))) + (defn unblock-pin [{:keys [puk new-pin on-success on-failure]}] (when (and new-pin puk) diff --git a/src/native_module/core.cljs b/src/native_module/core.cljs index a279d1bcee..eb5be90c6d 100644 --- a/src/native_module/core.cljs +++ b/src/native_module/core.cljs @@ -508,17 +508,16 @@ new-password-hashed callback)))) -(defn convert-to-keycard-account - [{:keys [key-uid] :as multiaccount-data} settings current-password# new-password callback] - (log/debug "[native-module] convert-to-keycard-account") +(defn convert-to-keycard-profile + [{:keys [key-uid] :as profile} settings password new-password callback] (.convertToKeycardAccount ^js (encryption) key-uid - (types/clj->json multiaccount-data) + (types/clj->json profile) (types/clj->json settings) - "" - current-password# + (:keycard-instance-uid settings) + password new-password - callback)) + #(when callback (callback (types/json->clj %))))) (defn backup-disabled-data-dir [] diff --git a/src/quo/components/keycard/view.cljs b/src/quo/components/keycard/view.cljs index 11d801175d..4759830604 100644 --- a/src/quo/components/keycard/view.cljs +++ b/src/quo/components/keycard/view.cljs @@ -16,7 +16,7 @@ " [{:keys [holder-name locked?]}] (let [theme (quo.theme/use-theme) - label (if (boolean holder-name) + label (if holder-name (i18n/label :t/user-keycard {:name holder-name}) (i18n/label :t/empty-keycard))] [rn/view {:style (style/card-container locked? theme)} diff --git a/src/quo/components/markdown/list/style.cljs b/src/quo/components/markdown/list/style.cljs index 5680007380..aa3f645902 100644 --- a/src/quo/components/markdown/list/style.cljs +++ b/src/quo/components/markdown/list/style.cljs @@ -3,8 +3,10 @@ (defn container [container-style] (merge container-style - {:flex-direction :row - :align-items :flex-start})) + {:padding-vertical 7 + :padding-horizontal 20 + :flex-direction :row + :align-items :flex-start})) (def index {:margin-left 5}) diff --git a/src/quo/components/markdown/list/view.cljs b/src/quo/components/markdown/list/view.cljs index f86c434acf..f823cd8b2b 100644 --- a/src/quo/components/markdown/list/view.cljs +++ b/src/quo/components/markdown/list/view.cljs @@ -45,7 +45,7 @@ :or {type :bullet}}] (let [theme (quo.theme/use-theme)] [rn/view {:style (style/container container-style)} - [rn/view {:style style/index} + [rn/view (case type :step [step/view diff --git a/src/quo/components/text_combinations/page_top/style.cljs b/src/quo/components/text_combinations/page_top/style.cljs index 483a325fdd..87e4ece774 100644 --- a/src/quo/components/text_combinations/page_top/style.cljs +++ b/src/quo/components/text_combinations/page_top/style.cljs @@ -8,8 +8,7 @@ (def header {:flex-direction :row - :justify-content :space-between - :height 32}) + :justify-content :space-between}) (def header-title {:flex 1 diff --git a/src/quo/components/text_combinations/standard_title/view.cljs b/src/quo/components/text_combinations/standard_title/view.cljs index e9a13d796a..16e831d04b 100644 --- a/src/quo/components/text_combinations/standard_title/view.cljs +++ b/src/quo/components/text_combinations/standard_title/view.cljs @@ -59,7 +59,6 @@ [rn/view {:style (merge style/container container-style)} [text/text {:size :heading-1 - :number-of-lines 1 :weight :semi-bold :style style/text :accessibility-label accessibility-label} diff --git a/src/status_im/common/metrics_confirmation_modal/style.cljs b/src/status_im/common/metrics_confirmation_modal/style.cljs index 73843c0ba3..d2a07b5e72 100644 --- a/src/status_im/common/metrics_confirmation_modal/style.cljs +++ b/src/status_im/common/metrics_confirmation_modal/style.cljs @@ -7,8 +7,7 @@ :margin-bottom 8}) (def item-text - {:margin-top 10 - :margin-left -4}) + {:margin-left -24}) (def info-text {:margin-top -5}) diff --git a/src/status_im/common/resources.cljs b/src/status_im/common/resources.cljs index ec7ad142e0..a5969babae 100644 --- a/src/status_im/common/resources.cljs +++ b/src/status_im/common/resources.cljs @@ -22,6 +22,11 @@ :qr-code (js/require "../resources/images/ui2/qr-code.png") :keycard-logo (js/require "../resources/images/ui2/keycard-logo.png") :keycard-watermark (js/require "../resources/images/ui2/keycard-watermark.png") + :keycard-buy (js/require "../resources/images/ui2/keycard-buy.png") + :keycard-migration (js/require "../resources/images/ui2/keycard-migration.png") + :keycard-migration-failed (js/require "../resources/images/ui2/keycard-migration-failed.png") + :keycard-migration-succeeded (js/require "../resources/images/ui2/keycard-migration-succeeded.png") + :not-keycard (js/require "../resources/images/ui2/not-keycard.png") :discover (js/require "../resources/images/ui2/discover.png") :invite-friends (js/require "../resources/images/ui2/invite-friends.png") :transaction-progress (js/require "../resources/images/ui2/transaction-progress.png") diff --git a/src/status_im/common/standard_authentication/enter_password/view.cljs b/src/status_im/common/standard_authentication/enter_password/view.cljs index 398bf78a9a..ec3360c72e 100644 --- a/src/status_im/common/standard_authentication/enter_password/view.cljs +++ b/src/status_im/common/standard_authentication/enter_password/view.cljs @@ -1,9 +1,10 @@ (ns status-im.common.standard-authentication.enter-password.view (:require + [clojure.string :as string] [quo.core :as quo] [react-native.core :as rn] + [status-im.common.standard-authentication.core :as standard-authentication] [status-im.common.standard-authentication.enter-password.style :as style] - [status-im.common.standard-authentication.password-input.view :as password-input] [status-im.contexts.profile.utils :as profile.utils] [utils.i18n :as i18n] [utils.re-frame :as rf])) @@ -31,11 +32,12 @@ :full-name (profile.utils/displayed-name profile) :customization-color customization-color :size 24}]] - [password-input/view + [standard-authentication/password-input {:on-press-biometrics on-press-biometrics :blur? true :processing processing - :error error + :error {:error? (not (string/blank? error)) + :error-message error} :default-password password :sign-in-enabled? sign-in-enabled?}] [quo/button diff --git a/src/status_im/common/standard_authentication/password_input/view.cljs b/src/status_im/common/standard_authentication/password_input/view.cljs index 3f39d93616..1c9595d186 100644 --- a/src/status_im/common/standard_authentication/password_input/view.cljs +++ b/src/status_im/common/standard_authentication/password_input/view.cljs @@ -1,6 +1,5 @@ (ns status-im.common.standard-authentication.password-input.view (:require - [clojure.string :as string] [quo.core :as quo] [quo.foundations.colors :as colors] [quo.theme :as quo.theme] @@ -12,14 +11,6 @@ [utils.re-frame :as rf] [utils.security.core :as security])) -(defn- get-error-message - [error] - (if (and (some? error) - (or (= error "file is not a database") - (string/starts-with? (string/lower-case error) "failed"))) - (i18n/label :t/oops-wrong-password) - error)) - (defn- error-info [error-message processing shell?] (let [theme (quo.theme/use-theme) @@ -49,21 +40,21 @@ (i18n/label :t/forgot-password)]]])) (defn view - [{:keys [shell? on-press-biometrics blur?]}] - (let [{:keys [error processing]} (rf/sub [:profile/login]) - error-message (rn/use-memo #(get-error-message error) [error]) - error? (boolean (seq error-message)) - default-value (rn/use-ref-atom "") ;;bug on Android - ;;https://github.com/status-im/status-mobile/issues/19004 - theme (quo.theme/use-theme) - on-change-password (rn/use-callback - (fn [entered-password] - (reset! default-value entered-password) - (debounce/debounce-and-dispatch [:profile/on-password-input-changed - {:password (security/mask-data - entered-password) - :error ""}] - 100)))] + [{:keys [shell? on-press-biometrics blur? processing error]}] + (let [{:keys [error? + error-message]} error + default-value (rn/use-ref-atom "") ;;bug on Android + ;;https://github.com/status-im/status-mobile/issues/19004 + theme (quo.theme/use-theme) + on-change-password (rn/use-callback + (fn [entered-password] + (reset! default-value entered-password) + (debounce/debounce-and-dispatch + [:profile/on-password-input-changed + {:password (security/mask-data + entered-password) + :error ""}] + 100)))] [:<> [rn/view {:style {:flex-direction :row}} [quo/input diff --git a/src/status_im/constants.cljs b/src/status_im/constants.cljs index 3aa0e4afdf..f69b2bdbc7 100644 --- a/src/status_im/constants.cljs +++ b/src/status_im/constants.cljs @@ -580,13 +580,14 @@ (def ^:const sheet-screen-handle-height 20) (def ^:const status-hostname "status.app") +(def ^:const get-keycard-url "https://get.keycard.tech/") (def ^:const community-joined-notification-type "communityJoined") (def ^:const default-telemetry-server-url "https://telemetry.status.im") (def ^:const contact-item-height 56) - +(def ^:const page-nav-height 56) (def ^:const currency-item-height 64) (def ^:const slippages [0.1 0.5 1]) diff --git a/src/status_im/contexts/keycard/authorise/view.cljs b/src/status_im/contexts/keycard/authorise/view.cljs index 8c91198f9f..a5fa3d4f14 100644 --- a/src/status_im/contexts/keycard/authorise/view.cljs +++ b/src/status_im/contexts/keycard/authorise/view.cljs @@ -4,20 +4,18 @@ [status-im.common.events-helper :as events-helper] [status-im.common.standard-authentication.core :as standard-auth] [utils.i18n :as i18n] - [utils.re-frame :as rf] - [utils.security.core :as security])) + [utils.re-frame :as rf])) (defn view [] - (let [profile-name (rf/sub [:profile/name]) - profile-picture (rf/sub [:profile/image]) - customization-color (rf/sub [:profile/customization-color])] + (let [profile-name (rf/sub [:profile/name]) + profile-picture (rf/sub [:profile/image]) + customization-color (rf/sub [:profile/customization-color]) + {:keys [on-success]} (rf/sub [:get-screen-params])] [:<> [quo/page-nav - {:key :header - :background :blur - :icon-name :i/close - :on-press events-helper/navigate-back}] + {:icon-name :i/close + :on-press events-helper/navigate-back}] [quo/page-top {:title (i18n/label :t/authorise-with-password) :description :context-tag @@ -31,5 +29,5 @@ :container-style {} :customization-color customization-color :track-text (i18n/label :t/slide-to-authorise) - :on-auth-success #(println "TBD" (security/safe-unmask-data %)) + :on-auth-success #(when on-success (on-success %)) :auth-button-label (i18n/label :t/confirm)}]]])) diff --git a/src/status_im/contexts/keycard/check/view.cljs b/src/status_im/contexts/keycard/check/view.cljs index 07d387a5f0..a69fdc2b35 100644 --- a/src/status_im/contexts/keycard/check/view.cljs +++ b/src/status_im/contexts/keycard/check/view.cljs @@ -10,10 +10,8 @@ [] [:<> [quo/page-nav - {:key :header - :background :blur - :icon-name :i/arrow-left - :on-press events-helper/navigate-back}] + {:icon-name :i/arrow-left + :on-press events-helper/navigate-back}] [quo/page-top {:title (i18n/label :t/check-keycard) :description :text @@ -23,14 +21,9 @@ {:resize-mode :contain :source (resources/get-image :check-your-keycard)}]] [quo/divider-label (i18n/label :t/tips-scan-keycard)] - [rn/view {:style {:padding-horizontal 10}} - [quo/markdown-list - {:container-style {:padding-vertical 10} - :description (i18n/label :t/remove-phone-case)}] - [quo/markdown-list - {:container-style {:padding-bottom 25} - :description (i18n/label :t/keep-card-steady)}]] - [quo/button - {:on-press #(rf/dispatch [:keycard/connect]) - :container-style {:margin-horizontal 20}} - (i18n/label :t/ready-to-scan)]]) + [quo/markdown-list {:description (i18n/label :t/remove-phone-case)}] + [quo/markdown-list {:description (i18n/label :t/keep-card-steady)}] + [quo/bottom-actions + {:actions :one-action + :button-one-label (i18n/label :t/ready-to-scan) + :button-one-props {:on-press #(rf/dispatch [:keycard/migration.check-empty-card])}}]]) diff --git a/src/status_im/contexts/keycard/effects.cljs b/src/status_im/contexts/keycard/effects.cljs index 04fe3858ec..05bebd4777 100644 --- a/src/status_im/contexts/keycard/effects.cljs +++ b/src/status_im/contexts/keycard/effects.cljs @@ -3,10 +3,10 @@ [native-module.core :as native-module] [react-native.async-storage :as async-storage] [react-native.platform :as platform] + status-im.contexts.keycard.nfc.effects + [status-im.contexts.keycard.utils :as keycard.utils] [status-im.contexts.profile.config :as profile.config] - [taoensso.timbre :as log] - [utils.re-frame :as rf] - [utils.transforms :as transforms])) + [utils.re-frame :as rf])) (defonce ^:private active-listeners (atom [])) @@ -32,106 +32,45 @@ (rf/reg-fx :effects.keycard/register-card-events register-card-events) (rf/reg-fx :effects.keycard/unregister-card-events unregister-card-events) -(defn check-nfc-enabled - [] - (log/debug "[keycard] check-nfc-enabled") - (keycard/check-nfc-enabled - {:on-success - (fn [response] - (log/debug "[keycard response] check-nfc-enabled") - (rf/dispatch [:keycard/on-check-nfc-enabled-success response]))})) -(rf/reg-fx :effects.keycard/check-nfc-enabled check-nfc-enabled) +(rf/reg-fx :effects.keycard/get-application-info + (fn [args] + (keycard/get-application-info (keycard.utils/wrap-handlers args)))) + +(rf/reg-fx :effects.keycard/get-keys + (fn [args] + (keycard/get-keys (keycard.utils/wrap-handlers args)))) + +(rf/reg-fx :effects.keycard/sign + (fn [args] + (keycard/sign (keycard.utils/wrap-handlers args)))) + +(rf/reg-fx :keycard/init-card + (fn [args] + (keycard/init-card (keycard.utils/wrap-handlers args)))) + +(rf/reg-fx :effects.keycard/generate-and-load-key + (fn [args] + (keycard/generate-and-load-key (keycard.utils/wrap-handlers args)))) + +(rf/reg-fx :effects.keycard/login-with-keycard + (fn [{:keys [key-uid password whisper-private-key]}] + (native-module/login-account + (assoc (profile.config/login) + :keyUid key-uid + :password password + :keycardWhisperPrivateKey whisper-private-key)))) + +(rf/reg-fx :effects.keycard/set-pairing-to-keycard + (fn [pairings] + (keycard/set-pairings pairings))) (rf/reg-fx - :effects.keycard.ios/start-nfc - (fn [args] - (log/debug "fx start-nfc") - (keycard/start-nfc args))) + :keycard/persist-pairings + (fn [pairings] + (async-storage/set-item! "status-keycard-pairings" pairings))) -(rf/reg-fx - :effects.keycard.ios/stop-nfc - (fn [args] - (log/debug "fx stop-nfc") - (keycard/stop-nfc args))) - -(defn- error-object->map - [^js object] - {:code (.-code object) - :error (.-message object)}) - -(defn get-application-info - [{:keys [on-success on-failure] :as args}] - (log/debug "[keycard] get-application-info") - (keycard/get-application-info - (assoc - args - :on-success - (fn [response] - (log/debug "[keycard response succ] get-application-info") - (when on-success - (on-success response))) - :on-failure - (fn [response] - (log/error "[keycard response fail] get-application-info") - (when on-failure - (on-failure (error-object->map response))))))) -(rf/reg-fx :effects.keycard/get-application-info get-application-info) - -(defn get-keys - [{:keys [on-success on-failure] :as args}] - (log/debug "[keycard] get-keys") - (keycard/get-keys - (assoc - args - :on-success - (fn [response] - (log/debug "[keycard response succ] get-keys") - (when on-success - (on-success (transforms/js->clj response)))) - :on-failure - (fn [response] - (log/warn "[keycard response fail] get-keys" - (error-object->map response)) - (when on-failure - (on-failure (error-object->map response))))))) -(rf/reg-fx :effects.keycard/get-keys get-keys) - -(defn login - [{:keys [key-uid password whisper-private-key]}] - (native-module/login-account - (assoc (profile.config/login) - :keyUid key-uid - :password password - :keycardWhisperPrivateKey whisper-private-key))) -(rf/reg-fx :effects.keycard/login-with-keycard login) - -(defn retrieve-pairings - [] - (async-storage/get-item - "status-keycard-pairings" - #(rf/dispatch [:keycard/on-retrieve-pairings-success %]))) -(rf/reg-fx :effects.keycard/retrieve-pairings retrieve-pairings) - -(defn set-pairing-to-keycard - [pairings] - (keycard/set-pairings pairings)) -(rf/reg-fx :effects.keycard/set-pairing-to-keycard set-pairing-to-keycard) - -(defn sign - [{:keys [on-success on-failure] :as args}] - (log/debug "[keycard] sign") - (keycard/sign - (assoc - args - :on-success - (fn [response] - (log/debug "[keycard response succ] sign") - (when on-success - (on-success (transforms/js->clj response)))) - :on-failure - (fn [response] - (log/warn "[keycard response fail] sign" - (error-object->map response)) - (when on-failure - (on-failure (error-object->map response))))))) -(rf/reg-fx :effects.keycard/sign sign) +(rf/reg-fx :effects.keycard/retrieve-pairings + (fn [] + (async-storage/get-item + "status-keycard-pairings" + #(rf/dispatch [:keycard/on-retrieve-pairings-success %])))) diff --git a/src/status_im/contexts/keycard/empty/view.cljs b/src/status_im/contexts/keycard/empty/view.cljs index 6155fbff03..500d2ed162 100644 --- a/src/status_im/contexts/keycard/empty/view.cljs +++ b/src/status_im/contexts/keycard/empty/view.cljs @@ -3,7 +3,7 @@ [react-native.core :as rn] [status-im.common.events-helper :as events-helper] [status-im.common.resources :as resources] - [status-im.contexts.keycard.sheets.migrate.view :as sheets.migrate] + [status-im.contexts.keycard.migrate.sheets.view :as sheets.migrate] [utils.i18n :as i18n] [utils.re-frame :as rf])) @@ -11,10 +11,8 @@ [] [:<> [quo/page-nav - {:key :header - :background :blur - :icon-name :i/arrow-left - :on-press events-helper/navigate-back}] + {:icon-name :i/close + :on-press events-helper/navigate-back}] [quo/page-top {:title (i18n/label :t/keycard-empty) :description :text @@ -26,10 +24,15 @@ :subtitle (i18n/label :t/use-keycard-login-sign) :button-label (i18n/label :t/import-profile-key-pair) :accessibility-label :get-keycard - :image (resources/get-image :generate-keys) - :on-press #(rf/dispatch [:show-bottom-sheet - {:theme :dark - :content (fn [] [sheets.migrate/view])}])}]] + :image (resources/get-image :keycard-buy) + :on-press (fn [] + (rf/dispatch + [:show-bottom-sheet + {:theme :dark + :content (fn [] + [sheets.migrate/view + {:on-continue #(rf/dispatch + [:keycard/migration.get-phrase])}])}]))}]] [quo/information-box {:type :default :style {:margin-top 32 :margin-horizontal 28}} diff --git a/src/status_im/contexts/keycard/error/view.cljs b/src/status_im/contexts/keycard/error/view.cljs index 3f023cdcf7..2da99270cb 100644 --- a/src/status_im/contexts/keycard/error/view.cljs +++ b/src/status_im/contexts/keycard/error/view.cljs @@ -1,42 +1,37 @@ (ns status-im.contexts.keycard.error.view (:require [quo.core :as quo] [react-native.core :as rn] - [react-native.safe-area :as safe-area] [status-im.common.events-helper :as events-helper] + [utils.i18n :as i18n] [utils.re-frame :as rf])) (def titles - {:keycard/error.keycard-wrong {:title "Keycard is not empty" - :description "You can’t use it to store new keys right now"} - :keycard/error.keycard-unpaired {:title "Keycard is full" - :description "All pairing slots are occupied"} - :keycard/error.keycard-frozen {:title "Keycard is locked" - :description "You can’t use it right now"} - :keycard/error.keycard-locked {:title "Keycard is locked" - :description "You can’t use it right now"}}) + {:keycard/error.keycard-blank {:title (i18n/label :t/keycard-empty) + :description (i18n/label :t/no-key-pair-keycard)} + :keycard/error.keycard-wrong-profile {:title (i18n/label :t/keycard-not-empty) + :description (i18n/label :t/cant-store-new-keys)} + :keycard/error.keycard-unpaired {:title (i18n/label :t/keycard-full) + :description (i18n/label :t/pairing-slots-occupied)} + :keycard/error.keycard-frozen {:title (i18n/label :t/keycard-locked) + :description (i18n/label :t/cant-use-right-now)} + :keycard/error.keycard-locked {:title (i18n/label :t/keycard-locked) + :description (i18n/label :t/cant-use-right-now)}}) (defn view [] - (let [{:keys [top bottom]} (safe-area/get-insets) - error (rf/sub [:keycard/application-info-error]) + (let [error (rf/sub [:keycard/application-info-error]) {:keys [title description]} (get titles error)] - [quo/overlay - {:type :shell - :container-style {:padding-top top - :padding-bottom bottom}} + [:<> [quo/page-nav - {:key :header - :background :blur - :icon-name :i/arrow-left - :on-press events-helper/navigate-back}] + {:icon-name :i/close + :on-press events-helper/navigate-back}] [quo/page-top {:title title :description :text :description-text description}] - [rn/view {:height 226}] - [rn/view {:padding-horizontal 20} - [quo/info-message - {:container-style {:padding-top 15} - :icon :i/info - :size :default} - "To unlock or factory reset the Keycard, please use the Status desktop app. If you'd like this features on mobile, feel free to upvote them and discuss in the Status community."]]])) + [rn/view {:style {:margin-horizontal 20}} + [quo/keycard {:holder-name ""}] + [quo/information-box + {:type :default + :style {:margin-top 20}} + (i18n/label :t/unlock-reset-instructions)]]])) diff --git a/src/status_im/contexts/keycard/events.cljs b/src/status_im/contexts/keycard/events.cljs index f6be5b6dc9..19add51959 100644 --- a/src/status_im/contexts/keycard/events.cljs +++ b/src/status_im/contexts/keycard/events.cljs @@ -1,116 +1,117 @@ (ns status-im.contexts.keycard.events (:require [re-frame.core :as rf] status-im.contexts.keycard.login.events - status-im.contexts.keycard.nfc-sheet.events + status-im.contexts.keycard.migrate.events + status-im.contexts.keycard.migrate.re-encrypting.events + status-im.contexts.keycard.nfc.events + status-im.contexts.keycard.nfc.sheets.events status-im.contexts.keycard.pin.events status-im.contexts.keycard.sign.events [status-im.contexts.keycard.utils :as keycard.utils] - [taoensso.timbre :as log])) - -(rf/reg-event-fx :keycard/on-check-nfc-enabled-success - (fn [{:keys [db]} [nfc-enabled?]] - {:db (assoc-in db [:keycard :nfc-enabled?] nfc-enabled?)})) - -(rf/reg-event-fx :keycard.ios/on-nfc-user-cancelled - (fn [{:keys [db]}] - (log/debug "[keycard] nfc user cancelled") - {:db (-> db - (assoc-in [:keycard :pin :status] nil) - (assoc-in [:keycard :on-nfc-cancelled-event-vector] nil)) - :fx [(when-let [on-nfc-cancelled-event-vector (get-in db [:keycard :on-nfc-cancelled-event-vector])] - [:dispatch on-nfc-cancelled-event-vector])]})) + utils.datetime)) (rf/reg-event-fx :keycard/on-card-connected (fn [{:keys [db]} _] - (log/debug "[keycard] card globally connected") {:db (assoc-in db [:keycard :card-connected?] true) :fx [(when-let [event (get-in db [:keycard :on-card-connected-event-vector])] [:dispatch event])]})) (rf/reg-event-fx :keycard/on-card-disconnected (fn [{:keys [db]} _] - (log/debug "[keycard] card disconnected") {:db (assoc-in db [:keycard :card-connected?] false) :fx [(when-let [event (get-in db [:keycard :on-card-disconnected-event-vector])] [:dispatch event])]})) -(rf/reg-event-fx :keycard.ios/start-nfc - (fn [_] - {:effects.keycard.ios/start-nfc nil})) - -(rf/reg-event-fx :keycard.ios/on-nfc-timeout - (fn [{:keys [db]} _] - (log/debug "[keycard] nfc timeout") - {:db (assoc-in db [:keycard :card-connected?] false) - :fx [[:dispatch-later [{:ms 500 :dispatch [:keycard.ios/start-nfc]}]]]})) - (rf/reg-event-fx :keycard/on-retrieve-pairings-success (fn [{:keys [db]} [pairings]] {:db (assoc-in db [:keycard :pairings] pairings) :fx [[:effects.keycard/set-pairing-to-keycard pairings]]})) -(rf/reg-event-fx :keycard.ios/on-start-nfc-success - (fn [{:keys [db]} [{:keys [on-cancel-event-vector]}]] - (log/debug "[keycard] nfc started success") - {:db (assoc-in db [:keycard :on-nfc-cancelled-event-vector] on-cancel-event-vector)})) +(rf/reg-event-fx :keycard/update-pairings + (fn [{:keys [db]} [instance-uid pairing]] + (let [pairings (get-in db [:keycard :pairings]) + new-pairings (assoc pairings + instance-uid + {:pairing pairing + :paired-on (utils.datetime/timestamp)})] + {:db (assoc-in db [:keycard :pairings] new-pairings) + :keycard/persist-pairings new-pairings}))) (rf/reg-event-fx :keycard/on-action-with-pin-error (fn [{:keys [db]} [error]] - (log/debug "[keycard] on-action-with-pin-error: " error) (let [tag-was-lost? (keycard.utils/tag-lost? (:error error)) pin-retries-count (keycard.utils/pin-retries (:error error))] - (if tag-was-lost? + (if (or tag-was-lost? (nil? pin-retries-count)) {:db (assoc-in db [:keycard :pin :status] nil)} - (if (nil? pin-retries-count) - {:effects.utils/show-popup {:title "wrong-keycard"}} - {:db (-> db - (assoc-in [:keycard :application-info :pin-retry-counter] pin-retries-count) - (assoc-in [:keycard :pin :status] :error)) - :fx [[:dispatch [:keycard/disconnect]] - (when (zero? pin-retries-count) - [:effects.utils/show-popup {:title "frozen-keycard"}])]}))))) - -(rf/reg-event-fx :keycard/on-get-application-info-success - (fn [{:keys [db]} [application-info {:keys [key-uid on-success-fx]}]] - (if-let [error (keycard.utils/validate-application-info key-uid application-info)] - (case error - :keycard/error.not-keycard - {:fx [[:dispatch [:keycard/disconnect]] - [:dispatch [:open-modal :screen/keycard.not-keycard]]]} - :keycard/error.keycard-blank - {:fx [[:dispatch [:keycard/disconnect]] - [:dispatch [:open-modal :screen/keycard.empty]]]} - {:db (assoc-in db [:keycard :application-info-error] error) + {:db (-> db + (assoc-in [:keycard :application-info :pin-retry-counter] pin-retries-count) + (assoc-in [:keycard :pin :status] :error)) :fx [[:dispatch [:keycard/disconnect]] - [:dispatch [:open-modal :screen/keycard.error]]]}) - {:db (-> db - (assoc-in [:keycard :application-info] application-info) - (assoc-in [:keycard :pin :status] :verifying)) - :fx on-success-fx}))) + (when (zero? pin-retries-count) + [:dispatch + [:keycard/on-application-info-error + :keycard/error.keycard-locked]])]})))) -(rf/reg-event-fx :keycard/get-application-info - (fn [_ [{:keys [on-success on-failure]}]] - {:effects.keycard/get-application-info {:on-success on-success :on-failure on-failure}})) +(rf/reg-event-fx :keycard/get-keys + (fn [_ [data]] + {:effects.keycard/get-keys data})) (rf/reg-event-fx :keycard/cancel-connection (fn [{:keys [db]}] - {:db (-> db - (assoc-in [:keycard :on-card-connected-event-vector] nil) - (assoc-in [:keycard :on-nfc-cancelled-event-vector] nil))})) + {:db (update db :keycard dissoc :on-card-connected-event-vector :on-nfc-cancelled-event-vector)})) (rf/reg-event-fx :keycard/disconnect (fn [_ _] {:fx [[:dispatch [:keycard/cancel-connection]] [:dispatch [:keycard/hide-connection-sheet]]]})) +(rf/reg-event-fx :keycard/on-application-info-error + (fn [{:keys [db]} [error]] + {:db (assoc-in db [:keycard :application-info-error] error) + :fx [[:dispatch [:keycard/disconnect]] + [:dispatch + [:open-modal + (if (= :keycard/error.not-keycard error) + :screen/keycard.not-keycard + :screen/keycard.error)]]]})) + +(rf/reg-event-fx :keycard/update-application-info + (fn [{:keys [db]} [app-info]] + {:db (update db + :keycard + #(-> % + (assoc :application-info app-info) + (dissoc :application-info-error)))})) + +(rf/reg-event-fx :keycard/get-application-info + (fn [_ [{:keys [key-uid on-success on-error]}]] + {:effects.keycard/get-application-info + {:on-success (fn [{:keys [instance-uid new-pairing] :as app-info}] + (rf/dispatch [:keycard/update-application-info app-info]) + (when (and instance-uid new-pairing) + (rf/dispatch [:keycard/update-pairings instance-uid new-pairing])) + (if-let [error (keycard.utils/validate-application-info key-uid app-info)] + (if on-error + (on-error error) + (rf/dispatch [:keycard/on-application-info-error error])) + (when on-success (on-success app-info)))) + :on-error (fn [] + (if on-error + (on-error :keycard/error.not-keycard) + (rf/dispatch [:keycard/on-application-info-error + :keycard/error.not-keycard])))}})) + (rf/reg-event-fx :keycard/connect - (fn [{:keys [db]} [args]] - (let [connected? (get-in db [:keycard :card-connected?]) - event-vector [:keycard/get-application-info - {:on-success #(rf/dispatch [:keycard/on-get-application-info-success % args])}]] + (fn [{:keys [db]} [{:keys [key-uid on-success on-error on-connect-event-vector]}]] + (let [event-vector + (or on-connect-event-vector + [:keycard/get-application-info + {:key-uid key-uid + :on-success on-success + :on-error on-error}])] {:db (assoc-in db [:keycard :on-card-connected-event-vector] event-vector) :fx [[:dispatch [:keycard/show-connection-sheet {:on-cancel-event-vector [:keycard/cancel-connection]}]] - (when connected? + (when (get-in db [:keycard :card-connected?]) [:dispatch event-vector])]}))) diff --git a/src/status_im/contexts/keycard/login/events.cljs b/src/status_im/contexts/keycard/login/events.cljs index e5cc657a1c..bb6026bd00 100644 --- a/src/status_im/contexts/keycard/login/events.cljs +++ b/src/status_im/contexts/keycard/login/events.cljs @@ -5,7 +5,6 @@ (fn [{:keys [db]} [data]] (let [{:keys [key-uid encryption-public-key whisper-private-key]} data - key-uid (str "0x" key-uid) profile (get-in db [:profile/profiles-overview key-uid])] {:db (-> db diff --git a/src/status_im/contexts/keycard/migrate/events.cljs b/src/status_im/contexts/keycard/migrate/events.cljs new file mode 100644 index 0000000000..29583cead3 --- /dev/null +++ b/src/status_im/contexts/keycard/migrate/events.cljs @@ -0,0 +1,132 @@ +(ns status-im.contexts.keycard.migrate.events + (:require [clojure.string :as string] + [status-im.contexts.keycard.pin.view :as keycard.pin] + [utils.re-frame :as rf] + [utils.security.core :as security])) + +(rf/reg-event-fx :keycard/migration.check-empty-card + (fn [{:keys [db]}] + {:fx [[:dispatch + [:keycard/connect + {:key-uid (get-in db [:profile/profile :key-uid]) + :on-success + (fn [] + ;;TODO keys already on the keycard, new flow needs to be implemented + ;; https://github.com/status-im/status-mobile/issues/21446 + (rf/dispatch [:keycard/disconnect]) + (rf/dispatch [:open-modal :screen/keycard.authorise + {:on-success + #(rf/dispatch [:keycard/migration.authorisation-success %])}])) + :on-error + (fn [error] + (if (= error :keycard/error.keycard-blank) + (do + (rf/dispatch [:keycard/disconnect]) + (rf/dispatch [:open-modal :screen/keycard.empty])) + (rf/dispatch [:keycard/on-application-info-error error])))}]]]})) + +(defn get-application-info-and-continue + [key-uid] + (rf/dispatch [:keycard/get-application-info + {:key-uid key-uid + :on-success #(rf/dispatch [:keycard/migration.continue]) + :on-error + (fn [error] + (if (= error :keycard/error.keycard-blank) + (rf/dispatch [:keycard/migration.continue]) + (rf/dispatch [:keycard/on-application-info-error error])))}])) + +(rf/reg-event-fx :keycard/migration.continue + (fn [{:keys [db]}] + (let [key-uid (get-in db [:profile/profile :key-uid]) + {:keys [initialized? has-master-key?]} (get-in db [:keycard :application-info]) + {:keys [masked-phrase pin]} (get-in db [:keycard :migration]) + on-failure (fn [] + (rf/dispatch [:keycard/disconnect]) + (rf/dispatch [:navigate-to + :screen/keycard.migrate.fail]))] + (cond + + (not initialized?) + {:fx [[:keycard/init-card + {:pin pin + :on-success #(get-application-info-and-continue key-uid) + :on-failure on-failure}]]} + + (not has-master-key?) + {:fx [[:effects.keycard/generate-and-load-key + {:mnemonic (security/safe-unmask-data masked-phrase) + :pin pin + :on-success #(get-application-info-and-continue key-uid) + :on-failure on-failure}]]} + + :else + {:fx [[:effects.keycard/get-keys + {:pin pin + :on-success #(rf/dispatch [:keycard/migration.convert-to-keycard-profile %]) + :on-failure on-failure}]]})))) + +(rf/reg-event-fx :keycard/migration.start + (fn [{:keys [db]}] + {:fx [[:dispatch + [:keycard/connect + {:key-uid (get-in db [:profile/profile :key-uid]) + :on-success #(rf/dispatch [:keycard/migration.continue]) + :on-error + (fn [error] + (if (= error :keycard/error.keycard-blank) + (rf/dispatch [:keycard/migration.continue]) + (rf/dispatch [:keycard/on-application-info-error error])))}]]]})) + +(rf/reg-event-fx :keycard/migration.get-phrase + (fn [{:keys [db]}] + {:db (assoc-in db [:keycard :migration] nil) + :fx [[:dispatch [:navigate-back]] + (if (string/blank? (get-in db [:profile/profile :mnemonic])) + [:dispatch + [:open-modal :screen/use-recovery-phrase + {:on-success #(rf/dispatch [:keycard/migration.phrase-entered %])}]] + [:dispatch + [:open-modal :screen/backup-recovery-phrase + {:on-success #(rf/dispatch [:keycard/migration.phrase-backed-up %])}]])]})) + +(rf/reg-event-fx :keycard/migration.phrase-entered + (fn [{:keys [db]} [{:keys [phrase]}]] + {:db (assoc-in db [:keycard :migration :masked-phrase] (security/mask-data phrase)) + :fx [[:dispatch [:navigate-back]] + [:dispatch + [:open-modal :screen/keycard.authorise + {:on-success #(rf/dispatch [:keycard/migration.authorisation-success %])}]]]})) + +(rf/reg-event-fx :keycard/migration.phrase-backed-up + (fn [{:keys [db]}] + {:db (assoc-in db + [:keycard :migration :masked-phrase] + (security/mask-data (get-in db [:profile/profile :mnemonic]))) + :fx [[:dispatch [:profile.settings/profile-update :mnemonic nil]] + [:dispatch [:navigate-back]] + [:dispatch + [:open-modal :screen/keycard.authorise + {:on-success #(rf/dispatch [:keycard/migration.authorisation-success %])}]]]})) + +(rf/reg-event-fx :keycard/migration.authorisation-success + (fn [{:keys [db]} [masked-password]] + (let [{:keys [initialized?]} (get-in db [:keycard :application-info])] + {:db (assoc-in db [:keycard :migration :masked-password] masked-password) + :fx [[:dispatch [:navigate-back]] + (if initialized? + [:dispatch + [:show-bottom-sheet + {:content (fn [] + [keycard.pin/auth + {:on-complete #(rf/dispatch [:keycard/migration.pin-created %])}])}]] + [:dispatch + [:open-modal :screen/keycard.pin.create + {:on-complete (fn [new-pin] + (rf/dispatch [:navigate-back]) + (rf/dispatch [:keycard/migration.pin-created new-pin]))}]])]}))) + +(rf/reg-event-fx :keycard/migration.pin-created + (fn [{:keys [db]} [pin]] + {:db (assoc-in db [:keycard :migration :pin] pin) + :fx [[:dispatch [:open-modal :screen/keycard.migrate]]]})) diff --git a/src/status_im/contexts/keycard/migrate/fail/view.cljs b/src/status_im/contexts/keycard/migrate/fail/view.cljs new file mode 100644 index 0000000000..b594dbbee3 --- /dev/null +++ b/src/status_im/contexts/keycard/migrate/fail/view.cljs @@ -0,0 +1,32 @@ +(ns status-im.contexts.keycard.migrate.fail.view + (:require [quo.core :as quo] + [react-native.core :as rn] + [status-im.common.resources :as resources] + [status-im.constants :as constants] + [utils.i18n :as i18n] + [utils.re-frame :as rf])) + +(defn view + [] + (let [profile-name (rf/sub [:profile/name]) + profile-picture (rf/sub [:profile/image]) + customization-color (rf/sub [:profile/customization-color])] + [:<> + [quo/page-top + {:title (i18n/label :t/failed-to-migrate-key-pair) + :description :context-tag + :context-tag {:full-name profile-name + :profile-picture profile-picture + :customization-color customization-color} + :container-style {:margin-top constants/page-nav-height}}] + [rn/view {:style {:flex 1 :align-items :center :justify-content :center}} + [rn/image + {:resize-mode :contain + :source (resources/get-image :keycard-migration-failed)}]] + [quo/divider-label (i18n/label :t/what-you-can-do)] + [quo/markdown-list {:description (i18n/label :t/log-out-remove-profile)}] + [quo/markdown-list {:description (i18n/label :t/recover-status-profile)}] + [quo/bottom-actions + {:actions :one-action + :button-one-label (i18n/label :t/log-out-remove) + :button-one-props {:on-press #(rf/dispatch [:logout])}}]])) diff --git a/src/status_im/contexts/keycard/migrate/re_encrypting/events.cljs b/src/status_im/contexts/keycard/migrate/re_encrypting/events.cljs new file mode 100644 index 0000000000..69a8df5a6d --- /dev/null +++ b/src/status_im/contexts/keycard/migrate/re_encrypting/events.cljs @@ -0,0 +1,31 @@ +(ns status-im.contexts.keycard.migrate.re-encrypting.events + (:require [clojure.string :as string] + [utils.re-frame :as rf] + [utils.security.core :as security])) + +(rf/reg-event-fx :keycard/migration.convert-to-keycard-profile + (fn [{:keys [db]} [{:keys [key-uid instance-uid encryption-public-key]}]] + (let [{:keys [masked-password]} (get-in db [:keycard :migration]) + {:keys [pairing paired-on]} (get-in db [:keycard :pairings instance-uid]) + {:keys [kdfIterations]} (:profile/profile db)] + {:fx [[:dispatch [:keycard/disconnect]] + [:dispatch [:navigate-back]] + [:dispatch [:open-modal :screen/keycard.re-encrypting]] + [:effects.profile/convert-to-keycard-profile + {:profile + {:key-uid key-uid + :keycard-pairing pairing + :kdfIterations kdfIterations} + :settings + {:keycard-instance-uid instance-uid + :keycard-paired-on paired-on + :keycard-pairing pairing} + :password + (security/safe-unmask-data masked-password) + :new-password + encryption-public-key + :callback + (fn [{:keys [error]}] + (if (string/blank? error) + (rf/dispatch [:navigate-to :screen/keycard.migrate.success]) + (rf/dispatch [:navigate-to :screen/keycard.migrate.fail])))}]]}))) diff --git a/src/status_im/contexts/keycard/migrate/re_encrypting/view.cljs b/src/status_im/contexts/keycard/migrate/re_encrypting/view.cljs new file mode 100644 index 0000000000..bea83c3fd3 --- /dev/null +++ b/src/status_im/contexts/keycard/migrate/re_encrypting/view.cljs @@ -0,0 +1,27 @@ +(ns status-im.contexts.keycard.migrate.re-encrypting.view + (:require [quo.core :as quo] + [react-native.core :as rn] + [status-im.common.resources :as resources] + [status-im.constants :as constants] + [utils.i18n :as i18n] + [utils.re-frame :as rf])) + +(defn view + [] + (let [profile-name (rf/sub [:profile/name]) + profile-picture (rf/sub [:profile/image]) + customization-color (rf/sub [:profile/customization-color])] + [:<> + [quo/page-top + {:title (i18n/label :t/re-encrypting-data) + :description :context-tag + :context-tag {:full-name profile-name + :profile-picture profile-picture + :customization-color customization-color} + :container-style {:margin-top constants/page-nav-height}}] + [quo/text {:style {:padding-horizontal 20}} + (i18n/label :t/do-not-quit)] + [rn/view {:style {:flex 1 :align-items :center :justify-content :center}} + [rn/image + {:resize-mode :contain + :source (resources/get-image :keycard-migration)}]]])) diff --git a/src/status_im/contexts/keycard/sheets/migrate/view.cljs b/src/status_im/contexts/keycard/migrate/sheets/view.cljs similarity index 58% rename from src/status_im/contexts/keycard/sheets/migrate/view.cljs rename to src/status_im/contexts/keycard/migrate/sheets/view.cljs index 60b038df3b..886aef4654 100644 --- a/src/status_im/contexts/keycard/sheets/migrate/view.cljs +++ b/src/status_im/contexts/keycard/migrate/sheets/view.cljs @@ -1,15 +1,14 @@ -(ns status-im.contexts.keycard.sheets.migrate.view +(ns status-im.contexts.keycard.migrate.sheets.view (:require [quo.core :as quo] [react-native.core :as rn] [utils.i18n :as i18n] [utils.re-frame :as rf])) (defn view - [] - (let [profile-name (rf/sub [:profile/name]) - profile-picture (rf/sub [:profile/image]) - customization-color (rf/sub [:profile/customization-color]) - recovery-phrase-backed-up? (rf/sub [:profile/recovery-phrase-backed-up?])] + [{:keys [on-continue]}] + (let [profile-name (rf/sub [:profile/name]) + profile-picture (rf/sub [:profile/image]) + customization-color (rf/sub [:profile/customization-color])] [:<> [quo/drawer-top {:type :context-tag @@ -28,11 +27,7 @@ [quo/bottom-actions {:actions :two-actions :button-one-label (i18n/label :t/continue) - :button-one-props {:on-press #(if recovery-phrase-backed-up? - (rf/dispatch [:open-modal :screen/use-recovery-phrase - {:on-success (fn [])}]) - (rf/dispatch [:open-modal :screen/backup-recovery-phrase - {:on-success (fn [])}]))} + :button-one-props {:on-press on-continue} :button-two-label (i18n/label :t/cancel) :button-two-props {:type :grey :on-press #(rf/dispatch [:hide-bottom-sheet])}}]])) diff --git a/src/status_im/contexts/keycard/migrate/success/view.cljs b/src/status_im/contexts/keycard/migrate/success/view.cljs new file mode 100644 index 0000000000..b5f05dac24 --- /dev/null +++ b/src/status_im/contexts/keycard/migrate/success/view.cljs @@ -0,0 +1,31 @@ +(ns status-im.contexts.keycard.migrate.success.view + (:require [quo.core :as quo] + [react-native.core :as rn] + [status-im.common.resources :as resources] + [status-im.constants :as constants] + [utils.i18n :as i18n] + [utils.re-frame :as rf])) + +(defn view + [] + (let [profile-name (rf/sub [:profile/name]) + profile-picture (rf/sub [:profile/image]) + customization-color (rf/sub [:profile/customization-color])] + [:<> + [quo/page-top + {:title (i18n/label :t/key-pair-migrated-successfully) + :description :context-tag + :context-tag {:full-name profile-name + :profile-picture profile-picture + :customization-color customization-color} + :container-style {:margin-top constants/page-nav-height}}] + [quo/text {:style {:padding-horizontal 20}} + (i18n/label :t/use-keycard-for-status)] + [rn/view {:style {:flex 1 :align-items :center :justify-content :center}} + [rn/image + {:resize-mode :contain + :source (resources/get-image :keycard-migration-succeeded)}]] + [quo/button + {:on-press #(rf/dispatch [:logout]) + :container-style {:margin-horizontal 20}} + (i18n/label :t/logout)]])) diff --git a/src/status_im/contexts/keycard/migrate/view.cljs b/src/status_im/contexts/keycard/migrate/view.cljs new file mode 100644 index 0000000000..8ed7058572 --- /dev/null +++ b/src/status_im/contexts/keycard/migrate/view.cljs @@ -0,0 +1,34 @@ +(ns status-im.contexts.keycard.migrate.view + (:require [quo.core :as quo] + [react-native.core :as rn] + [status-im.common.events-helper :as events-helper] + [status-im.common.resources :as resources] + [utils.i18n :as i18n] + [utils.re-frame :as rf])) + +(defn view + [] + (let [profile-name (rf/sub [:profile/name]) + profile-picture (rf/sub [:profile/image]) + customization-color (rf/sub [:profile/customization-color])] + [:<> + [quo/page-nav + {:icon-name :i/close + :on-press events-helper/navigate-back}] + [quo/page-top + {:title (i18n/label :t/ready-to-migrate-key-pair) + :description :context-tag + :context-tag {:full-name profile-name + :profile-picture profile-picture + :customization-color customization-color}}] + [rn/view {:style {:flex 1 :align-items :center :justify-content :center}} + [rn/image + {:resize-mode :contain + :source (resources/get-image :keycard-migration)}]] + [quo/divider-label (i18n/label :t/tips-scan-keycard)] + [quo/markdown-list {:description (i18n/label :t/remove-phone-case)}] + [quo/markdown-list {:description (i18n/label :t/keep-card-steady)}] + [quo/bottom-actions + {:actions :one-action + :button-one-label (i18n/label :t/scan-keycard) + :button-one-props {:on-press #(rf/dispatch [:keycard/migration.start])}}]])) diff --git a/src/status_im/contexts/keycard/nfc/effects.cljs b/src/status_im/contexts/keycard/nfc/effects.cljs new file mode 100644 index 0000000000..87d25ca116 --- /dev/null +++ b/src/status_im/contexts/keycard/nfc/effects.cljs @@ -0,0 +1,11 @@ +(ns status-im.contexts.keycard.nfc.effects + (:require [keycard.keycard :as keycard] + [utils.re-frame :as rf])) + +(rf/reg-fx :effects.keycard/check-nfc-enabled + (fn [] + (keycard/check-nfc-enabled + {:on-success #(rf/dispatch [:keycard/on-check-nfc-enabled-success %])}))) + +(rf/reg-fx :effects.keycard.ios/start-nfc keycard/start-nfc) +(rf/reg-fx :effects.keycard.ios/stop-nfc keycard/stop-nfc) diff --git a/src/status_im/contexts/keycard/nfc/events.cljs b/src/status_im/contexts/keycard/nfc/events.cljs new file mode 100644 index 0000000000..b2cb461f43 --- /dev/null +++ b/src/status_im/contexts/keycard/nfc/events.cljs @@ -0,0 +1,27 @@ +(ns status-im.contexts.keycard.nfc.events + (:require [utils.re-frame :as rf])) + +(rf/reg-event-fx :keycard.ios/start-nfc + (fn [_] + {:fx [[:effects.keycard.ios/start-nfc]]})) + +(rf/reg-event-fx :keycard.ios/on-start-nfc-success + (fn [{:keys [db]} [{:keys [on-cancel-event-vector]}]] + {:db (assoc-in db [:keycard :on-nfc-cancelled-event-vector] on-cancel-event-vector)})) + +(rf/reg-event-fx :keycard.ios/on-nfc-timeout + (fn [{:keys [db]} _] + {:db (assoc-in db [:keycard :card-connected?] false) + :fx [[:dispatch-later [{:ms 500 :dispatch [:keycard.ios/start-nfc]}]]]})) + +(rf/reg-event-fx :keycard/on-check-nfc-enabled-success + (fn [{:keys [db]} [nfc-enabled?]] + {:db (assoc-in db [:keycard :nfc-enabled?] nfc-enabled?)})) + +(rf/reg-event-fx :keycard.ios/on-nfc-user-cancelled + (fn [{:keys [db]}] + {:db (-> db + (assoc-in [:keycard :pin :status] nil) + (assoc-in [:keycard :on-nfc-cancelled-event-vector] nil)) + :fx [(when-let [on-nfc-cancelled-event-vector (get-in db [:keycard :on-nfc-cancelled-event-vector])] + [:dispatch on-nfc-cancelled-event-vector])]})) diff --git a/src/status_im/contexts/keycard/nfc_sheet/events.cljs b/src/status_im/contexts/keycard/nfc/sheets/events.cljs similarity index 95% rename from src/status_im/contexts/keycard/nfc_sheet/events.cljs rename to src/status_im/contexts/keycard/nfc/sheets/events.cljs index 195d185611..4d767f10bb 100644 --- a/src/status_im/contexts/keycard/nfc_sheet/events.cljs +++ b/src/status_im/contexts/keycard/nfc/sheets/events.cljs @@ -1,4 +1,4 @@ -(ns status-im.contexts.keycard.nfc-sheet.events +(ns status-im.contexts.keycard.nfc.sheets.events (:require [re-frame.core :as rf] [react-native.platform :as platform] [taoensso.timbre :as log])) diff --git a/src/status_im/contexts/keycard/nfc_sheet/view.cljs b/src/status_im/contexts/keycard/nfc/sheets/view.cljs similarity index 96% rename from src/status_im/contexts/keycard/nfc_sheet/view.cljs rename to src/status_im/contexts/keycard/nfc/sheets/view.cljs index 8ef8f91fab..68d157b6db 100644 --- a/src/status_im/contexts/keycard/nfc_sheet/view.cljs +++ b/src/status_im/contexts/keycard/nfc/sheets/view.cljs @@ -1,4 +1,4 @@ -(ns status-im.contexts.keycard.nfc-sheet.view +(ns status-im.contexts.keycard.nfc.sheets.view (:require [quo.foundations.colors :as colors] quo.theme [react-native.core :as rn] diff --git a/src/status_im/contexts/keycard/not_keycard/view.cljs b/src/status_im/contexts/keycard/not_keycard/view.cljs index 742aae1545..abdb634812 100644 --- a/src/status_im/contexts/keycard/not_keycard/view.cljs +++ b/src/status_im/contexts/keycard/not_keycard/view.cljs @@ -1,28 +1,24 @@ (ns status-im.contexts.keycard.not-keycard.view (:require [quo.core :as quo] [react-native.core :as rn] - [react-native.safe-area :as safe-area] [status-im.common.events-helper :as events-helper] - [utils.i18n :as i18n] - [utils.re-frame :as rf])) + [status-im.common.resources :as resources] + [utils.i18n :as i18n])) (defn view [] - (let [{:keys [top bottom]} (safe-area/get-insets)] - [quo/overlay - {:type :shell - :container-style {:padding-top top - :padding-bottom bottom}} - [quo/page-nav - {:key :header - :background :blur - :icon-name :i/arrow-left - :on-press events-helper/navigate-back}] - [quo/page-top - {:title (i18n/label :t/oops-not-keycard) - :description :text - :description-text (i18n/label :t/make-sure-keycard)}] - [rn/view {:flex 1}] - [rn/view {:padding-horizontal 20} - [quo/button {:on-press #(rf/dispatch [:keycard/connect])} - (i18n/label :t/try-again)]]])) + [:<> + [quo/page-nav + {:icon-name :i/close + :on-press events-helper/navigate-back}] + [quo/page-top + {:title (i18n/label :t/oops-not-keycard) + :description :text + :description-text (i18n/label :t/make-sure-keycard)}] + [rn/view {:style {:flex 1 :align-items :center :justify-content :center}} + [rn/image + {:resize-mode :contain + :source (resources/get-image :not-keycard)}]] + [rn/view {:padding-horizontal 20} + [quo/button {:on-press events-helper/navigate-back} + (i18n/label :t/try-again)]]]) diff --git a/src/status_im/contexts/keycard/pin/create/view.cljs b/src/status_im/contexts/keycard/pin/create/view.cljs index a952e528e8..e54a81ec24 100644 --- a/src/status_im/contexts/keycard/pin/create/view.cljs +++ b/src/status_im/contexts/keycard/pin/create/view.cljs @@ -2,12 +2,15 @@ (:require [clojure.string :as string] [quo.core :as quo] [react-native.core :as rn] + [status-im.common.events-helper :as events-helper] [status-im.constants :as constants] - [utils.i18n :as i18n])) + [utils.i18n :as i18n] + [utils.re-frame :as rf])) (defn view - [{:keys [on-complete]}] - (let [[pin set-pin] (rn/use-state "") + [] + (let [{:keys [on-complete]} (rf/sub [:get-screen-params]) + [pin set-pin] (rn/use-state "") [first-pin set-first-pin] (rn/use-state "") [error? set-error] (rn/use-state false) [stage set-stage] (rn/use-state :create) @@ -38,10 +41,15 @@ (set-stage :repeat))))))) [pin stage first-pin])] [rn/view {:style {:padding-bottom 12 :flex 1}} - [quo/drawer-top - {:title (if (= :create stage) - (i18n/label :t/create-keycard-pin) - (i18n/label :t/repeat-keycard-pin))}] + [quo/page-nav + {:icon-name :i/close + :on-press events-helper/navigate-back}] + [quo/page-top + {:title (if (= :create stage) + (i18n/label :t/create-keycard-pin) + (i18n/label :t/repeat-keycard-pin)) + :description :text + :description-text "You’ll need this PIN to login and sign transactions"}] [rn/view {:style {:flex 1 :justify-content :center :align-items :center :padding-vertical 34}} [quo/pin-input {:blur? false diff --git a/src/status_im/contexts/keycard/pin/events.cljs b/src/status_im/contexts/keycard/pin/events.cljs index 66ee928dbf..d96eb522cc 100644 --- a/src/status_im/contexts/keycard/pin/events.cljs +++ b/src/status_im/contexts/keycard/pin/events.cljs @@ -23,3 +23,7 @@ (assoc-in [:keycard :pin :status] nil)) :fx [(when (and on-complete (= (dec max-numbers) (count pin))) [:effects.keycard.pin/dispatch-on-complete [on-complete new-pin]])]})))) + +(rf/reg-event-fx :keycard.pin/clear + (fn [{:keys [db]}] + {:db (assoc-in db [:keycard :pin] nil)})) diff --git a/src/status_im/contexts/keycard/pin/view.cljs b/src/status_im/contexts/keycard/pin/view.cljs index 09c1951854..27c2732abe 100644 --- a/src/status_im/contexts/keycard/pin/view.cljs +++ b/src/status_im/contexts/keycard/pin/view.cljs @@ -6,10 +6,12 @@ [utils.re-frame :as rf])) (defn auth - [{:keys [on-complete]}] - (let [{:keys [text status]} (rf/sub [:keycard/pin]) - pin-retry-counter (rf/sub [:keycard/pin-retry-counter]) - error? (= status :error)] + [{:keys [on-complete error]}] + (let [{:keys [error? error-message]} error + {:keys [text status]} (rf/sub [:keycard/pin]) + pin-retry-counter (rf/sub [:keycard/pin-retry-counter]) + error? (or error? (= status :error))] + (rn/use-unmount #(rf/dispatch [:keycard.pin/clear])) [rn/view {:padding-bottom 12 :flex 1} [rn/view {:flex 1 :justify-content :center :align-items :center :padding 34} [quo/pin-input @@ -18,7 +20,9 @@ :number-of-filled-pins (count text) :error? error? :info (when error? - (i18n/label :t/pin-retries-left {:number pin-retry-counter}))}]] + (if error-message + error-message + (i18n/label :t/pin-retries-left {:number pin-retry-counter})))}]] [quo/numbered-keyboard {:delete-key? true :on-delete #(rf/dispatch [:keycard.pin/delete-pressed]) diff --git a/src/status_im/contexts/keycard/sign/events.cljs b/src/status_im/contexts/keycard/sign/events.cljs index f7b9adba7e..1c1499d4db 100644 --- a/src/status_im/contexts/keycard/sign/events.cljs +++ b/src/status_im/contexts/keycard/sign/events.cljs @@ -8,6 +8,10 @@ :s (subs signature 64 128) :v (str (js/parseInt (subs signature 128 130) 16))}}) +(rf/reg-event-fx :keycard/sign + (fn [_ [data]] + {:effects.keycard/sign data})) + (rf/reg-event-fx :keycard/sign-hash (fn [{:keys [db]} [pin-text tx-hash]] (let [current-address (get-in db [:wallet :current-viewing-account-address]) @@ -15,16 +19,16 @@ key-uid (get-in db [:profile/profile :key-uid])] {:fx [[:dispatch [:keycard/connect - {:key-uid key-uid - :on-success-fx [[:effects.keycard/sign - {:pin pin-text - :path path - :hash (utils.address/naked-address tx-hash) - :on-success - #(do - (rf/dispatch [:keycard/disconnect]) - (rf/dispatch - [:wallet/proceed-with-transactions-signatures - (get-signature-map tx-hash %)])) - :on-failure #(rf/dispatch [:keycard/on-action-with-pin-error - %])}]]}]]]}))) + {:key-uid key-uid + :on-success + (fn [] + (rf/dispatch + [:keycard/sign + {:pin pin-text + :path path + :hash (utils.address/naked-address tx-hash) + :on-success (fn [signature] + (rf/dispatch [:keycard/disconnect]) + (rf/dispatch [:wallet/proceed-with-transactions-signatures + (get-signature-map tx-hash signature)])) + :on-failure #(rf/dispatch [:keycard/on-action-with-pin-error %])}]))}]]]}))) diff --git a/src/status_im/contexts/keycard/utils.cljs b/src/status_im/contexts/keycard/utils.cljs index 44d414beb8..6abbf84d11 100644 --- a/src/status_im/contexts/keycard/utils.cljs +++ b/src/status_im/contexts/keycard/utils.cljs @@ -1,5 +1,7 @@ (ns status-im.contexts.keycard.utils - (:require [taoensso.timbre :as log])) + (:require [clojure.string :as string] + [utils.address :as address] + [utils.transforms :as transforms])) (def pin-mismatch-error #"Unexpected error SW, 0x63C(\d+)|wrongPIN\(retryCounter: (\d+)\)") @@ -16,33 +18,55 @@ (re-matches #".*NFCError:100.*" error))) (defn validate-application-info - [profile-key-uid {:keys [key-uid paired? pin-retry-counter puk-retry-counter] :as application-info}] - (let [profile-mismatch? (or (nil? profile-key-uid) (not= profile-key-uid key-uid))] - (log/debug "[keycard]" "login-with-keycard" - "empty application info" (empty? application-info) - "no key-uid" (empty? key-uid) - "profile-mismatch?" profile-mismatch? - "no pairing" paired?) - (cond - (empty? application-info) - :keycard/error.not-keycard + [profile-key-uid + {:keys [key-uid has-master-key? paired? pin-retry-counter puk-retry-counter] :as application-info}] - (empty? (:key-uid application-info)) - :keycard/error.keycard-blank + (cond + (empty? application-info) + :keycard/error.not-keycard - profile-mismatch? - :keycard/error.keycard-wrong + (not has-master-key?) + :keycard/error.keycard-blank - (not paired?) - :keycard/error.keycard-unpaired + (not= profile-key-uid key-uid) + :keycard/error.keycard-wrong-profile - (and (zero? pin-retry-counter) - (or (nil? puk-retry-counter) - (pos? puk-retry-counter))) - :keycard/error.keycard-frozen + (not paired?) + :keycard/error.keycard-unpaired - (zero? puk-retry-counter) - :keycard/error.keycard-locked + (and (zero? pin-retry-counter) + (or (nil? puk-retry-counter) + (pos? puk-retry-counter))) + :keycard/error.keycard-frozen - :else - nil))) + (zero? puk-retry-counter) + :keycard/error.keycard-locked + + :else + nil)) + +(defn- error-object->map + [^js object] + {:code (.-code object) + :error (.-message object)}) + +(defn normalize-key-uid + [{:keys [key-uid] :as data}] + (if (string/blank? key-uid) + data + (update data :key-uid address/normalized-hex))) + +(defn get-on-success + [{:keys [on-success]}] + #(when on-success (on-success (normalize-key-uid (transforms/js->clj %))))) + +(defn get-on-failure + [{:keys [on-failure]}] + #(when on-failure (on-failure (error-object->map %)))) + +(defn wrap-handlers + [args] + (assoc + args + :on-success (get-on-success args) + :on-failure (get-on-failure args))) diff --git a/src/status_im/contexts/profile/login/effects.cljs b/src/status_im/contexts/profile/login/effects.cljs index e115ed5bc2..9e6daf3005 100644 --- a/src/status_im/contexts/profile/login/effects.cljs +++ b/src/status_im/contexts/profile/login/effects.cljs @@ -13,3 +13,7 @@ (rf/reg-fx :effects.profile/enable-local-notifications (fn [] (native-module/start-local-notifications))) + +(rf/reg-fx :effects.profile/convert-to-keycard-profile + (fn [{:keys [profile settings password new-password callback]}] + (native-module/convert-to-keycard-profile profile settings password new-password callback))) diff --git a/src/status_im/contexts/profile/profiles/view.cljs b/src/status_im/contexts/profile/profiles/view.cljs index c8942f0ecc..8f56a33f96 100644 --- a/src/status_im/contexts/profile/profiles/view.cljs +++ b/src/status_im/contexts/profile/profiles/view.cljs @@ -1,5 +1,6 @@ (ns status-im.contexts.profile.profiles.view (:require + [clojure.string :as string] [native-module.core :as native-module] [quo.core :as quo] [react-native.core :as rn] @@ -182,7 +183,7 @@ :render-fn profile-card}]])) (defn password-input - [] + [processing error] (let [auth-method (rf/sub [:auth-method]) on-press-biometrics (fn [] (rf/dispatch [:biometric/authenticate @@ -193,18 +194,31 @@ %])}]))] [standard-authentication/password-input - {:shell? true + {:processing processing + :error error + :shell? true :blur? true :on-press-biometrics (when (= auth-method constants/auth-method-biometric) on-press-biometrics)}])) +(defn- get-error-message + [error] + (if (and (some? error) + (or (= error "file is not a database") + (string/starts-with? (string/lower-case error) "failed"))) + (i18n/label :t/oops-wrong-password) + error)) + (defn login-section [{:keys [show-profiles]}] - (let [processing (rf/sub [:profile/login-processing]) - {:keys [key-uid name keycard-pairing + (let [{:keys [key-uid name keycard-pairing customization-color]} (rf/sub [:profile/login-profile]) sign-in-enabled? (rf/sub [:sign-in-enabled?]) profile-picture (rf/sub [:profile/login-profiles-picture key-uid]) - login-multiaccount (rn/use-callback #(rf/dispatch [:profile.login/login]))] + {:keys [error processing]} (rf/sub [:profile/login]) + error-message (rn/use-memo #(get-error-message error) [error]) + error {:error? (boolean (seq error-message)) + :error-message error-message} + login-profile (rn/use-callback #(rf/dispatch [:profile.login/login]))] [rn/keyboard-avoiding-view {:style style/login-container :keyboard-vertical-offset (- (safe-area/get-bottom))} @@ -239,17 +253,20 @@ :card-style style/login-profile-card}] (if keycard-pairing [keycard.pin/auth - {:on-complete - (fn [pin-text] + {:error error + :on-complete + (fn [pin] (rf/dispatch [:keycard/connect - {:key-uid key-uid - :on-success-fx [[:effects.keycard/get-keys - {:pin pin-text - :on-success #(rf/dispatch [:keycard.login/on-get-keys-success %]) - :on-failure #(rf/dispatch [:keycard/on-action-with-pin-error - %])}]]}]))}] - [password-input])] + {:key-uid key-uid + :on-success + (fn [] + (rf/dispatch + [:keycard/get-keys + {:pin pin + :on-success #(rf/dispatch [:keycard.login/on-get-keys-success %]) + :on-failure #(rf/dispatch [:keycard/on-action-with-pin-error %])}]))}]))}] + [password-input processing error])] (when-not keycard-pairing [quo/button {:size 40 @@ -258,7 +275,7 @@ :accessibility-label :login-button :icon-left :i/unlocked :disabled? (or (not sign-in-enabled?) processing) - :on-press login-multiaccount + :on-press login-profile :container-style {:margin-bottom (+ (safe-area/get-bottom) 12)}} (i18n/label :t/log-in)])])) diff --git a/src/status_im/contexts/settings/keycard/view.cljs b/src/status_im/contexts/settings/keycard/view.cljs index cdb1a654b5..b6e274304d 100644 --- a/src/status_im/contexts/settings/keycard/view.cljs +++ b/src/status_im/contexts/settings/keycard/view.cljs @@ -4,6 +4,7 @@ [react-native.core :as rn] [status-im.common.events-helper :as events-helper] [status-im.common.resources :as resources] + [status-im.constants :as constants] [utils.i18n :as i18n] [utils.re-frame :as rf])) @@ -27,11 +28,11 @@ :subtitle (i18n/label :t/secure-wallet-card) :button-label (i18n/label :t/buy-keycard) :accessibility-label :get-keycard - :image (resources/get-image :generate-keys) - :on-press #()}] + :image (resources/get-image :keycard-buy) + :on-press #(rf/dispatch [:browser.ui/open-url constants/get-keycard-url])}] [rn/view {:style {:margin-top 24}} [quo/text - {:style {:margin-bottom 12 + {:style {:margin-bottom 1 :color colors/white-opa-70} :size :paragraph-2 :weight :medium} diff --git a/src/status_im/contexts/settings/privacy_and_security/share_usage/view.cljs b/src/status_im/contexts/settings/privacy_and_security/share_usage/view.cljs index 12918e5ff7..4d07ca9a8e 100644 --- a/src/status_im/contexts/settings/privacy_and_security/share_usage/view.cljs +++ b/src/status_im/contexts/settings/privacy_and_security/share_usage/view.cljs @@ -41,10 +41,9 @@ (for [label points] ^{:key label} [quo/markdown-list - {:description (i18n/label label) - :blur? true - :type (when lock? :lock) - :container-style {:padding-top 8}}])]}) + {:description (i18n/label label) + :blur? true + :type (when lock? :lock)}])]}) (defn- on-privacy-policy-press [] diff --git a/src/status_im/navigation/options.cljs b/src/status_im/navigation/options.cljs index 3697c83b11..1d7f3faee9 100644 --- a/src/status_im/navigation/options.cljs +++ b/src/status_im/navigation/options.cljs @@ -69,12 +69,6 @@ transitions/new-to-status-modal-animations transitions/push-animations-for-transparent-background)})) -(def keycard-modal-screen-options - (assoc transparent-modal-screen-options - :layout nil - :theme :dark - :insets {:top? true :bottom? true})) - (def sheet-options {:layout {:componentBackgroundColor :transparent :orientation ["portrait"] diff --git a/src/status_im/navigation/screens.cljs b/src/status_im/navigation/screens.cljs index 13f36ad1b1..ede4b2e818 100644 --- a/src/status_im/navigation/screens.cljs +++ b/src/status_im/navigation/screens.cljs @@ -32,7 +32,12 @@ [status-im.contexts.keycard.check.view :as keycard.check] [status-im.contexts.keycard.empty.view :as keycard.empty] [status-im.contexts.keycard.error.view :as keycard.error] + [status-im.contexts.keycard.migrate.fail.view :as keycard.migrate.fail] + [status-im.contexts.keycard.migrate.re-encrypting.view :as keycard.re-encrypting] + [status-im.contexts.keycard.migrate.success.view :as keycard.migrate.success] + [status-im.contexts.keycard.migrate.view :as keycard.migrate] [status-im.contexts.keycard.not-keycard.view :as keycard.not-keycard] + [status-im.contexts.keycard.pin.create.view :as pin.create] [status-im.contexts.onboarding.create-or-sync-profile.view :as create-or-sync-profile] [status-im.contexts.onboarding.create-password.view :as create-password] [status-im.contexts.onboarding.create-profile.view :as create-profile] @@ -310,8 +315,9 @@ :component settings/view} {:name :screen/settings.keycard - :metrics {:track? :true} - :options options/keycard-modal-screen-options + :metrics {:track? :true + :alias-id :settings.keycard} + :options {:insets {:top? true :bottom? true}} :component settings.keycard/view} {:name :edit-profile @@ -877,29 +883,73 @@ (def keycard-screens [{:name :screen/keycard.check - :metrics {:track? true} - :options options/keycard-modal-screen-options + :metrics {:track? :true + :alias-id :keycard.check} + :options {:insets {:top? true :bottom? true}} :component keycard.check/view} {:name :screen/keycard.empty - :metrics {:track? true} - :options options/keycard-modal-screen-options + :metrics {:track? :true + :alias-id :keycard.empty} + :options {:insets {:top? true :bottom? true}} :component keycard.empty/view} {:name :screen/keycard.error - :metrics {:track? true} - :options options/keycard-modal-screen-options + :metrics {:track? :true + :alias-id :keycard.error} + :options {:insets {:top? true :bottom? true}} :component keycard.error/view} {:name :screen/keycard.not-keycard - :metrics {:track? true} - :options options/keycard-modal-screen-options + :metrics {:track? :true + :alias-id :keycard.not-keycard} + :options {:insets {:top? true :bottom? true}} :component keycard.not-keycard/view} {:name :screen/keycard.authorise - :metrics {:track? true} - :options options/keycard-modal-screen-options - :component keycard.authorise/view}]) + :metrics {:track? :true + :alias-id :keycard.authorise} + :options {:insets {:top? true :bottom? true}} + :component keycard.authorise/view} + + {:name :screen/keycard.migrate + :metrics {:track? :true + :alias-id :keycard.migrate} + :options {:insets {:top? true :bottom? true}} + :component keycard.migrate/view} + + {:name :screen/keycard.re-encrypting + :metrics {:track? :true + :alias-id :keycard.re-encrypting} + :options {:insets {:top? true :bottom? true} + :popGesture false + :hardwareBackButton {:dismissModalOnPress false + :popStackOnPress false}} + :component keycard.re-encrypting/view} + + {:name :screen/keycard.migrate.success + :metrics {:track? :true + :alias-id :keycard.migrate.success} + :options {:insets {:top? true :bottom? true} + :popGesture false + :hardwareBackButton {:dismissModalOnPress false + :popStackOnPress false}} + :component keycard.migrate.success/view} + + {:name :screen/keycard.migrate.fail + :metrics {:track? :true + :alias-id :keycard.migrate.fail} + :options {:insets {:top? true :bottom? true} + :popGesture false + :hardwareBackButton {:dismissModalOnPress false + :popStackOnPress false}} + :component keycard.migrate.fail/view} + + {:name :screen/keycard.pin.create + :metrics {:track? :true + :alias-id :keycard.pin.create} + :options {:insets {:top? true :bottom? true}} + :component pin.create/view}]) (defn screens [] diff --git a/src/status_im/navigation/view.cljs b/src/status_im/navigation/view.cljs index eaff875400..4a63e8543b 100644 --- a/src/status_im/navigation/view.cljs +++ b/src/status_im/navigation/view.cljs @@ -11,7 +11,7 @@ [status-im.common.bottom-sheet-screen.view :as bottom-sheet-screen] [status-im.common.bottom-sheet.view :as bottom-sheet] [status-im.common.toasts.view :as toasts] - [status-im.contexts.keycard.nfc-sheet.view :as keycard.sheet] + [status-im.contexts.keycard.nfc.sheets.view :as keycard.sheet] [status-im.navigation.screens :as screens] [status-im.setup.hot-reload :as reloader] [utils.re-frame :as rf])) diff --git a/translations/en.json b/translations/en.json index caa55062ec..d761b19954 100644 --- a/translations/en.json +++ b/translations/en.json @@ -293,6 +293,8 @@ "cant-fetch-info": "Can't fetch info", "cant-open-public-chat": "Can't open public chat", "cant-report-bug": "Can't report a bug", + "cant-store-new-keys": "You can’t use it to store new keys right now", + "cant-use-right-now": "You can’t use it right now", "card-is-blank": "This card is blank", "card-reseted": "Card has been reseted", "card-unpaired": "Card has been unpaired from current device", @@ -782,6 +784,8 @@ "display-collectibles": "Display collectibles", "do-not-cheat": "Don't try to cheat", "do-not-cheat-description": "These 12 words give access to all of your funds so it is important that you write them in the correct order, take it seriously.", + "do-not-quit": "Do not quit the application or turn off your device. Doing so will lead to data corruption, loss of your Status profile and the inability to use Status.", + "do-not-share": "Do not share", "done": "Done", "dont-ask": "Don't ask me again", @@ -1010,6 +1014,7 @@ "failed": "Failed", "failed-on": "Failed on", "failed-to-fetch-community": "Failed to fetch community", + "failed-to-migrate-key-pair": "Failed to migrate key pair", "faq": "Frequently asked questions", "fast": "Fast", "favorite-communities": "Your favourite communities", @@ -1317,6 +1322,7 @@ "key-name-error-too-short": "Key pair name must be at least {{count}} characters", "key-on-device": "Private key is saved on this device", "key-pair-imported-successfully": "{{name}} key pair imported successfully", + "key-pair-migrated-successfully": "Profile key pair successfully migrated", "key-pair-name-updated": "Key pair name updated", "key-pair-removed": "Key pair and derived accounts has been removed", "key-pairs-successfully-imported": "{{count}} key pairs successfully imported", @@ -1344,6 +1350,7 @@ "keycard-factory-reset-text": "Performing this will delete any mnemonic phrase stored on the card. Make sure you have a backup of the mnemonic phrase you've been using with this Keycard.", "keycard-factory-reset-title": "Are you sure you want to perform a factory reset?", "keycard-free-pairing-slots": "Keycard has {{n}} free pairing slots", + "keycard-full": "Keycard is full", "keycard-has-multiaccount-on-it": "This card is full. Each card can hold one main key pair", "keycard-init-description": "Put the card to the back of your phone to continue", "keycard-init-title": "Looking for cards...", @@ -1354,6 +1361,8 @@ "keycard-is-frozen-factory-reset": "Reset with mnemonic", "keycard-is-frozen-reset": "Reset with PUK", "keycard-is-frozen-title": "Keycard is frozen", + "keycard-locked": "Keycard is locked", + "keycard-not-empty": "Keycard is not empty", "keycard-onboarding-finishing-header": "Finishing up", "keycard-onboarding-intro-header": "Store your keys on Keycard", "keycard-onboarding-intro-text": "Get ready, this might take a few minutes, but it's important to secure your account", @@ -1450,6 +1459,8 @@ "log-in": "Log in", "log-level": "Log level", "log-level-settings": "Log level settings", + "log-out-remove": "Log out & Remove profile", + "log-out-remove-profile": "Log out and remove profile from this device", "logged-in": "Logged in", "logging": "Logging", "logging-enabled": "Logging enabled?", @@ -1718,6 +1729,7 @@ "no-fees": "No fees", "no-group-chats": "No group chats", "no-group-chats-description": "Much fun. Have friends. Wow!", + "no-key-pair-keycard": "There is no key pair on this Keycard", "no-keycard-applet-on-card": "No Keycard applet on card", "no-messages": "No messages", "no-messages-description": "Here’s a cat in a box instead", @@ -1876,6 +1888,7 @@ "pairing-new-installation-detected-title": "New device detected", "pairing-no-info": "No info", "pairing-please-set-a-name": "Please set a name for your device.", + "pairing-slots-occupied": "All pairing slots are occupied", "paraswap-error": "Paraswap error: {{paraswap-error}}", "participate-in-the-metaverse": "Participate in the truly free metaverse", "passphrase": "Passphrase", @@ -2024,9 +2037,11 @@ "re-encrypt": "Re-encrypt", "re-encrypt-data": "Re-encrypt your data", "re-encrypt-key": "Re-encrypt your keys", + "re-encrypting-data": "Re-encrypting data", "read": "Read", "read-more": "Read more", "ready-keycard": "Get your Keycard ready", + "ready-to-migrate-key-pair": "Ready to migrate profile key pair to the Keycard", "ready-to-scan": "Ready to Scan", "rearrange-categories": "Rearrange Categories", "receive": "Receive", @@ -2045,6 +2060,7 @@ "recover": "Recover", "recover-key": "Access existing keys", "recover-keycard-multiaccount-not-supported": "Keys for this account already exist and can't be added again. If you've lost your password, passcode or Keycard, uninstall the app, reinstall and access your keys by entering your seed phrase", + "recover-status-profile": "Recover your Status profile with recovery phrase", "recover-with-keycard": "Recover with Keycard", "recover-with-seed-phrase": "Recover with seed phrase", "recovering-key": "Accessing keys...", @@ -2170,6 +2186,7 @@ "scan-an-account-qr-code": "Scan an account QR code", "scan-an-address-qr-code": "Scan an address QR code", "scan-key-pairs-qr-code": "Scan key pairs QR code", + "scan-keycard": "Scan Keycard", "scan-or-enter-a-sync-code": "Scan or enter a sync code", "scan-or-enter-sync-code": "Scan or enter sync code", "scan-or-enter-sync-code-seen-on-this-device": "Scan or enter sync code seen on this device", @@ -2622,6 +2639,7 @@ "unknown-status-go-error": "Unknown status-go error", "unlimited": "Unlimited", "unlock": "Unlock", + "unlock-reset-instructions": "To unlock or factory reset the Keycard, please use the Status desktop app. If you'd like this feature on mobile, feel free to upvote them and discuss in the Status community.", "unmute": "Unmute", "unmute-channel": "Unmute channel", "unmute-chat": "Unmute chat", @@ -2660,6 +2678,7 @@ "use-as-profile-picture": "Use as profile picture", "use-biometrics": "Use biometrics to fill in your password", "use-keycard": "Use Keycard", + "use-keycard-for-status": "From now on, use this Keycard to login to Status and transact with derived accounts on all synced devices. To start using it, logout and log back in with this Keycard.", "use-keycard-login-sign": "Use this Keycard to login and sign transactions", "use-keycard-subtitle": "Keys will be stored on your Keycard", "use-photo": "Use Photo", @@ -2809,6 +2828,7 @@ "what-to-do": "What you would like to do?", "what-we-will-receive": "What we will receive:", "what-we-wont-receive": "What we won't receive:", + "what-you-can-do": "What you can do:", "whats-on-your-mind": "What’s on your mind…", "which-connection-to-use": "Which connection to use for syncing?", "who-are-you-looking-for": "Who are you looking for ?",