redesigned payment page + a lot of fixes
This commit is contained in:
@@ -13,9 +13,11 @@ import 'package:pshared/models/asset.dart';
|
||||
import 'package:pshared/models/payment/intent.dart';
|
||||
import 'package:pshared/models/payment/quote/quote.dart';
|
||||
import 'package:pshared/models/money.dart';
|
||||
import 'package:pshared/models/auto_refresh_mode.dart';
|
||||
import 'package:pshared/provider/organizations.dart';
|
||||
import 'package:pshared/provider/payment/amount.dart';
|
||||
import 'package:pshared/provider/payment/flow.dart';
|
||||
import 'package:pshared/provider/payment/auto_refresh.dart';
|
||||
import 'package:pshared/provider/recipient/provider.dart';
|
||||
import 'package:pshared/provider/recipient/pmethods.dart';
|
||||
import 'package:pshared/provider/resource.dart';
|
||||
@@ -31,6 +33,8 @@ class QuotationProvider extends ChangeNotifier {
|
||||
bool _isLoaded = false;
|
||||
PaymentIntent? _lastIntent;
|
||||
final QuotationIntentBuilder _intentBuilder = QuotationIntentBuilder();
|
||||
final AutoRefreshScheduler _autoRefresh = AutoRefreshScheduler();
|
||||
AutoRefreshMode _autoRefreshMode = AutoRefreshMode.on;
|
||||
|
||||
void update(
|
||||
OrganizationsProvider venue,
|
||||
@@ -59,6 +63,7 @@ class QuotationProvider extends ChangeNotifier {
|
||||
Exception? get error => _quotation.error;
|
||||
bool get canRefresh => _lastIntent != null;
|
||||
bool get isReady => _isLoaded && !_quotation.isLoading && _quotation.error == null;
|
||||
AutoRefreshMode get autoRefreshMode => _autoRefreshMode;
|
||||
|
||||
DateTime? get quoteExpiresAt {
|
||||
final expiresAtUnixMs = quotation?.fxQuote?.expiresAtUnixMs;
|
||||
@@ -78,6 +83,14 @@ class QuotationProvider extends ChangeNotifier {
|
||||
|
||||
void _setResource(Resource<PaymentQuote> quotation) {
|
||||
_quotation = quotation;
|
||||
_syncAutoRefresh();
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void setAutoRefreshMode(AutoRefreshMode mode) {
|
||||
if (_autoRefreshMode == mode) return;
|
||||
_autoRefreshMode = mode;
|
||||
_syncAutoRefresh();
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
@@ -122,4 +135,24 @@ class QuotationProvider extends ChangeNotifier {
|
||||
final payload = jsonEncode(intent.toDTO().toJson());
|
||||
return Uuid().v5(Namespace.url.value, 'quote:$payload');
|
||||
}
|
||||
|
||||
void _syncAutoRefresh() {
|
||||
final isEnabled = _autoRefreshMode == AutoRefreshMode.on;
|
||||
_autoRefresh.setEnabled(isEnabled);
|
||||
final canAutoRefresh = isEnabled && canRefresh;
|
||||
_autoRefresh.sync(
|
||||
isLoading: isLoading,
|
||||
canRefresh: canAutoRefresh,
|
||||
scheduledAt: quoteExpiresAt,
|
||||
onRefresh: () async {
|
||||
await refreshQuotation();
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_autoRefresh.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user