Fixed Ads Filter

aamir_dev
Faiz Hashmi 1 year ago
parent 450dfff6e8
commit 0230afc5c7

@ -20,7 +20,7 @@ abstract class AdsRepo {
Future<GenericRespModel> createOrUpdateAd({required AdsCreationPayloadModel adsCreationPayloadModel, required bool isCreateNew});
Future<List<AdDetailsModel>> getAllAds({required bool isMyAds});
Future<List<AdDetailsModel>> getAllAds({required bool isMyAds, AdPostStatus? adPostStatus, CreatedByRoleEnum? createdByRoleEnum});
Future<List<AdDetailsModel>> getExploreAdsBasedOnFilters({List<String>? cityIdsList, List<String>? vehicleModelYearIdsList, List<String>? vehicleBrandIdsList, List<String>? createdByRolesIdsList});
@ -140,16 +140,26 @@ class AdsRepoImp implements AdsRepo {
}
@override
Future<List<AdDetailsModel>> getAllAds({required isMyAds}) async {
var onlyMyAdsParams = {
Future<List<AdDetailsModel>> getAllAds({required isMyAds, AdPostStatus? adPostStatus, CreatedByRoleEnum? createdByRoleEnum}) async {
Map<String, dynamic> onlyMyAdsParams = {
"userID": appState.getUser.data!.userInfo!.userId ?? "",
};
if (isMyAds && adPostStatus != null) {
onlyMyAdsParams.addAll({
"AdsStatuses": ["${adPostStatus.getIdFromAdPostStatusEnum()}"]
});
}
var allAdsParams = {
"AdsStatuses": ["${AdPostStatus.active.getIdFromAdPostStatusEnum()}"], //only Active ADS
"isActive": "true", //only Active ADS
"isExplore": "true"
};
if (!isMyAds && createdByRoleEnum != null) {
allAdsParams.addAll({
"CreatedByRoles": ["${createdByRoleEnum.getIdFromCreatedByRoleEnum()}"],
});
}
GenericRespModel adsGenericModel = await apiClient.getJsonForObject(
token: appState.getUser.data!.accessToken,
(json) => GenericRespModel.fromJson(json),

@ -198,7 +198,7 @@ class AdVM extends BaseVM {
notifyListeners();
}
applyFilterOnExploreAds({required CreatedByRoleEnum createdByRoleFilter}) {
applyFilterOnExploreAds({required CreatedByRoleEnum createdByRoleFilter}) async {
if (exploreAdsFilterOptions.isEmpty) return;
int index = exploreAdsFilterOptions.indexWhere((element) => element.id.toCreatedByRoleEnum() == createdByRoleFilter);
@ -212,12 +212,16 @@ class AdVM extends BaseVM {
return;
}
exploreAdsFilteredList = exploreAds.where((element) => element.createdByRoleEnum == createdByRoleFilter).toList();
exploreAdsFilteredList = await getAdsByFilter(createdByRoleEnum: createdByRoleFilter, isMyAds: false);
notifyListeners();
}
applyFilterOnMyAds({required AdPostStatus adPostStatusEnum}) {
Future<List<AdDetailsModel>> getAdsByFilter({AdPostStatus? adPostStatus, required bool isMyAds, CreatedByRoleEnum? createdByRoleEnum}) async {
return await adsRepo.getAllAds(isMyAds: isMyAds, adPostStatus: adPostStatus, createdByRoleEnum: createdByRoleEnum);
}
applyFilterOnMyAds({required AdPostStatus adPostStatusEnum}) async {
if (myAdsFilterOptions.isEmpty) return;
int index = myAdsFilterOptions.indexWhere((element) => element.id.toAdPostEnum() == adPostStatusEnum);
@ -240,8 +244,9 @@ class AdVM extends BaseVM {
notifyListeners();
return;
}
myAdsFilteredList = myAds.where((element) => element.statusID! == adPostStatusEnum.getIdFromAdPostStatusEnum()).toList();
setState(ViewState.busy);
myAdsFilteredList = await getAdsByFilter(adPostStatus: adPostStatusEnum, isMyAds: true);
setState(ViewState.idle);
notifyListeners();
}

@ -30,6 +30,7 @@ class AdsListWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
if (isAdsFragment && adsList.isEmpty) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,

@ -128,7 +128,11 @@ class AdsFragment extends StatelessWidget {
await adVM.getExploreAds();
await adVM.getMyAds();
},
child: AdsListWidget(isAdsFragment: true, shouldShowAdStatus: !adVM.isExploreAdsTapped, adsList: getAdsList(adVM)),
child: adVM.state == ViewState.busy
? const Center(
child: CircularProgressIndicator(),
)
: AdsListWidget(isAdsFragment: true, shouldShowAdStatus: !adVM.isExploreAdsTapped, adsList: getAdsList(adVM)),
),
)
],

Loading…
Cancel
Save