// // YMMoreMenuPresenter.m // YUMI // // Created by YUMI on 2021/12/11. // #import "XPMoreMenuPresenter.h" #import #import "Api+MoreMenu.h" #import "ThemeColor+Room.h" #import "AccountInfoStorage.h" #import "ClientConfig.h" #import "RtcManager.h" #import "Api+AnchorPk.h" ///Model #import "XPRoomMoreItemModel.h" #import "RoomInfoModel.h" #import "XPReleaseRadioModel.h" #import "XPNobleTrumpetModel.h" ///P #import "XPMoreMenuProtocol.h" #import "DJDKMIMOMColor.h" #import @implementation XPMoreMenuPresenter - (void)getMoreMenuDataSource:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin { XPRoomMoreItemModel * roomPK = [[XPRoomMoreItemModel alloc] init]; roomPK.title = roomInfo.roomModeType == RoomModeType_Open_PK_Mode ?YMLocalizedString(@"XPMoreMenuPresenter26") : YMLocalizedString(@"XPMoreMenuPresenter1"); roomPK.imageName= @"room_more_menu_room_pk"; roomPK.type = roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? RoomMoreMenuType_Room_PK_Close : RoomMoreMenuType_Room_PK_Open; roomPK.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * giftValue = [[XPRoomMoreItemModel alloc] init]; giftValue.title = roomInfo.showGiftValue ? YMLocalizedString(@"XPMoreMenuPresenter27") : YMLocalizedString(@"XPMoreMenuPresenter3"); giftValue.imageName= @"room_more_menu_gift_value"; giftValue.type = roomInfo.showGiftValue ? RoomMoreMenuType_Gift_Value_Close : RoomMoreMenuType_Gift_Value_Open; giftValue.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * giftEffect = [[XPRoomMoreItemModel alloc] init]; giftEffect.title = roomInfo.hasAnimationEffect ? YMLocalizedString(@"XPMoreMenuPresenter28") : YMLocalizedString(@"XPMoreMenuPresenter5"); giftEffect.imageName = @"room_more_menu_gift_effect"; giftEffect.type = roomInfo.hasAnimationEffect ? RoomMoreMenuType_Gift_Effect_Close : RoomMoreMenuType_Gift_Effect_Open; giftEffect.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * wishGift = [[XPRoomMoreItemModel alloc] init]; wishGift.title = YMLocalizedString(@"XPMoreMenuPresenter6"); wishGift.imageName = @"room_more_menu_wish_gift"; wishGift.type = RoomMoreMenuType_Room_Wish_Gift; wishGift.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * dating = [[XPRoomMoreItemModel alloc] init]; dating.title = roomInfo.roomModeType == RoomModeType_Open_Blind ? YMLocalizedString(@"XPMoreMenuPresenter29") : YMLocalizedString(@"XPMoreMenuPresenter8"); dating.imageName = @"room_more_menu_dating"; dating.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomMoreMenuType_Room_Dating_Close : RoomMoreMenuType_Room_Dating_Open; dating.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * acrossRoomPK = [[XPRoomMoreItemModel alloc] init]; acrossRoomPK.title = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? YMLocalizedString(@"XPMoreMenuPresenter30") : YMLocalizedString(@"XPMoreMenuPresenter31"); acrossRoomPK.imageName = @"room_more_menu_cross_pk"; acrossRoomPK.type = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? RoomMoreMenuType_Room_Across_PK_Close : RoomMoreMenuType_Room_Across_PK_Open; acrossRoomPK.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * anchorRoomPK = [[XPRoomMoreItemModel alloc] init]; anchorRoomPK.title = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? YMLocalizedString(@"XPMoreMenuPresenter32") : YMLocalizedString(@"XPMoreMenuPresenter33"); anchorRoomPK.imageName = @"room_more_menu_anchor_pk"; anchorRoomPK.type = roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ? RoomMoreMenuType_Room_Anchor_PK_Close : RoomMoreMenuType_Room_Anchor_PK_Open; anchorRoomPK.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; if (roomInfo.pkState == AcrossRoomPkStateTypePenalty) { if ([roomInfo.winUid isEqualToString:[AccountInfoStorage instance].getUid]) { anchorRoomPK.title = YMLocalizedString(@"XPMoreMenuPresenter15"); } else if ([roomInfo.winUid isEqualToString:roomInfo.pkUid]) { anchorRoomPK.title = YMLocalizedString(@"XPMoreMenuPresenter14"); } else { anchorRoomPK.title = YMLocalizedString(@"XPMoreMenuPresenter15"); } } else if (roomInfo.pkState == AcrossRoomPkStateTypePenaltyEnd) { anchorRoomPK.title = YMLocalizedString(@"XPMoreMenuPresenter15"); } if (roomInfo.pkMatchStartTime) { anchorRoomPK.title = YMLocalizedString(@"XPMoreMenuPresenter17"); } XPRoomMoreItemModel * messageScreen = [[XPRoomMoreItemModel alloc] init]; messageScreen.title = roomInfo.isCloseScreen ? YMLocalizedString(@"XPMoreMenuPresenter34") : YMLocalizedString(@"XPMoreMenuPresenter19"); messageScreen.imageName = @"room_more_menu_message"; messageScreen.type = roomInfo.isCloseScreen ? RoomMoreMenuType_Message_Screen_Open : RoomMoreMenuType_Message_Screen_Close; messageScreen.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * clearScreen = [[XPRoomMoreItemModel alloc] init]; clearScreen.title = YMLocalizedString(@"XPMoreMenuPresenter20"); clearScreen.imageName = @"room_more_menu_message_clean"; clearScreen.type = RoomMoreMenuType_Message_Screen_Clear; clearScreen.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * roomSetting = [[XPRoomMoreItemModel alloc] init]; roomSetting.title = YMLocalizedString(@"XPMoreMenuPresenter21"); roomSetting.imageName = @"room_more_menu_setting"; roomSetting.type = RoomMoreMenuType_Room_Setting; roomSetting.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * inviteFriend = [[XPRoomMoreItemModel alloc] init]; inviteFriend.title = YMLocalizedString(@"XPMoreMenuPresenter22"); inviteFriend.imageName = @"room_more_menu_invite_friend"; inviteFriend.type = RoomMoreMenuType_Invite_Fans; inviteFriend.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * releaseRadio = [[XPRoomMoreItemModel alloc] init]; releaseRadio.title = YMLocalizedString(@"XPMoreMenuPresenter23"); releaseRadio.imageName = @"room_more_menu_release_radio"; releaseRadio.type = RoomMoreMenuType_Release_Radio; releaseRadio.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * trumpet = [[XPRoomMoreItemModel alloc] init]; trumpet.title = YMLocalizedString(@"XPMoreMenuPresenter35"); trumpet.imageName = @"room_more_menu_trumpet"; trumpet.type = RoomMoreMenuType_Room_trumpet; trumpet.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * redPacket = [[XPRoomMoreItemModel alloc] init]; redPacket.title = YMLocalizedString(@"XPMoreMenuPresenter24"); redPacket.imageName = @"redPacket_entrance"; redPacket.type = RoomMoreMenuType_Room_redPacket; redPacket.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; XPRoomMoreItemModel * voice = [[XPRoomMoreItemModel alloc] init]; voice.title = YMLocalizedString(@"XPMoreMenuPresenter25"); voice.imageName = [RtcManager instance].isRemoteMuted ? @"room_more_voice_close" : @"room_more_voice_open"; voice.type = RoomMoreMenuType_Room_Voice; voice.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; voice.isSelected = [RtcManager instance].isRemoteMuted; NSString * uid = [AccountInfoStorage instance].getUid; if (uid.length <= 0) { return; } 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]; if (error == nil) { NIMChatroomMember * member = members.firstObject; BOOL isCreator = member.type == NIMChatroomMemberTypeCreator; BOOL isManager = member.type == NIMChatroomMemberTypeManager; if ((isCreator || isManager || isSuperAdmin) && roomInfo.type != RoomType_MiniGame && roomInfo.type != RoomType_Anchor) { [array addObject:roomPK]; } 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 || isSuperAdmin) && roomInfo.hasWishGiftPermit) { [array addObject:wishGift]; } if (isCreator || isManager || isSuperAdmin) { if (roomInfo.canOpenBlindDate && roomInfo.type != RoomType_Anchor && roomInfo.type != RoomType_MiniGame) { [array insertObject:dating atIndex:0]; } // [array addObject:inviteFriend]; [array addObject:trumpet]; if (isCreator && roomInfo.type != RoomType_Anchor && roomInfo.isPermitRoom != PermitRoomType_Licnese && roomInfo.isPermitRoom != PermitRoomType_YoungerStar) { [array addObject:releaseRadio]; } [array addObject:giftEffect]; [array addObject:roomSetting]; [array addObject:messageScreen]; [array addObject:clearScreen]; [array addObject:giftValue]; } else { [array addObject:trumpet]; [array addObject:giftEffect]; } if ([ClientConfig shareConfig].configInfo.redEnvelopeConfig.open && roomInfo.redEnvelopeOpen) { [array addObject:redPacket]; } } else { [array addObject:giftEffect]; } [array addObject:voice]; if (![ClientConfig shareConfig].canOpen) { [array removeAllObjects]; [array addObject:clearScreen]; [array addObject:roomSetting]; [array addObject:voice]; } [[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]; }fail:^(NSInteger code, NSString * _Nullable msg) { NSLog(@"%@",msg); }] 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) { [[self getView] endAnchorPkSuccess:code == 200 msg:msg]; } roundId:roundId]; } /// 清空公屏 /// @param roomUid 房主的uid /// @param uid 操作人的uid - (void)cleanScreen:(NSString *)roomUid uid:(NSString *)uid { [Api requestCleanScreen:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] cleanScreenSuccess]; }] roomUid:roomUid uid:uid]; } /// 取消匹配随机PK /// @param roomUid 房间UID - (void)requestCancelMatchRandomPK:(NSString *)roomUid { [Api cancelMatchRandomPK:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] cancelMatchRandomPKSuccess]; }] roomUid:roomUid]; } @end