Show accepted signup delivery without a second send step (#62)

This commit is contained in:
Stephan D committed 2026-10-23 09:34:30 +02:00
1 parent e84d2d1ad3
commit 3af60f38b1
19 files changed
+421 -69

No files matched your search

+24 -8
View File
@@ -15,9 +15,10 @@ import '../routing/routes.dart';
import '../generated/i18n/app_localizations.dart';
class VerificationPage extends StatefulWidget {
const VerificationPage({super.key, this.email, this.token});
const VerificationPage({super.key, this.email, this.token, this.delivery});
final String? email;
final String? token;
final VerificationDelivery? delivery;
@override
State<VerificationPage> createState() => _VerificationPageState();
@@ -25,9 +26,12 @@ class VerificationPage extends StatefulWidget {
class _VerificationPageState extends State<VerificationPage> {
final _form = GlobalKey<FormState>();
late final _email = TextEditingController(text: widget.email);
late final _email = TextEditingController(
text: widget.delivery?.email ?? widget.email,
);
late final _provider = VerificationProvider(
context.read<VerificationService>(),
delivery: widget.delivery,
);
final _emailFocus = FocusNode();
String? _recipient;
@@ -44,7 +48,7 @@ class _VerificationPageState extends State<VerificationPage> {
if (!mounted) return;
if (widget.token != null) {
_provider.confirm(widget.token!);
} else if (_email.text.isNotEmpty) {
} else if (widget.delivery == null && _email.text.isNotEmpty) {
_send();
}
});
@@ -58,14 +62,26 @@ class _VerificationPageState extends State<VerificationPage> {
@override
void didUpdateWidget(covariant VerificationPage oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.token == widget.token) return;
context.read<JourneyRecorder>().abandon(JourneyExit.navigation);
_provider.reset();
if (oldWidget.token == widget.token &&
oldWidget.email == widget.email &&
identical(oldWidget.delivery, widget.delivery)) {
return;
}
if (oldWidget.token != widget.token) {
context.read<JourneyRecorder>().abandon(JourneyExit.navigation);
}
_provider.reset(delivery: widget.delivery);
_lastWasSend = false;
_validated = false;
_email.clear();
_recipient = null;
_email.text = widget.delivery?.email ?? widget.email ?? '';
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted && widget.token != null) _provider.confirm(widget.token!);
if (!mounted) return;
if (widget.token != null) {
_provider.confirm(widget.token!);
} else if (widget.delivery == null && _email.text.isNotEmpty) {
_send();
}
});
}