// // YMHomePageListViewModel.m // MSYOUPAI // // Created by YoMi on 2024/2/11. // Copyright © 2024 MS. All rights reserved. // #import "YMHomePageListViewModel.h" #import "YMHomeListModel.h" @interface YMHomePageListViewModel () /// 当前数据数量 @property (nonatomic, assign) NSInteger currentSize; /// 首页分类类型 @property (nonatomic, assign, readwrite) YMHomePageCategoryType categoryType; /// 列表数据 @property (nonatomic, strong, readwrite) NSMutableArray *listDataArray; /// 请求Api链接 @property (nonatomic, copy) NSString *requestApiUrl; @end @implementation YMHomePageListViewModel - (void)ym_initialize{ [super ym_initialize]; self.currentPage = 1; self.currentSize = 50; self.categoryType = [self.params integerValueForKey:ParamsCategoryType defaultValue:YMHomePageCategoryTypeHomeRecommend]; self.requestApiUrl = self.tabURLStr; switch (self.categoryType) { case YMHomePageCategoryTypeHomeIndex: { self.requestApiUrl = self.tabURLStr; } break; case YMHomePageCategoryTypeHomeSkillAnchors: { self.requestApiUrl = HomeSkillAnchors; } break; case YMHomePageCategoryTypeHomeRecommendAnchors: { self.requestApiUrl = HomeRecommendAnchors; } break; case YMHomePageCategoryTypeHomeRecommend: { self.requestApiUrl = HomeRecommend; } break; case YMHomePageCategoryTypeHomeWCW: { self.requestApiUrl = HomeWCW; } break; case YMHomePageCategoryTypeHomeOnlineList: { self.requestApiUrl = HomeOnlineList; } break; case YMHomePageCategoryTypeHomeOnline: { self.requestApiUrl = HomeOnline; } break; case YMHomePageCategoryTypeHomeGetDesignated: { self.requestApiUrl = HomeGetDesignated; } break; case YMHomePageCategoryTypeHomeGetSameCityUser: { self.requestApiUrl = HomeGetSameCityUser; } break; case YMHomePageCategoryTypeHomeActiveAnchors: { self.requestApiUrl = HomeActiveAnchors; } break; case YMHomePageCategoryTypeHomeNewAnchors: { self.requestApiUrl = HomeNewAnchors; } break; case YMHomePageCategoryTypeHomeCityAnchors: { self.requestApiUrl = HomeCityAnchors; } break; case YMHomePageCategoryTypeHomeBanner: { self.requestApiUrl = HomeBanner; } break; default: break; } } - (void)getHomePageListData { @weakify(self) // [ZCHUDHelper showWithStatus:@"加载中..."]; [LCHttpHelper requestWithURLString:self.tabURLStr parameters:@{ @"page":@(self.currentPage), @"limit":@(self.currentSize) } needToken:YES type:HttpRequestTypePost success:^(id responseObject) { @strongify(self) NSDictionary* dict = (NSDictionary*)responseObject; NSInteger code = [[dict objectForKey:@"code"] integerValue]; if (code == 0) { // [ZCHUDHelper dismiss]; NSDictionary *data = [dict dictionaryValueForKey:@"data" defaultValue:@{}]; NSDictionary *activityDic = [data dictionaryValueForKey:@"activity" defaultValue:@{}]; NSDictionary *listDic = [data dictionaryValueForKey:@"list" defaultValue:@{}]; NSArray *result = [listDic arrayValueForKey:@"list" defaultValue:@[]]; if (self.currentPage == 1) { [self.listDataArray removeAllObjects]; } NSArray *viewModelArr = [[NSArray yy_modelArrayWithClass:[YMHomeListModel class] json:result].rac_sequence map:^(YMHomeListModel * _Nullable model) { YMHomePageListCellViewModel *viewModel = [[YMHomePageListCellViewModel alloc]initWithParams:@{ ParamsModel:model }]; return viewModel; }].array; [self.listDataArray addObjectsFromArray:viewModelArr]; if(self.currentPage > 0 && self.currentPage % 5 == 0){ [[SDImageCache sharedImageCache] clearMemory]; } if (self.showUserInfoImperfectBlock) { self.showUserInfoImperfectBlock([activityDic boolValueForKey:@"is_info" defaultValue:NO]); } [self.refreshUISubject sendNext:@(result.count < self.currentSize ? YMFooterRefresh_HasNoMoreData : YMFooterRefresh_HasMoreData)]; }else{ [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.refreshUISubject sendNext:@(YMRefreshError)]; }); } } failure:^(NSError *error) { if(self.currentPage != 1){ self.currentPage--; } [ZCHUDHelper showTitle:error.localizedDescription]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.refreshUISubject sendNext:@(YMRefreshError)]; }); }]; } - (NSMutableArray *)listDataArray{ if (!_listDataArray) { _listDataArray = [NSMutableArray array]; } return _listDataArray; } @end