redesigned payment page + a lot of fixes

This commit is contained in:
Arseni
2026-02-21 21:55:20 +03:00
parent a68aa2abff
commit 0c6fa03aba
208 changed files with 4062 additions and 2217 deletions

View File

@@ -0,0 +1,63 @@
import 'package:flutter/foundation.dart';
import 'package:pshared/models/auth/state.dart';
import 'package:pshared/provider/account.dart';
import 'package:pweb/models/account/account_loader.dart';
class AccountLoaderController extends ChangeNotifier {
AccountProvider? _provider;
AuthState? _handledState;
AccountLoaderAction? _action;
Object? _error;
AccountLoaderAction? get action => _action;
Object? get error => _error;
void update(AccountProvider provider) {
if (identical(_provider, provider)) return;
_provider?.removeListener(_handleProviderChanged);
_provider = provider;
_provider?.addListener(_handleProviderChanged);
_evaluate(provider);
}
AccountLoaderAction? consumeAction() {
final action = _action;
_action = null;
return action;
}
void _handleProviderChanged() {
final provider = _provider;
if (provider == null) return;
_evaluate(provider);
}
void _evaluate(AccountProvider provider) {
if (_handledState == provider.authState) return;
_handledState = provider.authState;
switch (provider.authState) {
case AuthState.error:
_error = provider.error ?? Exception('Authorization failed');
_action = AccountLoaderAction.showErrorAndGoToLogin;
notifyListeners();
break;
case AuthState.empty:
_error = null;
_action = AccountLoaderAction.goToLogin;
notifyListeners();
break;
default:
break;
}
}
@override
void dispose() {
_provider?.removeListener(_handleProviderChanged);
super.dispose();
}
}