213 lines
7.7 KiB
Objective-C
213 lines
7.7 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];
|
|
}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];
|
|
}]];
|
|
}
|
|
|
|
- (void)getHomeAllTopsData {
|
|
RACSubject *banner = [RACSubject subject];
|
|
RACSubject *banner_2 = [RACSubject subject];
|
|
RACSubject *menu = [RACSubject subject];
|
|
RACSubject *rank = [RACSubject subject];
|
|
|
|
RACSignal *bannerSignal = [banner catch:^RACSignal *(NSError *error) {
|
|
return [RACSignal return:nil];
|
|
}];
|
|
|
|
// RACSignal *bannerSignal_2 = [banner_2 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) {
|
|
NSLog(@"");
|
|
}];
|
|
|
|
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];
|
|
}]];
|
|
|
|
// [Api getHomeSecondBannerCompletion:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
|
// NSArray * array = [HomeBannerInfoModel modelsWithArray:data.data];
|
|
// [banner_2 sendNext:array];
|
|
// [banner_2 sendCompleted];
|
|
// }fail:^(NSInteger code, NSString * _Nullable msg) {
|
|
// [banner_2 sendError:nil];
|
|
// [banner_2 sendCompleted];
|
|
// } errorToast:NO] uid:uid type:@"1"];
|
|
}
|
|
|
|
///得到首页轮播图
|
|
- (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);
|
|
// TODO: 不能在 API call 的地方返回 UI 元素
|
|
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];
|
|
}];
|
|
}
|
|
///首页改版资源位
|
|
-(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
|