verification before payment and email fixes

This commit is contained in:
Arseni
2026-02-18 18:15:38 +03:00
parent 4dc182bfa2
commit e901ac3eb6
35 changed files with 1023 additions and 192 deletions

View File

@@ -15,6 +15,7 @@ import 'package:pweb/widgets/password/hint/short.dart';
import 'package:pweb/widgets/password/password.dart';
import 'package:pweb/widgets/username.dart';
import 'package:pweb/widgets/vspacer.dart';
import 'package:pweb/controllers/email.dart';
import 'package:pweb/utils/error/snackbar.dart';
import 'package:pweb/services/posthog.dart';
@@ -31,12 +32,11 @@ class LoginForm extends StatefulWidget {
}
class _LoginFormState extends State<LoginForm> {
final TextEditingController _usernameController = TextEditingController();
final EmailFieldController _emailController = EmailFieldController();
final TextEditingController _passwordController = TextEditingController();
final _formKey = GlobalKey<FormState>();
// ValueNotifiers for validation state
final ValueNotifier<bool> _isUsernameAcceptable = ValueNotifier<bool>(false);
final ValueNotifier<bool> _isPasswordAcceptable = ValueNotifier<bool>(false);
@override
@@ -44,8 +44,7 @@ class _LoginFormState extends State<LoginForm> {
super.initState();
final initialEmail = widget.initialEmail?.trim();
if (initialEmail != null && initialEmail.isNotEmpty) {
_usernameController.text = initialEmail;
_isUsernameAcceptable.value = true;
_emailController.setText(initialEmail);
}
}
@@ -54,7 +53,7 @@ class _LoginFormState extends State<LoginForm> {
try {
final outcome = await provider.login(
email: _usernameController.text,
email: _emailController.text,
password: _passwordController.text,
locale: context.read<LocaleProvider>().locale.languageCode,
);
@@ -74,9 +73,8 @@ class _LoginFormState extends State<LoginForm> {
@override
void dispose() {
_usernameController.dispose();
_emailController.dispose();
_passwordController.dispose();
_isUsernameAcceptable.dispose();
_isPasswordAcceptable.dispose();
super.dispose();
}
@@ -93,8 +91,7 @@ class _LoginFormState extends State<LoginForm> {
const LoginHeader(),
const VSpacer(multiplier: 1.5),
UsernameField(
controller: _usernameController,
onValid: (isValid) => _isUsernameAcceptable.value = isValid,
controller: _emailController,
),
VSpacer(),
defaulRulesPasswordField(
@@ -105,7 +102,7 @@ class _LoginFormState extends State<LoginForm> {
),
VSpacer(multiplier: 2.0),
ValueListenableBuilder<bool>(
valueListenable: _isUsernameAcceptable,
valueListenable: _emailController.isValid,
builder: (context, isUsernameValid, child) => ValueListenableBuilder<bool>(
valueListenable: _isPasswordAcceptable,
builder: (context, isPasswordValid, child) => ButtonsRow(