From 36384801ccf0b4e0777e99dfbce90cdff984a37e Mon Sep 17 00:00:00 2001 From: Ulises M Date: Fri, 19 May 2023 22:11:32 +0200 Subject: [PATCH] Add error for seed phrase not valid --- .../onboarding/enter_seed_phrase/view.cljs | 50 +++++++++++-------- translations/en.json | 2 + 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/src/status_im2/contexts/onboarding/enter_seed_phrase/view.cljs b/src/status_im2/contexts/onboarding/enter_seed_phrase/view.cljs index 3f907e6a53..62000002ea 100644 --- a/src/status_im2/contexts/onboarding/enter_seed_phrase/view.cljs +++ b/src/status_im2/contexts/onboarding/enter_seed_phrase/view.cljs @@ -44,7 +44,8 @@ (i18n/label-pluralize seed-phrase-count :t/words-n)]]]) (defn- recovery-form - [{:keys [seed-phrase word-count error-state? all-words-valid? on-change-seed-phrase]}] + [{:keys [seed-phrase word-count error-state? all-words-valid? on-change-seed-phrase + on-invalid-seed-phrase]}] (let [button-disabled? (or error-state? (not (constants/seed-phrase-valid-length word-count)) (not all-words-valid?))] @@ -68,7 +69,7 @@ :disabled button-disabled? :on-press #(rf/dispatch [:onboarding-2/seed-phrase-entered (security/mask-data seed-phrase) - (fn [] (js/alert "Invalid seed phrase"))])} + on-invalid-seed-phrase])} (i18n/label :t/continue)]])) (defn keyboard-suggestions @@ -79,15 +80,20 @@ (defn screen [] - (reagent/with-let [keyboard-shown? (reagent/atom false) - keyboard-show-listener (.addListener rn/keyboard - "keyboardDidShow" - #(reset! keyboard-shown? true)) - keyboard-hide-listener (.addListener rn/keyboard - "keyboardDidHide" - #(reset! keyboard-shown? false)) - seed-phrase (reagent/atom "") - on-change-seed-phrase #(reset! seed-phrase (string/lower-case %))] + (reagent/with-let [keyboard-shown? (reagent/atom false) + keyboard-show-listener (.addListener rn/keyboard + "keyboardDidShow" + #(reset! keyboard-shown? true)) + keyboard-hide-listener (.addListener rn/keyboard + "keyboardDidHide" + #(reset! keyboard-shown? false)) + invalid-seed-phrase? (reagent/atom false) + set-invalid-seed-phrase #(reset! invalid-seed-phrase? true) + seed-phrase (reagent/atom "") + on-change-seed-phrase (fn [new-phrase] + (when @invalid-seed-phrase? + (reset! invalid-seed-phrase? false)) + (reset! seed-phrase (string/lower-case new-phrase)))] (let [words-coll (mnemonic/passphrase->words @seed-phrase) last-word (peek words-coll) pick-suggested-word (fn [pressed-word] @@ -103,21 +109,25 @@ error-in-words? (or (not last-partial-word-valid?) (not butlast-words-valid?)) suggestions-state (cond - (or error-in-words? words-exceeded?) :error + (or error-in-words? + words-exceeded? + @invalid-seed-phrase?) :error (string/blank? @seed-phrase) :info (string/ends-with? @seed-phrase " ") :empty :else :words) suggestions-text (cond - words-exceeded? (i18n/label :t/seed-phrase-words-exceeded) - error-in-words? (i18n/label :t/seed-phrase-error) - :else (i18n/label :t/seed-phrase-info))] + words-exceeded? (i18n/label :t/seed-phrase-words-exceeded) + error-in-words? (i18n/label :t/seed-phrase-error) + @invalid-seed-phrase? (i18n/label :t/seed-phrase-invalid) + :else (i18n/label :t/seed-phrase-info))] [:<> [recovery-form - {:seed-phrase @seed-phrase - :error-state? (= suggestions-state :error) - :all-words-valid? all-words-valid? - :on-change-seed-phrase on-change-seed-phrase - :word-count word-count}] + {:seed-phrase @seed-phrase + :error-state? (= suggestions-state :error) + :all-words-valid? all-words-valid? + :on-change-seed-phrase on-change-seed-phrase + :word-count word-count + :on-invalid-seed-phrase set-invalid-seed-phrase}] (when @keyboard-shown? [rn/view {:style style/keyboard-container} [quo/predictive-keyboard diff --git a/translations/en.json b/translations/en.json index 2a9ca18d4d..84152c416e 100644 --- a/translations/en.json +++ b/translations/en.json @@ -1492,6 +1492,7 @@ "seed-phrase-placeholder": "Type or paste your recovery phrase", "seed-phrase-words-exceeded": "Recovery phrase cannot exceed 24 words", "seed-phrase-error": "Recovery phrase contains invalid words", + "seed-phrase-invalid": "Invalid recovery phrase", "seed-phrase-info": "Enter 12, 18 or 24 words separated by spaces", "word-count": "Word count", "word-n": "Word #{{number}}", @@ -2180,3 +2181,4 @@ "token-gated-communities-info": "Here will be something relevant about this topic. This will help the user get more context and therefore have a better understanding of it.", "dont-yell-at-me": "Don’t yell at me" } +