removed payments polling
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user