diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 152ef6f..7974a7d 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -300,6 +300,7 @@ "restore_from_seed_placeholder" : "Bitte geben Sie hier Ihren Code ein", "add_new_word" : "Neues Wort hinzufügen", "incorrect_seed" : "Der eingegebene Text ist ungültig.", + "invalid_seed_words": "\nUngültige Wörter: {words}.", "biometric_auth_reason" : "Scannen Sie Ihren Fingerabdruck zur Authentifizierung", "version" : "Ausführung {currentVersion}", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 1b3c829..f38d4a2 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -317,6 +317,8 @@ "restore_from_seed_placeholder" : "Please enter or paste your seed here", "add_new_word" : "Add new word", "incorrect_seed" : "The text entered is not valid.", + "invalid_seed_words" : "\nInvalid seed words: {words}.", + "@invalid_seed_words" : { "placeholders": {"words": {}}}, "biometric_auth_reason" : "Scan your fingerprint to authenticate", "version" : "Version {currentVersion}", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index c2bb0a7..db063f6 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -301,6 +301,7 @@ "restore_from_seed_placeholder" : "Veuillez entrer votre code ici", "add_new_word" : "Ajouter un nouveau mot", "incorrect_seed" : "Le texte saisi n'est pas valide.", + "invalid_seed_words": "\nMots invalide: {words}.", "biometric_auth_reason" : "Scannez votre empreinte digitale pour l'authentification", "version" : "Version {currentVersion}", diff --git a/lib/src/widgets/seed_widget.dart b/lib/src/widgets/seed_widget.dart index cc758cf..992dbc9 100644 --- a/lib/src/widgets/seed_widget.dart +++ b/lib/src/widgets/seed_widget.dart @@ -23,9 +23,6 @@ class SeedWidget extends StatefulWidget { SeedWidget({required Key key, required this.onMnemonicChange, required this.onFinish, required this.seedLanguage}) : super(key: key) { switch (seedLanguage) { - case 'English': - words = _englishWords; - break; case 'Chinese (simplified)': words = ChineseSimplifiedMnemonics.words; break; @@ -53,6 +50,7 @@ class SeedWidget extends StatefulWidget { case 'Italian': words = ItalianMnemonics.words; break; + case 'English': default: words = _englishWords; } @@ -76,6 +74,7 @@ class SeedWidgetState extends State { MnemonicItem? selectedItem; List currentMnemonics = []; + List invalidWords = []; bool isCurrentMnemonicValid = false; String? _errorMessage; @@ -83,6 +82,7 @@ class SeedWidgetState extends State { void initState() { super.initState(); isCurrentMnemonicValid = false; + invalidWords = []; _seedController .addListener(() => changeCurrentMnemonic(_seedController.text)); } @@ -163,6 +163,8 @@ class SeedWidgetState extends State { final splitted = trimmedText.split(' '); _errorMessage = null; + invalidWords = []; + if (text.isEmpty) { currentMnemonics = []; isCurrentMnemonicValid = false; @@ -176,10 +178,9 @@ class SeedWidgetState extends State { var isValid = true; for (final word in currentMnemonics) { - isValid = word.isCorrect(); - - if (!isValid) { - break; + if (!word.isCorrect()) { + isValid = false; + invalidWords.add(word.text); } } @@ -203,7 +204,9 @@ class SeedWidgetState extends State { void showErrorIfExist(AppLocalizations t) { setState(() => _errorMessage = - !isCurrentMnemonicValid ? t.incorrect_seed : null); + isCurrentMnemonicValid + ? null + : t.incorrect_seed + (invalidWords.isNotEmpty ? t.invalid_seed_words(invalidWords.join(", ")) : "")); } bool isSeedValid() {