removed payments polling #633

Merged
tech merged 1 commits from SEND062 into main 2026-03-04 12:55:36 +00:00
2 changed files with 15 additions and 55 deletions
Showing only changes of commit 75f3678b90 - Show all commits

View File

@@ -9,8 +9,6 @@ import 'package:pshared/service/payment/service.dart';
import 'package:pshared/utils/exception.dart';
class PaymentsProvider with ChangeNotifier {
static const Duration _pendingRefreshInterval = Duration(seconds: 10);
OrganizationsProvider? _organizations;
String? _loadedOrganizationRef;
@@ -25,8 +23,6 @@ class PaymentsProvider with ChangeNotifier {
List<String>? _states;
int _opSeq = 0;
Timer? _pendingRefreshTimer;
bool _isPendingRefreshInFlight = false;
Resource<List<Payment>> get resource => _resource;
List<Payment> get payments => _resource.data ?? [];
@@ -89,6 +85,18 @@ class PaymentsProvider with ChangeNotifier {
);
}
Future<void> refreshCurrentQuerySilently() async {
await _refresh(
limit: _limit,
quotationRef: _quotationRef,
createdFrom: _createdFrom,
createdTo: _createdTo,
states: _states,
showLoading: false,
updateError: false,
);
}
void mergePayments(List<Payment> incoming) {
if (incoming.isEmpty) return;
final existing = List<Payment>.from(_resource.data ?? const []);
@@ -228,7 +236,6 @@ class PaymentsProvider with ChangeNotifier {
_createdTo = null;
_states = null;
_resource = Resource(data: []);
_stopPendingRefreshTimer();
notifyListeners();
}
@@ -237,7 +244,6 @@ class PaymentsProvider with ChangeNotifier {
required bool notify,
}) {
_resource = newResource;
_syncPendingRefresh();
if (notify) notifyListeners();
}
@@ -262,52 +268,4 @@ class PaymentsProvider with ChangeNotifier {
if (normalized.isEmpty) return null;
return normalized;
}
void _syncPendingRefresh() {
final hasPending = payments.any((payment) => payment.isPending);
if (!hasPending) {
_stopPendingRefreshTimer();
return;
}
_ensurePendingRefreshTimer();
}
void _ensurePendingRefreshTimer() {
if (_pendingRefreshTimer != null) return;
_pendingRefreshTimer = Timer.periodic(
_pendingRefreshInterval,
(_) => _refreshPending(),
);
_refreshPending();
}
Future<void> _refreshPending() async {
if (_isPendingRefreshInFlight) return;
if (isLoading || isLoadingMore) return;
_isPendingRefreshInFlight = true;
try {
await refreshSilently(
limit: _limit,
quotationRef: _quotationRef,
createdFrom: _createdFrom,
createdTo: _createdTo,
states: _states,
);
} finally {
_isPendingRefreshInFlight = false;
}
}
void _stopPendingRefreshTimer() {
_pendingRefreshTimer?.cancel();
_pendingRefreshTimer = null;
_isPendingRefreshInFlight = false;
}
@override
void dispose() {
_stopPendingRefreshTimer();
super.dispose();
}
}

View File

@@ -1,3 +1,5 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:pshared/models/payment/payment.dart';
@@ -5,7 +7,6 @@ import 'package:pshared/provider/payment/multiple/provider.dart';
import 'package:pshared/provider/payment/payments.dart';
import 'package:pshared/provider/payment/provider.dart';
class PaymentsUpdatesProvider extends ChangeNotifier {
PaymentsProvider? _payments;
PaymentProvider? _paymentProvider;
@@ -66,6 +67,7 @@ class PaymentsUpdatesProvider extends ChangeNotifier {
void _merge(List<Payment> incoming) {
if (incoming.isEmpty) return;
_payments?.mergePayments(incoming);
unawaited(_payments?.refreshCurrentQuerySilently());
for (final payment in incoming) {
final key = _key(payment);
if (key != null) {