// // XPMoreMenuPresenter.m // xplan-ios // // Created by 冯硕 on 2021/12/11. // #import "XPMoreMenuPresenter.h" #import #import "Api+MoreMenu.h" #import "ThemeColor+Room.h" #import "AccountInfoStorage.h" ///Model #import "XPRoomMoreItemModel.h" #import "RoomInfoModel.h" #import "XPReleaseRadioModel.h" #import "XPNobleTrumpetModel.h" ///P #import "XPMoreMenuProtocol.h" #import "ThemeColor.h" #import @implementation XPMoreMenuPresenter - (void)getMoreMenuDataSource:(RoomInfoModel *)roomInfo { XPRoomMoreItemModel * giftValue = [[XPRoomMoreItemModel alloc] init]; giftValue.title = roomInfo.showGiftValue ? @"关闭礼物值" : @"开启礼物值"; giftValue.imageName= roomInfo.showGiftValue ? @"room_more_menu_gift_value_close" : @"room_more_menu_gift_value_open"; giftValue.type = roomInfo.showGiftValue ? RoomMoreMenuType_Gift_Value_Close : RoomMoreMenuType_Gift_Value_Open; giftValue.titleColor = roomInfo.showGiftValue ? [ThemeColor roomMoreMenuTextColor] : nil; XPRoomMoreItemModel * giftEffect = [[XPRoomMoreItemModel alloc] init]; giftEffect.title = roomInfo.hasAnimationEffect ? @"关闭我的特效" : @"开启我的特效"; giftEffect.imageName = roomInfo.hasAnimationEffect ? @"room_more_menu_gift_effect_close" : @"room_more_menu_gift_effect_open"; giftEffect.type = roomInfo.hasAnimationEffect ? RoomMoreMenuType_Gift_Effect_Close : RoomMoreMenuType_Gift_Effect_Open; giftEffect.titleColor = roomInfo.hasAnimationEffect ? [ThemeColor roomMoreMenuTextColor] : nil; XPRoomMoreItemModel * dating = [[XPRoomMoreItemModel alloc] init]; dating.title = roomInfo.roomModeType == RoomModeType_Open_Blind ? @"相亲中.." : @"相亲模式"; dating.imageName = roomInfo.roomModeType == RoomModeType_Open_Blind ? @"room_more_menu_dating_close" : @"room_more_menu_dating_open"; dating.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomMoreMenuType_Room_Dating_Close : RoomMoreMenuType_Room_Dating_Open; dating.titleColor = roomInfo.isCloseScreen ? nil : [ThemeColor roomMoreMenuTextColor]; XPRoomMoreItemModel * acrossRoomPK = [[XPRoomMoreItemModel alloc] init]; acrossRoomPK.title = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? @"跨房PK中" : @"跨房PK"; acrossRoomPK.imageName = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? @"room_more_menu_cross_pk_close" : @"room_more_menu_cross_pk_open"; acrossRoomPK.type = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? RoomMoreMenuType_Room_Across_PK_Close : RoomMoreMenuType_Room_Across_PK_Open; acrossRoomPK.titleColor = roomInfo.isCloseScreen ? nil : [ThemeColor roomMoreMenuTextColor]; XPRoomMoreItemModel * anchorRoomPK = [[XPRoomMoreItemModel alloc] init]; anchorRoomPK.title = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? @"主播PK中" : @"主播PK"; anchorRoomPK.imageName = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? @"room_more_menu_cross_pk_close" : @"room_more_menu_cross_pk_open"; anchorRoomPK.type = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? RoomMoreMenuType_Room_Anchor_PK_Close : RoomMoreMenuType_Room_Anchor_PK_Open; anchorRoomPK.titleColor = roomInfo.isCloseScreen ? nil : [ThemeColor roomMoreMenuTextColor]; XPRoomMoreItemModel * messageScreen = [[XPRoomMoreItemModel alloc] init]; messageScreen.title = roomInfo.isCloseScreen ? @"开启公屏" : @"关闭公屏"; messageScreen.imageName = roomInfo.isCloseScreen ? @"room_more_menu_message_open" : @"room_more_menu_message_close"; messageScreen.type = roomInfo.isCloseScreen ? RoomMoreMenuType_Message_Screen_Open : RoomMoreMenuType_Message_Screen_Close; messageScreen.titleColor = roomInfo.isCloseScreen ? nil : [ThemeColor roomMoreMenuTextColor]; XPRoomMoreItemModel * roomSetting = [[XPRoomMoreItemModel alloc] init]; roomSetting.title = @"房间设置"; roomSetting.imageName = @"room_more_menu_setting"; roomSetting.type = RoomMoreMenuType_Room_Setting; roomSetting.titleColor = [ThemeColor roomMoreMenuTextColor]; XPRoomMoreItemModel * inviteFriend = [[XPRoomMoreItemModel alloc] init]; inviteFriend.title = @"邀请粉丝"; inviteFriend.imageName = @"room_more_menu_invite_friend"; inviteFriend.type = RoomMoreMenuType_Invite_Fans; inviteFriend.titleColor = [ThemeColor roomMoreMenuTextColor]; XPRoomMoreItemModel * releaseRadio = [[XPRoomMoreItemModel alloc] init]; releaseRadio.title = @"发布广播"; releaseRadio.imageName = @"room_more_menu_release_radio"; releaseRadio.type = RoomMoreMenuType_Release_Radio; releaseRadio.titleColor = [ThemeColor roomMoreMenuTextColor]; XPRoomMoreItemModel * trumpet = [[XPRoomMoreItemModel alloc] init]; trumpet.title = @"房间小喇叭"; trumpet.imageName = @"room_more_menu_trumpet"; trumpet.type = RoomMoreMenuType_Room_trumpet; trumpet.titleColor = [ThemeColor roomMoreMenuTextColor]; NSString * uid = [AccountInfoStorage instance].getUid; NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; request.roomId = roomId; request.userIds = @[uid]; [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { NSMutableArray * array = [NSMutableArray array]; [array addObject:giftEffect]; if (error == nil) { NIMChatroomMember * member = members.firstObject; BOOL isCreator = member.type == NIMChatroomMemberTypeCreator; BOOL isManager = member.type == NIMChatroomMemberTypeManager; if (isCreator && roomInfo.isPermitRoom == PermitRoomType_Licnese && roomInfo.type != RoomType_MiniGame) { [array addObject:acrossRoomPK]; } if (isCreator && roomInfo.type == RoomType_Anchor) { [array addObject:anchorRoomPK]; } if (isCreator || isManager) { if (roomInfo.canOpenBlindDate && roomInfo.type != RoomType_Anchor && roomInfo.type != RoomType_MiniGame) { [array addObject:dating]; } [array addObject:messageScreen]; [array addObject:giftValue]; [array addObject:roomSetting]; [array addObject:inviteFriend]; if (isCreator && roomInfo.type != RoomType_Anchor && roomInfo.isPermitRoom != PermitRoomType_Licnese && roomInfo.isPermitRoom != PermitRoomType_YoungerStar) { [array addObject:releaseRadio]; } } [array addObject:trumpet]; } [[self getView] getMoreMenuDataSuccess:array]; }]; } /// 开启房间礼物值 /// @param roomUid 房间的uid - (void)openRoomGiftValue:(NSString *)roomUid { NSString * uid = [AccountInfoStorage instance].getUid; [Api openRoomGiftValue:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] openRoomGiftValueSuccess]; }] uid:uid roomUid:roomUid]; } /// 关闭房间礼物值 /// @param roomUid 房间的uid - (void)closeRoomGiftValue:(NSString *)roomUid { NSString * uid = [AccountInfoStorage instance].getUid; [Api closeRoomGiftValue:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] closeRoomGiftValueSuccess]; }] uid:uid roomUid:roomUid]; } /// 更新公屏状态 /// @param isCloseScreen 是否关闭公屏 /// @param roomId 房间的id - (void)updateRoomMessageScreenState:(BOOL)isCloseScreen roomId:(NSString *)roomId { NSString * uid = [AccountInfoStorage instance].getUid; NSString * ticket = [AccountInfoStorage instance].getTicket; NSString * isCleScreenStr = isCloseScreen ? @"1" : @"0"; [Api updateRoomInfoMessageState:[self createHttpCompletion:^(BaseModel * _Nonnull data) { RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:data.data]; [[self getView] updateRoomMessageScreenStateSuccess:roomInfo]; }] roomId:roomId isCloseScreen:isCleScreenStr ticket:ticket uid:uid]; } /// 开启相亲模式 /// @param roomUid 房主的uid - (void)openRoomDating:(NSString *)roomUid { [Api openRoomDating:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] openRoomDatingSuccess]; }] roomUid:roomUid]; } /// 关闭相亲模式 /// @param roomUid 房主的uid - (void)closeRoomDating:(NSString *)roomUid { [Api closeRoomDating:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] closeRoomDatingSuccess]; }] roomUid:roomUid]; } ///获取房间广播模板内容 /// @param type 房间类型 - (void)getRoomRadioMessageListWithType:(NSString *)type { [Api roomRadioGetMsg:[self createHttpCompletion:^(BaseModel * _Nonnull data) { XPReleaseRadioModel * model = [XPReleaseRadioModel modelWithJSON:data.data]; [[self getView] getReleaseRadioSuccess:model]; }] roomType:type]; } /// 获取房间贵族小喇叭信息 - (void)getRoomgetUserVipRoomTrumpet:(NSString *)roomUid { [Api getUserVipRoomTrumpet:[self createHttpCompletion:^(BaseModel * _Nonnull data) { XPNobleTrumpetModel *model = [XPNobleTrumpetModel modelWithJSON:data.data]; [[self getView] getTrumpetSuccess:model]; }] roomUid:roomUid]; } ///结束个播跨房PK - (void)requestFinishAnchorPK:(NSString *)roundId { [Api requestEndAnchorRoomPk:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { // NSLog(@"%@", msg); } roundId:roundId]; } @end