auto retry the proof of work

This commit is contained in:
otsmr 2026-09-10 23:37:07 +02:00
parent e8f32f43d6
commit acf0d25a5e

View file

@ -56,7 +56,7 @@ class _RegisterViewState extends State<RegisterView> {
_registrationDisabled = widget.proofOfWork.$2; _registrationDisabled = widget.proofOfWork.$2;
} }
Future<void> createNewUser() async { Future<void> createNewUser({bool retryInvalidProofOfWork = true}) async {
if (!_isValidUserName) { if (!_isValidUserName) {
setState(() { setState(() {
_usernameErrorText = context.lang.registerUsernameLimits; _usernameErrorText = context.lang.registerUsernameLimits;
@ -86,7 +86,7 @@ class _RegisterViewState extends State<RegisterView> {
_registrationDisabled = registrationDisabled; _registrationDisabled = registrationDisabled;
_isTryingToRegister = false; _isTryingToRegister = false;
}); });
if (mounted) { if (mounted && !registrationDisabled) {
showNetworkIssue(context); showNetworkIssue(context);
} }
return; return;
@ -136,6 +136,13 @@ class _RegisterViewState extends State<RegisterView> {
} }
if (res.error == ErrorCode.InvalidProofOfWork) { if (res.error == ErrorCode.InvalidProofOfWork) {
await deleteLocalUserData(); await deleteLocalUserData();
if (retryInvalidProofOfWork) {
Log.warn(
'Proof of work was invalid. Requesting a new challenge and '
'retrying registration.',
);
return await createNewUser(retryInvalidProofOfWork: false);
}
setState(() { setState(() {
_showProofOfWorkError = true; _showProofOfWorkError = true;
_isTryingToRegister = false; _isTryingToRegister = false;