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

229 lines
9.3 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// CreateEventPresenter.m
// YuMi
//
// Created by P on 2025/5/9.
//
#import "CreateEventPresenter.h"
#import "Api+EventCenter.h"
#import <ReactiveObjC/ReactiveObjC.h>
@interface CreateEventPresenter()
@end
@implementation CreateEventPresenter
// Maybe 用一个方法 + 枚举指来指代一个功能类型的 api call
- (void)loadConfig {
[Api usereventGoldConfig:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if ([[self getView] respondsToSelector:@selector(loadCongfigSuccess:)]) {
[[self getView] loadCongfigSuccess:[EventConfigModel modelWithJSON:data.data]];
}
} fail:^(NSInteger code, NSString * _Nullable msg) {
if ([[self getView] respondsToSelector:@selector(loadCongfigFailure:)]) {
[[self getView] loadCongfigFailure:msg];
}
} showLoading:YES errorToast:YES]
uid:[AccountInfoStorage instance].getUid];
}
- (void)loadOfficialEvents {
// TODO: 补充官方活动数据 / 调整创建活动时,选择开始时间的 bug
[Api homeBanner:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if ([[self getView] respondsToSelector:@selector(officialEventListSuccess:)]) {
[[self getView] officialEventListSuccess:[EventConfigModel modelWithJSON:data.data]];
}
} fail:^(NSInteger code, NSString * _Nullable msg) {
if ([[self getView] respondsToSelector:@selector(officialEventListFailure:)]) {
[[self getView] officialEventListFailure:msg];
}
} showLoading:YES errorToast:YES] uid:[AccountInfoStorage instance].getUid type:@"1" activityShow:@(1)];
}
- (void)loadEventSquare:(NSInteger)page {
[Api usereventSquare:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if ([[self getView] respondsToSelector:@selector(eventSquareListSuccess:)]) {
[[self getView] eventSquareListSuccess:[EventItemModel modelsWithArray:data.data]];
}
} fail:^(NSInteger code, NSString * _Nullable msg) {
if ([[self getView] respondsToSelector:@selector(eventSquareListFailure:)]) {
[[self getView] eventSquareListFailure:msg];
}
} showLoading:YES errorToast:YES] page:@(page) pageSize:@20];
}
- (void)loadMyCreateEvents:(NSInteger)page {
[Api usereventMySquare:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if ([[self getView] respondsToSelector:@selector(myCreateEventListSuccess:)]) {
[[self getView] myCreateEventListSuccess:[EventItemModel modelsWithArray:data.data]];
}
} fail:^(NSInteger code, NSString * _Nullable msg) {
if ([[self getView] respondsToSelector:@selector(myCreateEventListFailure:)]) {
[[self getView] myCreateEventListFailure:msg];
}
} showLoading:YES errorToast:YES]
page:@(page)
pageSize:@20
uid:[AccountInfoStorage instance].getUid];
}
- (void)loadMySubEvents:(NSInteger)page {
[Api usereventMySub:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if ([[self getView] respondsToSelector:@selector(mySubEventListSuccess:)]) {
[[self getView] mySubEventListSuccess:[EventItemModel modelsWithArray:data.data]];
}
} fail:^(NSInteger code, NSString * _Nullable msg) {
if ([[self getView] respondsToSelector:@selector(mySubEventListFailure:)]) {
[[self getView] mySubEventListFailure:msg];
}
} showLoading:YES errorToast:YES]
page:@(page)
pageSize:@20
uid:[AccountInfoStorage instance].getUid];
}
- (void)loadMyEvents {
RACSubject *create = [RACSubject subject];
RACSubject *sub = [RACSubject subject];
@kWeakify(self);
[[RACSignal combineLatest:@[create, sub] reduce:^id(NSArray <EventItemModel *> * creates,
NSArray <EventItemModel *> * subs){
@kStrongify(self);
if ([[self getView] respondsToSelector:@selector(myCreateEventListSuccess:)]) {
[[self getView] myCreateEventListSuccess:creates];
}
if ([[self getView] respondsToSelector:@selector(mySubEventListSuccess:)]) {
[[self getView] mySubEventListSuccess:subs];
}
return nil;
}] subscribeError:^(NSError * _Nullable error) {
@kStrongify(self);
[[self getView] myEventListFailure:error.domain];
}];
[Api usereventMySquare:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray *array = [EventItemModel modelsWithArray:data.data];
if (array.count > 4) {
array = [array subarrayWithRange:NSMakeRange(0, 4)];
}
[create sendNext:array];
[create sendCompleted];
} fail:^(NSInteger code, NSString * _Nullable msg) {
[create sendError:[NSError errorWithDomain:msg code:code userInfo:nil]];
[create sendCompleted];
} showLoading:YES errorToast:YES]
page:@(1)
pageSize:@20
uid:[AccountInfoStorage instance].getUid];
[Api usereventMySub:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray *array = [EventItemModel modelsWithArray:data.data];
[sub sendNext:array];
[sub sendCompleted];
} fail:^(NSInteger code, NSString * _Nullable msg) {
[sub sendError:[NSError errorWithDomain:msg code:code userInfo:nil]];
[sub sendCompleted];
} showLoading:YES errorToast:YES]
page:@(1)
pageSize:@20
uid:[AccountInfoStorage instance].getUid];
}
- (void)loadMyRooms {
[Api roomRoleListRoom:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if ([[self getView] respondsToSelector:@selector(myRoomListSuccess:)]) {
[[self getView] myRoomListSuccess:[EventRoomListModel modelWithJSON:data.data]];
}
} fail:^(NSInteger code, NSString * _Nullable msg) {
if ([[self getView] respondsToSelector:@selector(myRoomListFailure:)]) {
[[self getView] myRoomListFailure:msg];
}
} showLoading:YES errorToast:YES]];
}
- (void)deleteEvent:(NSInteger)eventId {
[Api usereventDel:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if ([[self getView] respondsToSelector:@selector(deleteEventSuccess:)]) {
[[self getView] deleteEventSuccess:eventId];
}
} fail:^(NSInteger code, NSString * _Nullable msg) {
if ([[self getView] respondsToSelector:@selector(deleteEventFailure:)]) {
[[self getView] deleteEventFailure:msg];
}
} showLoading:YES errorToast:YES] eventId:@(eventId)];
}
- (void)subEvent:(BOOL)isSub
eventId:(NSInteger)eventId {
[Api usereventSub:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if ([[self getView] respondsToSelector:@selector(eventSubActionSuccess: eventId:)]) {
[[self getView] eventSubActionSuccess:isSub eventId:eventId];
}
} fail:^(NSInteger code, NSString * _Nullable msg) {
if ([[self getView] respondsToSelector:@selector(eventSubActionFailure:)]) {
[[self getView] eventSubActionFailure:msg];
}
} showLoading:YES errorToast:YES]
eventId:@(eventId)
subStatus:isSub ? @(1) : @(0)
uid:[AccountInfoStorage instance].getUid];
}
- (void)createEventWithTitle:(NSString *)title
image:(NSString *)imagePath
uploadToHome:(BOOL)uploadToHome
startTime:(NSString *)startTime
duration:(NSInteger)duration
content:(NSString *)content
gold:(NSInteger)gold
roomUid:(NSInteger)roomUid
notifyFans:(BOOL)notifyFans {
[Api usereventPublish:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if ([[self getView] respondsToSelector:@selector(createEventSuccess)]) {
[[self getView] createEventSuccess];
}
} fail:^(NSInteger code, NSString * _Nullable msg) {
if ([[self getView] respondsToSelector:@selector(createEventFailure:)]) {
[[self getView] createEventFailure:msg];
}
} showLoading:YES errorToast:YES]
eventBanner:imagePath
eventDetail:content
eventDuration:@(duration)
eventStartTimeStr:startTime
eventTopic:title
noticeFans:@(notifyFans)
payBanner:@(uploadToHome)
payGoldNum:@(gold)
roomUid:@(roomUid).stringValue
uid:[AccountInfoStorage instance].getUid];
}
- (void)loadMoney:(void(^)(WalletInfoModel *))success
failure:(void(^)(NSError *error))failure {
NSString * uid = [AccountInfoStorage instance].getUid;
NSString * ticket = [AccountInfoStorage instance].getTicket;
@kWeakify(self);
[Api getUserWalletInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
@kStrongify(self);
if (data.code == 200) {
WalletInfoModel * model = [WalletInfoModel modelWithDictionary:data.data];
if (success) {
success(model);
}
} else {
if (failure) {
failure([NSError errorWithDomain:data.message code:data.code userInfo:nil]);
}
}
}] uid:uid ticket:ticket];
}
@end