194 lines
9.2 KiB
Objective-C
194 lines
9.2 KiB
Objective-C
//
|
|
// XPMoreMenuPresenter.m
|
|
// xplan-ios
|
|
//
|
|
// Created by 冯硕 on 2021/12/11.
|
|
//
|
|
|
|
#import "XPMoreMenuPresenter.h"
|
|
#import <NIMSDK/NIMSDK.h>
|
|
#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 <NIMSDK/NIMSDK.h>
|
|
|
|
@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<NIMChatroomMember *> * _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
|