diff --git a/src/status_im/hardwallet/core.cljs b/src/status_im/hardwallet/core.cljs index 05c03edd36..f6cabc484a 100644 --- a/src/status_im/hardwallet/core.cljs +++ b/src/status_im/hardwallet/core.cljs @@ -1775,7 +1775,6 @@ constants/path-default-wallet-keyword {:publicKey wallet-public-key :address (eip55/address->checksum wallet-address)}} - :mnemonic "" :address address :public-key public-key :keycard-instance-uid instance-uid @@ -1784,8 +1783,7 @@ :keycard-paired-on paired-on :chat-key whisper-private-key} encryption-public-key - {:seed-backed-up? true - :login? true}) + {}) (if (= flow :import) (navigation/navigate-to-cofx :keycard-recovery-success nil) (navigation/navigate-to-cofx :welcome nil)))))) diff --git a/src/status_im/multiaccounts/create/core.cljs b/src/status_im/multiaccounts/create/core.cljs index 1e87e8df8a..566853ef9a 100644 --- a/src/status_im/multiaccounts/create/core.cljs +++ b/src/status_im/multiaccounts/create/core.cljs @@ -227,7 +227,7 @@ keycard-pairing keycard-paired-on mnemonic public-key] :as multiaccount} password - {:keys [seed-backed-up? login?] :or {login? true}}] + {:keys [save-mnemonic? login?] :or {login? true save-mnemonic? false}}] (let [[wallet-account {:keys [public-key photo-path name]} :as accounts-data] (prepare-accounts-data multiaccount) multiaccount-data {:name name :address address @@ -251,9 +251,9 @@ :latest-derived-path 0 :signing-phrase signing-phrase :installation-id (random-guid-generator) - :mnemonic mnemonic :settings constants/default-multiaccount-settings} - + save-mnemonic? + (assoc :mnemonic mnemonic) keycard-multiaccount? (assoc :keycard-instance-uid keycard-instance-uid :keycard-pairing keycard-pairing @@ -270,9 +270,7 @@ :networks/current-network constants/default-network :networks/networks constants/default-networks)] (fx/merge cofx - {:db (cond-> db - seed-backed-up? - (assoc-in [:multiaccount :seed-backed-up?] true))} + {:db db} (if keycard-multiaccount? (save-account-and-login-with-keycard new-multiaccount password @@ -361,7 +359,7 @@ :derived derived) password - {:seed-backed-up? false})) + {:save-mnemonic? true})) (re-frame/reg-fx ::store-multiaccount diff --git a/src/status_im/multiaccounts/db.cljs b/src/status_im/multiaccounts/db.cljs index 492ff48a9e..886952096f 100644 --- a/src/status_im/multiaccounts/db.cljs +++ b/src/status_im/multiaccounts/db.cljs @@ -49,7 +49,6 @@ (spec/def :multiaccount/sharing-usage-data? (spec/nilable boolean?)) (spec/def :multiaccount/desktop-notifications? (spec/nilable boolean?)) (spec/def :multiaccount/dev-mode? (spec/nilable boolean?)) -(spec/def :multiaccount/seed-backed-up? (spec/nilable boolean?)) (spec/def :multiaccount/installation-id :global/not-empty-string) (spec/def :multiaccount/wallet-set-up-passed? (spec/nilable boolean?)) (spec/def :multiaccount/hide-home-tooltip? (spec/nilable boolean?)) @@ -66,7 +65,7 @@ :multiaccount/email :multiaccount/signed-up? :multiaccount/settings :multiaccount/mailserver :multiaccount/sharing-usage-data? - :multiaccount/seed-backed-up? :multiaccount/mnemonic :multiaccount/desktop-notifications? + :multiaccount/mnemonic :multiaccount/desktop-notifications? :multiaccount/chaos-mode? :multiaccount/wallet-set-up-passed? :multiaccount/last-request :multiaccount/hide-home-tooltip? diff --git a/src/status_im/multiaccounts/recover/core.cljs b/src/status_im/multiaccounts/recover/core.cljs index 8909258f72..f21c7dcc09 100644 --- a/src/status_im/multiaccounts/recover/core.cljs +++ b/src/status_im/multiaccounts/recover/core.cljs @@ -63,7 +63,7 @@ (multiaccounts.create/on-multiaccount-created cofx multiaccount password - {:seed-backed-up? true}))))) + {}))))) (fx/defn store-multiaccount {:events [::recover-multiaccount-confirmed]} diff --git a/src/status_im/multiaccounts/update/core.cljs b/src/status_im/multiaccounts/update/core.cljs index b692e6e352..ea8fd89f8b 100644 --- a/src/status_im/multiaccounts/update/core.cljs +++ b/src/status_im/multiaccounts/update/core.cljs @@ -67,8 +67,7 @@ "A helper function that removes seed phrase from storage." [cofx] (multiaccount-update cofx - {:seed-backed-up? true - :mnemonic nil} + {:mnemonic nil} {})) (fx/defn update-settings diff --git a/src/status_im/subs.cljs b/src/status_im/subs.cljs index b0a2219301..9d7cca1071 100644 --- a/src/status_im/subs.cljs +++ b/src/status_im/subs.cljs @@ -1020,8 +1020,8 @@ (re-frame/reg-sub :get-profile-unread-messages-number :<- [:multiaccount] - (fn [{:keys [seed-backed-up? mnemonic]}] - (if (or seed-backed-up? (string/blank? mnemonic)) 0 1))) + (fn [{:keys [mnemonic]}] + (if mnemonic 1 0))) ;;WALLET ============================================================================================================== diff --git a/src/status_im/ui/screens/desktop/main/tabs/profile/views.cljs b/src/status_im/ui/screens/desktop/main/tabs/profile/views.cljs index 526c1492b4..2e26b30bd6 100644 --- a/src/status_im/ui/screens/desktop/main/tabs/profile/views.cljs +++ b/src/status_im/ui/screens/desktop/main/tabs/profile/views.cljs @@ -279,7 +279,7 @@ (i18n/label :t/advanced-settings)] [vector-icons/icon :main-icons/next {:style {:tint-color colors/gray}}]]]) -(views/defview profile [{:keys [seed-backed-up? mnemonic] :as user}] +(views/defview profile [{:keys [mnemonic] :as user}] (views/letsubs [current-view-id [:view-id] editing? [:my-profile/editing?]] ;; TODO janherich: refactor my-profile, unnecessary complicated structure in db (could be just `:staged-name`/`:editing?` fields in multiaccount map) and horrible way to access it woth `:get`/`:set` subs/events (let [adv-settings-open? (= current-view-id :advanced-settings) @@ -288,7 +288,7 @@ installations-open? (= current-view-id :installations) backup-recovery-phrase-open? (= current-view-id :backup-recovery-phrase) notifications? (get-in user [:desktop-notifications?]) - show-backup-seed? (and (not seed-backed-up?) (not (string/blank? mnemonic)))] + show-backup-seed? (not mnemonic)] [react/view [react/view {:style styles/profile-edit} [react/touchable-highlight {:on-press #(re-frame/dispatch (if editing? diff --git a/src/status_im/ui/screens/privacy_and_security_settings/views.cljs b/src/status_im/ui/screens/privacy_and_security_settings/views.cljs index 1ce14a843a..7d5f056750 100644 --- a/src/status_im/ui/screens/privacy_and_security_settings/views.cljs +++ b/src/status_im/ui/screens/privacy_and_security_settings/views.cljs @@ -11,22 +11,23 @@ [status-im.multiaccounts.biometric.core :as biometric]) (:require-macros [status-im.utils.views :as views])) -(defn- list-data [show-backup-seed? settings supported-biometric-auth biometric-auth? keycard?] +(defn- list-data [mnemonic settings supported-biometric-auth biometric-auth? keycard?] [{:type :section-header :title :t/security :container-margin-top 6} {:type :small :title :t/back-up-seed-phrase :accessibility-label :back-up-recovery-phrase-button - :disabled? (not show-backup-seed?) + :disabled? (not mnemonic) ;; TODO - remove container bottom margin ;; when items below are implemented :container-margin-bottom 8 :on-press #(re-frame/dispatch [:navigate-to :backup-seed]) :accessories - (when show-backup-seed? [[components.common/counter {:size 22} 1] - :chevron])} + (when mnemonic + [[components.common/counter {:size 22} 1] + :chevron])} {:type :small :title (str (i18n/label :t/lock-app-with) " " (biometric/get-label supported-biometric-auth)) :container-margin-bottom 8 @@ -81,18 +82,16 @@ :theme :action-destructive})]) (views/defview privacy-and-security [] - (views/letsubs [{:keys [seed-backed-up? mnemonic]} [:multiaccount] + (views/letsubs [{:keys [mnemonic]} [:multiaccount] settings [:multiaccount-settings] supported-biometric-auth [:supported-biometric-auth] auth-method [:auth-method] keycard-multiaccount? [:keycard-multiaccount?]] - (let [show-backup-seed? (and (not seed-backed-up?) - (not (string/blank? mnemonic)))] - [react/view {:flex 1 :background-color colors/white} - [toolbar/simple-toolbar - (i18n/label :t/privacy-and-security)] - [list/flat-list - {:data (list-data show-backup-seed? settings supported-biometric-auth - (= auth-method "biometric") keycard-multiaccount?) - :key-fn (fn [_ i] (str i)) - :render-fn list/flat-list-generic-render-fn}]]))) + [react/view {:flex 1 :background-color colors/white} + [toolbar/simple-toolbar + (i18n/label :t/privacy-and-security)] + [list/flat-list + {:data (list-data mnemonic settings supported-biometric-auth + (= auth-method "biometric") keycard-multiaccount?) + :key-fn (fn [_ i] (str i)) + :render-fn list/flat-list-generic-render-fn}]])) diff --git a/src/status_im/ui/screens/profile/user/views.cljs b/src/status_im/ui/screens/profile/user/views.cljs index 46d7173907..9e1874a0be 100644 --- a/src/status_im/ui/screens/profile/user/views.cljs +++ b/src/status_im/ui/screens/profile/user/views.cljs @@ -109,7 +109,7 @@ (defn- flat-list-content [preferred-name registrar tribute-to-talk - active-contacts-count show-backup-seed? + active-contacts-count mnemonic keycard-account? notifications-enabled?] [(cond-> {:title (or (when registrar preferred-name) :t/ens-usernames) @@ -147,7 +147,7 @@ :title :t/privacy-and-security :accessibility-label :privacy-and-security-settings-button :accessories - [(when show-backup-seed? + [(when mnemonic [components.common/counter {:size 22} 1]) :chevron] :on-press #(re-frame/dispatch [:navigate-to :privacy-and-security])} (when (and platform/android? @@ -216,23 +216,20 @@ (defn content-with-header [list-ref scroll-y] (let [{:keys [public-key preferred-name - seed-backed-up? mnemonic keycard-pairing address notifications-enabled?] - :as multiaccount} @(re-frame/subscribe [:multiaccount]) - active-contacts-count @(re-frame/subscribe [:contacts/active-count]) - tribute-to-talk @(re-frame/subscribe [:tribute-to-talk/profile]) - registrar @(re-frame/subscribe [:ens.stateofus/registrar]) - photo-added? @(re-frame/subscribe [:profile/photo-added?]) - show-backup-seed? (and (not seed-backed-up?) - (not (string/blank? mnemonic)))] + :as multiaccount} @(re-frame/subscribe [:multiaccount]) + active-contacts-count @(re-frame/subscribe [:contacts/active-count]) + tribute-to-talk @(re-frame/subscribe [:tribute-to-talk/profile]) + registrar @(re-frame/subscribe [:ens.stateofus/registrar]) + photo-added? @(re-frame/subscribe [:profile/photo-added?])] [large-toolbar/flat-list-with-header-handler (header multiaccount photo-added?) (flat-list-content preferred-name registrar tribute-to-talk - active-contacts-count show-backup-seed? + active-contacts-count mnemonic keycard-pairing notifications-enabled?) list-ref scroll-y])) diff --git a/src/status_im/ui/screens/wallet/accounts/sheets.cljs b/src/status_im/ui/screens/wallet/accounts/sheets.cljs index 7adae9259c..c7ca31efab 100644 --- a/src/status_im/ui/screens/wallet/accounts/sheets.cljs +++ b/src/status_im/ui/screens/wallet/accounts/sheets.cljs @@ -7,7 +7,7 @@ (re-frame/dispatch [:bottom-sheet/hide-sheet]) (re-frame/dispatch event)) -(defn accounts-options [seed-backed-up?] +(defn accounts-options [mnemonic] (fn [] [react/view [list-item/list-item @@ -27,7 +27,7 @@ :title :t/view-signing :icon :main-icons/info :on-press #(hide-sheet-and-dispatch [:show-popover {:view :signing-phrase}])}] - (when-not seed-backed-up? + (when mnemonic [list-item/list-item {:theme :action-destructive :title :t/wallet-backup-recovery-title diff --git a/src/status_im/ui/screens/wallet/accounts/views.cljs b/src/status_im/ui/screens/wallet/accounts/views.cljs index 506b26d44a..bf4ea67af6 100644 --- a/src/status_im/ui/screens/wallet/accounts/views.cljs +++ b/src/status_im/ui/screens/wallet/accounts/views.cljs @@ -113,11 +113,11 @@ 50)}]))) (views/defview accounts-options [] - (views/letsubs [{:keys [seed-backed-up?]} [:multiaccount] + (views/letsubs [{:keys [mnemonic]} [:multiaccount] empty-balances? [:empty-balances?]] [react/view {:flex-direction :row :align-items :center} [react/view {:flex 1 :padding-left 16} - (when (and (not seed-backed-up?) + (when (and mnemonic (not empty-balances?)) [react/touchable-highlight {:on-press #(re-frame/dispatch [:navigate-to :backup-seed])} @@ -139,8 +139,8 @@ [icons/icon :main-icons/qr {:accessibility-label :accounts-qr-code}]]] [react/touchable-highlight {:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet - {:content (sheets/accounts-options seed-backed-up?) - :content-height (if seed-backed-up? 190 250)}])} + {:content (sheets/accounts-options mnemonic) + :content-height (if mnemonic 250 190)}])} [react/view {:height toolbar.styles/toolbar-height :width toolbar.styles/toolbar-height :align-items :center :justify-content :center} diff --git a/test/cljs/status_im/test/multiaccounts/update/core.cljs b/test/cljs/status_im/test/multiaccounts/update/core.cljs index d78599fb9d..8106731110 100644 --- a/test/cljs/status_im/test/multiaccounts/update/core.cljs +++ b/test/cljs/status_im/test/multiaccounts/update/core.cljs @@ -17,4 +17,4 @@ (let [efx (multiaccounts.update/clean-seed-phrase {:db {:multiaccount {:mnemonic "lalalala"}}}) json-rpc (into #{} (map :method (::json-rpc/call efx)))] (is (json-rpc "settings_saveConfig")) - (is (= (get-in efx [:db :multiaccount]) {:seed-backed-up? true, :mnemonic nil})))) + (is (= (get-in efx [:db :multiaccount]) {:mnemonic nil})))) diff --git a/test/cljs/status_im/test/sign_in/data.cljs b/test/cljs/status_im/test/sign_in/data.cljs index 570b35ef89..b5a02fc8b3 100644 --- a/test/cljs/status_im/test/sign_in/data.cljs +++ b/test/cljs/status_im/test/sign_in/data.cljs @@ -140,7 +140,6 @@ :URL "https://poa.infura.io"}} :rpc-url nil}} :photo-path "data:image/png;base64iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAADAFBMVEX////YsYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPGFwxAAABAHRSTlP//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKmfXxgAABnNJREFUeNoBaAaX+QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAQEBAQAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAABAQEBAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAEBAQEAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAQEBAQAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAABAQEBAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAEBAQEAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAQEBAQAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAABAQEBAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAEBAQEAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEAAAAAAQEBAQAAAAABAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQAAAAABAQEBAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAAAAAAEBAQEAAAAAAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAAAAAAEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEAAAAAAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQAAAAABAQEBAQEBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAAAAAAEBAQEBAQEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAloYA4a9rBHIAAAAASUVORK5CYII=" - :seed-backed-up? false :network "mainnet_rpc" :wallet-set-up-passed? false :public-key "0x04173f7cdea0076a7998abb674cc79fe61337c42db77043c01d5b0f3e3ac1e5a45bca0c93bb9f3c3d38b7cc9a7337cd64f9f9b2114fe4bbdfe1ae2633ba14d8c9c"