// // CreateEventPresenter.m // YuMi // // Created by P on 2025/5/9. // #import "CreateEventPresenter.h" #import "Api+EventCenter.h" #import @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 * creates, NSArray * 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