From e17e39ef41133b0b0b4006771263155b2b8d691e Mon Sep 17 00:00:00 2001 From: otsmr Date: Sun, 21 Dec 2025 21:56:54 +0100 Subject: [PATCH] fix proof of work issue --- lib/src/localization/app_de.arb | 1 + lib/src/localization/app_en.arb | 1 + .../generated/app_localizations.dart | 6 +++++ .../generated/app_localizations_de.dart | 4 ++++ .../generated/app_localizations_en.dart | 4 ++++ lib/src/views/chats/add_new_user.view.dart | 2 +- lib/src/views/onboarding/register.view.dart | 24 +++++++++++++++---- .../views/settings/profile/profile.view.dart | 2 +- 8 files changed, 38 insertions(+), 6 deletions(-) diff --git a/lib/src/localization/app_de.arb b/lib/src/localization/app_de.arb index 227ad4c..6b1b244 100644 --- a/lib/src/localization/app_de.arb +++ b/lib/src/localization/app_de.arb @@ -20,6 +20,7 @@ "registerUsernameSlogan": "Bitte wähle einen Benutzernamen, damit dich andere finden können!", "registerUsernameDecoration": "Benutzername", "registerUsernameLimits": "Der Benutzername muss mindestens 3 Zeichen lang sein.", + "registerProofOfWorkFailed": "Beim Captcha-Test gab es ein Problem. Bitte versuche es erneut.", "registerSubmitButton": "Jetzt registrieren!", "registerTwonlyCodeText": "Hast du einen twonly-Code erhalten? Dann löse ihn entweder direkt hier oder später ein!", "registerTwonlyCodeLabel": "twonly-Code", diff --git a/lib/src/localization/app_en.arb b/lib/src/localization/app_en.arb index 1223c5a..8610d62 100644 --- a/lib/src/localization/app_en.arb +++ b/lib/src/localization/app_en.arb @@ -20,6 +20,7 @@ "registerUsernameSlogan": "Please select a username so others can find you!", "registerUsernameDecoration": "Username", "registerUsernameLimits": "Your username must be at least 3 characters long.", + "registerProofOfWorkFailed": "There was an issue with the captcha test. Please try again.", "registerSubmitButton": "Register now!", "registerTwonlyCodeText": "Have you received a twonly code? Then redeem it either directly here or later!", "registerTwonlyCodeLabel": "twonly-Code", diff --git a/lib/src/localization/generated/app_localizations.dart b/lib/src/localization/generated/app_localizations.dart index 659b92a..dbc4bc6 100644 --- a/lib/src/localization/generated/app_localizations.dart +++ b/lib/src/localization/generated/app_localizations.dart @@ -218,6 +218,12 @@ abstract class AppLocalizations { /// **'Your username must be at least 3 characters long.'** String get registerUsernameLimits; + /// No description provided for @registerProofOfWorkFailed. + /// + /// In en, this message translates to: + /// **'There was an issue with the captcha test. Please try again.'** + String get registerProofOfWorkFailed; + /// No description provided for @registerSubmitButton. /// /// In en, this message translates to: diff --git a/lib/src/localization/generated/app_localizations_de.dart b/lib/src/localization/generated/app_localizations_de.dart index 98b60c8..2907470 100644 --- a/lib/src/localization/generated/app_localizations_de.dart +++ b/lib/src/localization/generated/app_localizations_de.dart @@ -79,6 +79,10 @@ class AppLocalizationsDe extends AppLocalizations { String get registerUsernameLimits => 'Der Benutzername muss mindestens 3 Zeichen lang sein.'; + @override + String get registerProofOfWorkFailed => + 'Beim Captcha-Test gab es ein Problem. Bitte versuche es erneut.'; + @override String get registerSubmitButton => 'Jetzt registrieren!'; diff --git a/lib/src/localization/generated/app_localizations_en.dart b/lib/src/localization/generated/app_localizations_en.dart index 4b3f2a8..b47d13d 100644 --- a/lib/src/localization/generated/app_localizations_en.dart +++ b/lib/src/localization/generated/app_localizations_en.dart @@ -78,6 +78,10 @@ class AppLocalizationsEn extends AppLocalizations { String get registerUsernameLimits => 'Your username must be at least 3 characters long.'; + @override + String get registerProofOfWorkFailed => + 'There was an issue with the captcha test. Please try again.'; + @override String get registerSubmitButton => 'Register now!'; diff --git a/lib/src/views/chats/add_new_user.view.dart b/lib/src/views/chats/add_new_user.view.dart index f127604..a139303 100644 --- a/lib/src/views/chats/add_new_user.view.dart +++ b/lib/src/views/chats/add_new_user.view.dart @@ -169,7 +169,7 @@ class _SearchUsernameView extends State { }, inputFormatters: [ LengthLimitingTextInputFormatter(12), - FilteringTextInputFormatter.allow(RegExp('[a-z0-9A-Z]')), + FilteringTextInputFormatter.allow(RegExp('[a-z0-9A-Z._]')), ], controller: searchUserName, decoration: diff --git a/lib/src/views/onboarding/register.view.dart b/lib/src/views/onboarding/register.view.dart index 67b6f1c..32a932b 100644 --- a/lib/src/views/onboarding/register.view.dart +++ b/lib/src/views/onboarding/register.view.dart @@ -40,6 +40,7 @@ class _RegisterViewState extends State { bool _isTryingToRegister = false; bool _isValidUserName = false; bool _showUserNameError = false; + bool _showProofOfWorkError = false; late Future? proofOfWork; @@ -63,6 +64,7 @@ class _RegisterViewState extends State { setState(() { _isTryingToRegister = true; _showUserNameError = false; + _showProofOfWorkError = false; }); late int proof; @@ -93,6 +95,7 @@ class _RegisterViewState extends State { Log.info('Got user_id ${res.value} from server'); userId = res.value.userid.toInt() as int; } else { + proofOfWork = null; if (res.error == ErrorCode.RegistrationDisabled) { _registrationDisabled = true; return; @@ -103,9 +106,12 @@ class _RegisterViewState extends State { return createNewUser(); } if (res.error == ErrorCode.InvalidProofOfWork) { - Log.error('Proof of Work is invalid. Try again.'); await deleteLocalUserData(); - return createNewUser(); + setState(() { + _showProofOfWorkError = true; + _isTryingToRegister = false; + }); + return; } if (mounted) { setState(() { @@ -232,7 +238,7 @@ class _RegisterViewState extends State { }, inputFormatters: [ LengthLimitingTextInputFormatter(12), - FilteringTextInputFormatter.allow(RegExp('[a-z0-9A-Z]')), + FilteringTextInputFormatter.allow(RegExp('[a-z0-9A-Z._]')), ], style: const TextStyle(fontSize: 17), decoration: getInputDecoration( @@ -248,7 +254,17 @@ class _RegisterViewState extends State { ), textAlign: TextAlign.center, ), - const SizedBox(height: 30), + const SizedBox(height: 10), + Text( + context.lang.registerProofOfWorkFailed, + style: TextStyle( + color: + _showProofOfWorkError ? Colors.red : Colors.transparent, + fontSize: 12, + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 10), Column( children: [ FilledButton.icon( diff --git a/lib/src/views/settings/profile/profile.view.dart b/lib/src/views/settings/profile/profile.view.dart index 5d24f45..0305740 100644 --- a/lib/src/views/settings/profile/profile.view.dart +++ b/lib/src/views/settings/profile/profile.view.dart @@ -146,7 +146,7 @@ class _ProfileViewState extends State { maxLength: 12, inputFormatters: [ LengthLimitingTextInputFormatter(12), - FilteringTextInputFormatter.allow(RegExp('[a-z0-9A-Z]')), + FilteringTextInputFormatter.allow(RegExp('[a-z0-9A-Z._]')), ], ); if (context.mounted && username != null && username != '') {