Files
peko-ios/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m
2023-08-25 16:32:51 +08:00

292 lines
13 KiB
Objective-C

//
// YMMoreMenuPresenter.m
// YUMI
//
// Created by YUMI on 2021/12/11.
//
#import "XPMoreMenuPresenter.h"
#import <NIMSDK/NIMSDK.h>
#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 <NIMSDK/NIMSDK.h>
@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<NIMChatroomMember *> * _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