Files
peko-ios/YuMi/Modules/YMNewHome/Presenter/XPHomeContainerPresenter.m

208 lines
7.5 KiB
Objective-C

//
// XPHomeContainerPresenter.m
// YuMi
//
// Created by YuMi on 2021/12/2.
//
#import "XPHomeContainerPresenter.h"
#import <ReactiveObjC/ReactiveObjC.h>
#import "Api+Home.h"
#import "AccountInfoStorage.h"
#import "HomeTagModel.h"
#import "XPHomeContainerProtocol.h"
#import "AccountInfoStorage.h"
#import "HomeBannerInfoModel.h"
#import "PIHomeItemModel.h"
#import "PIHomeCategoryTitleModel.h"
#import "HomeRankAvatarModel.h"
#import "HomePlayRoomModel.h"
@implementation XPHomeContainerPresenter
- (void)getHomeTopData {
RACSubject *banner = [RACSubject subject];
RACSubject *menu = [RACSubject subject];
[[RACSignal combineLatest:@[banner, menu] reduce:^id(NSArray* bannerList, NSArray* menuList){
//在这里 进行请求后的方法,回到主线程
dispatch_async(dispatch_get_main_queue(), ^{
[[self getView] getHomeTopDataSuccess:bannerList menuList:menuList];
});
return nil;
}] subscribeError:^(NSError * _Nullable error) {
}];
NSString * uid = [AccountInfoStorage instance].getUid;
[Api homeBannerList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [HomeBannerInfoModel modelsWithArray:data.data];
[banner sendNext:array];
[banner sendCompleted];
[menu sendNext:@[]];
[menu sendCompleted];
}fail:^(NSInteger code, NSString * _Nullable msg) {
[banner sendError:nil];
[banner sendCompleted];
[menu sendError:nil];
[menu sendCompleted];
} errorToast:NO] uid:uid type:@"1"];
// [Api requestCurrentResourceListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
// NSArray *list = [PIHomeItemModel modelsWithArray:data.data];
// [menu sendNext:list];
// [menu sendCompleted];
// }fail:^(NSInteger code, NSString * _Nullable msg) {
// [menu sendError:nil];
// [menu sendCompleted];
// }]];
}
//- (void)getHomeAllTopsData {
// RACSubject *banner = [RACSubject subject];
// RACSubject *menu = [RACSubject subject];
// RACSubject *rank = [RACSubject subject];
//
// RACSignal *bannerSignal = [banner catch:^RACSignal *(NSError *error) {
// return [RACSignal return:nil];
// }];
// RACSignal *menuSignal = [menu catch:^RACSignal *(NSError *error) {
// return [RACSignal return:nil];
// }];
//
// RACSignal *rankSignal = [rank catch:^RACSignal *(NSError *error) {
// return [RACSignal return:nil];
// }];
//
// RACSignal *combinedSignal = [RACSignal combineLatest:@[bannerSignal, menuSignal, rankSignal]
// reduce:^id(NSArray* bannerList, NSArray* menuList, NSArray *rankAvatars) {
// return @[bannerList ?: @[],
// menuList ?: @[],
// rankAvatars ?: @[]];
// }];
//
// @kWeakify(self);
// [[combinedSignal deliverOn:RACScheduler.mainThreadScheduler]
// subscribeNext:^(NSArray *combinedValues) {
// @kStrongify(self);
// [[self getView] getHomeTopDataSuccess:[combinedValues xpSafeObjectAtIndex:0]
// banners:[combinedValues xpSafeObjectAtIndex:1]
// rankAvatars:[combinedValues xpSafeObjectAtIndex:2]];
// } error:^(NSError * _Nullable error) {
//
// }];
//
// NSString * uid = [AccountInfoStorage instance].getUid;
// [Api homeBannerList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
// NSArray * array = [HomeBannerInfoModel modelsWithArray:data.data];
// [banner sendNext:array];
// [banner sendCompleted];
// }fail:^(NSInteger code, NSString * _Nullable msg) {
// [banner sendError:nil];
// [banner sendCompleted];
// } errorToast:NO] uid:uid type:@"1"];
//
// [Api requestCurrentResourceListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
// NSArray *list = [PIHomeItemModel modelsWithArray:data.data];
// [menu sendNext:list];
// [menu sendCompleted];
// }fail:^(NSInteger code, NSString * _Nullable msg) {
// [menu sendError:nil];
// [menu sendCompleted];
// }]];
//
// [Api getHomeRanksCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
// NSArray *list = [HomeRankAvatarModel modelsWithArray:data.data];
// [rank sendNext:list];
// [rank sendCompleted];
// }fail:^(NSInteger code, NSString * _Nullable msg) {
// [rank sendError:nil];
// [rank sendCompleted];
// }]];
//}
///得到首页轮播图
- (void)getHomeTopBannerList{
NSString * uid = [AccountInfoStorage instance].getUid;
@kWeakify(self);
[Api homeBannerList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
@kStrongify(self);
NSArray * array = [HomeBannerInfoModel modelsWithArray:data.data];
[[self getView] getHomeTopBannerListSuccess:array];
}fail:^(NSInteger code, NSString * _Nullable msg) {
} errorToast:NO] uid:uid type:@"1"];
}
/// 获取所有的房间的tag
- (void)getHomeTagList {
@kWeakify(self);
[Api getHomeTabsCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
@kStrongify(self);
if (code == 200) {
NSArray *array = [PIHomeCategoryTitleModel modelsWithArray:data.data];
for (PIHomeCategoryTitleModel *model in array) {
model.checkedWidth = [UILabel getWidthWithText:model.name height:kGetScaleWidth(44) font:kFontSemibold(16)];
model.noCheckedWidth = [UILabel getWidthWithText:model.name height:kGetScaleWidth(44) font:kFontRegular(14)];
}
[[self getView] getHomeTagListSuccess:array];
} else {
[[self getView] getHomeTagListFailure];
[[self getView] showErrorToast:msg];
}
}];
}
///首页改版资源位
-(void)getCurrentResourceList{
@kWeakify(self);
[Api requestCurrentResourceListCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
@kStrongify(self);
NSArray *list = [PIHomeItemModel modelsWithArray:data.data];
[[self getView]getCurrentResourceListSuccess:list];
}]];
}
/// 一键匹配
- (void)homeChatPick {
@kWeakify(self);
[Api homeChatPick:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
@kStrongify(self);
if (data.data) {
NSString *uid = [NSString stringWithFormat:@"%@",data.data];
[[self getView] homeChatPickSuccess:uid];
}else{
[[self getView] homeChatPickFail:data.message];
}
}fail:^(NSInteger code, NSString * _Nullable msg) {
@kStrongify(self);
[[self getView] homeChatPickFail:msg];
} showLoading:YES errorToast:YES]];
}
///ip检测
-(void)checkIpRegionAction{
[Api checkIpRegionComplection:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if(code == 200){
if(data.data != nil){
NSInteger time = [data.data integerValue]/1000;
[[self getView]checkIpRegionSuccess:time];
}
return;
}
if(code == 401){
[[self getView]checkIpRegionFailWithMsg:msg];
}
}];
}
- (void)getHomeRanks {
@kWeakify(self);
[Api getHomeRanksCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
@kStrongify(self);
if (code == 200) {
NSArray *list = [HomeRankAvatarModel modelsWithArray:data.data];
[[self getView] getHomeRanksSuccess:list];
}
}];
}
@end