fixed some bug

This commit is contained in:
llsajjad
2025-08-25 15:23:39 +03:30
parent c54bdbe4f7
commit b0d5a23a9a
6 changed files with 185 additions and 92 deletions
+11 -4
View File
@@ -13,7 +13,7 @@ class HomeViewModel with ChangeNotifier {
final HomeRepository _homeRepository;
HomeViewModel({required HomeRepository homeRepository})
: _homeRepository = homeRepository {
: _homeRepository = homeRepository {
init();
}
@@ -34,9 +34,14 @@ class HomeViewModel with ChangeNotifier {
int _currentPage = 0;
bool _isLoadingMore = false;
bool _hasMore = true;
/// آیا الان در حالت Recommended هستیم یا YourTenders
bool _isRecommendedMode = false;
List<TenderData> get tenders => _tenders;
bool get isLoadingMore => _isLoadingMore;
bool get hasMore => _hasMore;
bool get isRecommendedMode => _isRecommendedMode;
void init() async {
await getApprovedStates();
@@ -66,9 +71,7 @@ class HomeViewModel with ChangeNotifier {
}
Future<void> getHomeRecommandTenders({bool reset = false}) async {
if (_isLoadingMore || (!_hasMore && !reset)) {
return;
}
if (_isLoadingMore || (!_hasMore && !reset)) return;
if (reset) {
_currentPage = 0;
@@ -78,6 +81,7 @@ class HomeViewModel with ChangeNotifier {
_isLoadingMore = true;
_errorMessage = null;
_isRecommendedMode = true; // ✅ اینجا یعنی در حالت Recommended هستیم
notifyListeners();
final result = await _homeRepository.getHomeRecommendedTenders(
@@ -98,6 +102,7 @@ class HomeViewModel with ChangeNotifier {
_hasMore = false;
}
break;
case Error<RecommendedTendersResponse>():
_errorMessage = result.error.toString();
break;
@@ -109,6 +114,7 @@ class HomeViewModel with ChangeNotifier {
Future<void> getYourTenders() async {
_isLoading = true;
_isRecommendedMode = false; // ✅ وقتی YourTenders میاد → بدون pagination
notifyListeners();
final result = await _homeRepository.getYourTenders();
@@ -119,6 +125,7 @@ class HomeViewModel with ChangeNotifier {
_errorMessage = null;
if (data?.data?.isEmpty ?? true) {
// اگه YourTenders خالی بود → برو سمت Recommended
await getHomeRecommandTenders(reset: true);
} else {
_tenders.clear();