added pagination in your tenders and some fixes
This commit is contained in:
@@ -14,7 +14,7 @@ class HomeViewModel with ChangeNotifier {
|
||||
final HomeRepository _homeRepository;
|
||||
|
||||
HomeViewModel({required HomeRepository homeRepository})
|
||||
: _homeRepository = homeRepository {
|
||||
: _homeRepository = homeRepository {
|
||||
init();
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class HomeViewModel with ChangeNotifier {
|
||||
TenderApprovalsStateResponse? tenderApprovalsStateResponse;
|
||||
FeedbackStats? feedbackStats;
|
||||
final List<TenderData> _tenders = [];
|
||||
final int _pageSize = 20;
|
||||
final int _pageSize = 10;
|
||||
int _currentPage = 0;
|
||||
bool _isLoadingMore = false;
|
||||
bool _hasMore = true;
|
||||
@@ -44,9 +44,15 @@ class HomeViewModel with ChangeNotifier {
|
||||
bool get isRecommendedMode => _isRecommendedMode;
|
||||
|
||||
void init() async {
|
||||
_isLoading = true;
|
||||
notifyListeners();
|
||||
|
||||
await getApprovedStates();
|
||||
await getYourTenders(reset: true);
|
||||
await getFeedbackStats();
|
||||
|
||||
_isLoading = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> getHomeRecommendTenders({bool reset = false}) async {
|
||||
@@ -93,62 +99,59 @@ class HomeViewModel with ChangeNotifier {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> getYourTenders({bool reset = false}) async {
|
||||
if (_isLoadingMore || (!_hasMore && !reset)) {
|
||||
return;
|
||||
}
|
||||
Future<void> getYourTenders({bool reset = false}) async {
|
||||
if (_isLoadingMore || (!_hasMore && !reset)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (reset) {
|
||||
_currentPage = 0;
|
||||
_hasMore = true;
|
||||
_tenders.clear();
|
||||
}
|
||||
if (reset) {
|
||||
_currentPage = 0;
|
||||
_hasMore = true;
|
||||
_tenders.clear();
|
||||
}
|
||||
|
||||
_isLoadingMore = true;
|
||||
_errorMessage = null;
|
||||
_isRecommendedMode = false;
|
||||
notifyListeners();
|
||||
_isLoadingMore = true;
|
||||
_errorMessage = null;
|
||||
_isRecommendedMode = false;
|
||||
notifyListeners();
|
||||
|
||||
final result = await _homeRepository.getYourTenders(
|
||||
limit: _pageSize,
|
||||
offset: _currentPage * _pageSize,
|
||||
);
|
||||
final result = await _homeRepository.getYourTenders(
|
||||
limit: _pageSize,
|
||||
offset: _currentPage * _pageSize,
|
||||
);
|
||||
|
||||
switch (result) {
|
||||
case Ok<TenderApprovalsResponse>():
|
||||
data = result.value;
|
||||
switch (result) {
|
||||
case Ok<TenderApprovalsResponse>():
|
||||
data = result.value;
|
||||
|
||||
final tendersList = data?.data?.tenders ?? [];
|
||||
final metadata = data?.data?.metadata;
|
||||
final tendersList = data?.data?.tenders ?? [];
|
||||
final metadata = data?.data?.metadata;
|
||||
|
||||
if (tendersList.isNotEmpty) {
|
||||
_tenders.addAll(
|
||||
tendersList.map((e) => e.tender).whereType<TenderData>(),
|
||||
);
|
||||
_currentPage++;
|
||||
if (tendersList.isNotEmpty) {
|
||||
_tenders.addAll(
|
||||
tendersList.map((e) => e.tender).whereType<TenderData>(),
|
||||
);
|
||||
_currentPage++;
|
||||
|
||||
if (metadata != null && (_currentPage >= metadata.pages!)) {
|
||||
if (metadata != null && (_currentPage >= metadata.pages!)) {
|
||||
_hasMore = false;
|
||||
}
|
||||
} else {
|
||||
_hasMore = false;
|
||||
}
|
||||
} else {
|
||||
_hasMore = false;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
|
||||
case Error<TenderApprovalsResponse>():
|
||||
_errorMessage = result.error.toString();
|
||||
break;
|
||||
case Error<TenderApprovalsResponse>():
|
||||
_errorMessage = result.error.toString();
|
||||
break;
|
||||
}
|
||||
|
||||
_isLoadingMore = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
_isLoadingMore = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
|
||||
Future<void> getApprovedStates() async {
|
||||
_isLoading = true;
|
||||
_errorMessage = null;
|
||||
notifyListeners();
|
||||
|
||||
final result = await _homeRepository.getTendersApprovalsState();
|
||||
|
||||
@@ -160,15 +163,10 @@ Future<void> getYourTenders({bool reset = false}) async {
|
||||
_errorMessage = result.error.toString();
|
||||
break;
|
||||
}
|
||||
|
||||
_isLoading = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> getFeedbackStats() async {
|
||||
_isLoading = true;
|
||||
_errorMessage = null;
|
||||
notifyListeners();
|
||||
|
||||
final result = await _homeRepository.getFeedbackStats();
|
||||
|
||||
@@ -180,9 +178,6 @@ Future<void> getYourTenders({bool reset = false}) async {
|
||||
_errorMessage = result.error.toString();
|
||||
break;
|
||||
}
|
||||
|
||||
_isLoading = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
double get partnershipCount {
|
||||
|
||||
Reference in New Issue
Block a user