Fixed pagination tenders for desktop and

added new config for notification
This commit is contained in:
llsajjad
2025-09-21 14:03:32 +03:30
parent 8a289f2d05
commit 6e6f248702
15 changed files with 422 additions and 219 deletions
+41
View File
@@ -54,6 +54,8 @@ class TendersViewModel with ChangeNotifier {
int currentPage = 1;
int _currentOffset = 0;
int _totalPages = 0;
int get totalPages => _totalPages;
static const int _pageSize = 10;
bool _hasMoreData = true;
@@ -117,6 +119,14 @@ class TendersViewModel with ChangeNotifier {
getTenderFeedback(_tendersResponse!.data!.tenders!.first.id!);
getTenderApprovals(_tendersResponse!.data!.tenders!.first.id!);
}
if (_tendersResponse?.meta?.pages != null) {
_totalPages = _tendersResponse!.meta!.pages!;
print('Total pages: $_totalPages');
} else {
_totalPages = 1;
print('Total pages not available, fallback to 1');
}
notifyListeners();
break;
case Error<TendersResponse>():
_errorMessage = result.error.toString();
@@ -500,4 +510,35 @@ class TendersViewModel with ChangeNotifier {
_tenderApprovalErrorMessage = null;
notifyListeners();
}
void jumpToPage(int page) async {
final meta = tendersResponse?.meta;
if (meta?.pages == null) {
return;
}
if (page < 1 || page > meta!.pages!) {
return;
}
currentPage = page;
_currentOffset = (page - 1) * _pageSize;
final result = await _tendersRepository.getTenders(
limit: _pageSize,
offset: _currentOffset,
);
switch (result) {
case Ok<TendersResponse>():
_tendersResponse = result.value;
break;
case Error<TendersResponse>():
_errorMessage = result.error.toString();
break;
}
notifyListeners();
}
}