diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index f4174bf9..46e1e38c 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -521,6 +521,7 @@ 23FF42792AA6E19C0055733C /* HomeMenuSourceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF42782AA6E19C0055733C /* HomeMenuSourceModel.m */; }; 23FF428E2AAB2D3A0055733C /* XPCandyTreeBuyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF428D2AAB2D3A0055733C /* XPCandyTreeBuyView.m */; }; 5412E0F42C4E460300FDD668 /* XPMineCenterAgencyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5412E0F32C4E460300FDD668 /* XPMineCenterAgencyView.m */; }; + 5412E0FD2C52512100FDD668 /* RoomBottomEntranceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5412E0FC2C52512100FDD668 /* RoomBottomEntranceModel.m */; }; 541DD9552C1EDEFB00B616C4 /* XPHomePagingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 541DD9542C1EDEFB00B616C4 /* XPHomePagingViewController.m */; }; 5458319D2C2AE09300364026 /* XPRoomTypeSelectionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5458319C2C2AE09300364026 /* XPRoomTypeSelectionViewController.m */; }; 545831A02C2AEFAF00364026 /* TenMicStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5458319F2C2AEFAF00364026 /* TenMicStageView.m */; }; @@ -2589,6 +2590,8 @@ 23FF428D2AAB2D3A0055733C /* XPCandyTreeBuyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeBuyView.m; sourceTree = ""; }; 5412E0F22C4E460300FDD668 /* XPMineCenterAgencyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineCenterAgencyView.h; sourceTree = ""; }; 5412E0F32C4E460300FDD668 /* XPMineCenterAgencyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineCenterAgencyView.m; sourceTree = ""; }; + 5412E0FB2C52512100FDD668 /* RoomBottomEntranceModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RoomBottomEntranceModel.h; sourceTree = ""; }; + 5412E0FC2C52512100FDD668 /* RoomBottomEntranceModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RoomBottomEntranceModel.m; sourceTree = ""; }; 541DD9532C1EDEFB00B616C4 /* XPHomePagingViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomePagingViewController.h; sourceTree = ""; }; 541DD9542C1EDEFB00B616C4 /* XPHomePagingViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomePagingViewController.m; sourceTree = ""; }; 5458319B2C2AE09300364026 /* XPRoomTypeSelectionViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomTypeSelectionViewController.h; sourceTree = ""; }; @@ -7268,6 +7271,8 @@ E8899C812785A694007944BE /* DatingInfoModel.m */, E87AE8BF284E184300CAFBB3 /* RoomNewUserGreetModel.h */, E87AE8C0284E184300CAFBB3 /* RoomNewUserGreetModel.m */, + 5412E0FB2C52512100FDD668 /* RoomBottomEntranceModel.h */, + 5412E0FC2C52512100FDD668 /* RoomBottomEntranceModel.m */, ); path = Model; sourceTree = ""; @@ -11936,6 +11941,7 @@ E85E7B0D2A4EB0D200B6D00A /* GuildSuperAdminInfoModel.m in Sources */, 189DD68426E1FDBB00AB55B1 /* XNDJTDDLoadingTool.m in Sources */, 9B1B72AF280031F8003FACE9 /* XPAnchorPKSelectRoomView.m in Sources */, + 5412E0FD2C52512100FDD668 /* RoomBottomEntranceModel.m in Sources */, E818DD1C2A4896EE00F163F7 /* XPLoginAraeViewController.m in Sources */, 23959FE72BB15C930085A282 /* UploadFileModel.m in Sources */, E8D4824A278D1F73003C1D08 /* XPAcrossRoomPKInviteView.m in Sources */, diff --git a/YuMi/Assets.xcassets/chat/ms_room_game_button.imageset/ms_room_game_button@3x.png b/YuMi/Assets.xcassets/chat/ms_room_game_button.imageset/ms_room_game_button@3x.png index 96be2399..f89b6c82 100644 Binary files a/YuMi/Assets.xcassets/chat/ms_room_game_button.imageset/ms_room_game_button@3x.png and b/YuMi/Assets.xcassets/chat/ms_room_game_button.imageset/ms_room_game_button@3x.png differ diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m index 1f686157..6361ace5 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m @@ -642,8 +642,6 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; return _protocolLabel; } - - - (UIImageView *)authBubbleView { if (!_authBubbleView) { _authBubbleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"login_auth_bubble"]]; diff --git a/YuMi/Modules/YMMine/Presenter/XPMinePresent.m b/YuMi/Modules/YMMine/Presenter/XPMinePresent.m index 9ccf2273..90c3741d 100644 --- a/YuMi/Modules/YMMine/Presenter/XPMinePresent.m +++ b/YuMi/Modules/YMMine/Presenter/XPMinePresent.m @@ -33,8 +33,7 @@ /// 获取用户信息 - (void)getUserInfo { NSString * uid = [[AccountInfoStorage instance] getUid]; - if (!uid.length) { - + if (uid.length == 0) { return; } @kWeakify(self); @@ -42,7 +41,7 @@ @kStrongify(self); UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; [[self getView] onGetUserInfoSuccess:infoModel]; - }errorToast:NO] uid:uid]; + } errorToast:NO] uid:uid]; } /// 获取钱包信息 @@ -50,7 +49,7 @@ NSString * uid = [AccountInfoStorage instance].getUid; NSString * ticket = [AccountInfoStorage instance].getTicket; if (!uid.length) { - [[self getView]getUserWalletInfoFail]; + [[self getView] getUserWalletInfoFail]; return; } @kWeakify(self); @@ -60,7 +59,7 @@ [[self getView] getUserWalletInfo:model]; } fail:^(NSInteger code, NSString * _Nullable msg) { @kStrongify(self); - [[self getView]getUserWalletInfoFail]; + [[self getView] getUserWalletInfoFail]; }] uid:uid ticket:ticket]; } diff --git a/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.m b/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.m index 05920b3a..99dff74c 100644 --- a/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.m +++ b/YuMi/Modules/YMMine/Presenter/XPMineSettingPresent.m @@ -134,7 +134,9 @@ // 获取用户信息 - (void)getUserInfo { NSString * uid = [[AccountInfoStorage instance] getUid]; + @kWeakify(self); [Api getUserInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + @kStrongify(self); UserInfoModel * infoModel = [UserInfoModel modelWithDictionary:data.data]; [[self getView] onGetUserInfoSuccess:infoModel]; }] uid:uid]; diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m index 54c33e9a..7379ef4c 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m @@ -131,8 +131,6 @@ return view;\ @property (nonatomic, strong) UILabel *fansNum; @property (nonatomic, strong) UILabel *followersNum; - - @end @implementation XPMineUserInfoHeaderView diff --git a/YuMi/Modules/YMMine/View/XPMineViewController.m b/YuMi/Modules/YMMine/View/XPMineViewController.m index 98a6e7cb..8ae2df97 100644 --- a/YuMi/Modules/YMMine/View/XPMineViewController.m +++ b/YuMi/Modules/YMMine/View/XPMineViewController.m @@ -111,7 +111,6 @@ UIKIT_EXTERN NSString *kRequestTicket; - (void)viewDidLoad { [super viewDidLoad]; -// [self showLoading]; [self initSubViews]; [self initSubViewConstraints]; self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; @@ -122,14 +121,19 @@ UIKIT_EXTERN NSString *kRequestTicket; self.isRefreshRoomInfo = NO; [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventUserCenter_recharge_card_show]; [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventUserCenter_noble_card_show]; + + if([AccountInfoStorage instance].isRequestTicket == NO) { + [self getDataInfo]; + } + if (!self.userInfo) { + [self showLoading]; + } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - if([AccountInfoStorage instance].isRequestTicket == NO) { - [self getDataInfo]; - } } + -(void)getDataInfo{ [self.presenter getUserInfo]; } @@ -492,7 +496,9 @@ UIKIT_EXTERN NSString *kRequestTicket; if(self.isRefreshRoomInfo == YES)return; self.isRefreshRoomInfo = YES; NSString* roomUid = [NSString stringWithFormat:@"%ld", (long)self.userInfo.uid]; + @kWeakify(self); [Api getRoomInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); self.isRefreshRoomInfo = NO; if (code == 200) { RoomInfoModel * roomInfo = [RoomInfoModel modelWithJSON:data.data]; @@ -562,7 +568,9 @@ UIKIT_EXTERN NSString *kRequestTicket; break; } } + @kWeakify(self); [self.functionArray enumerateObjectsUsingBlock:^(XPMineFunctionItemModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + @kStrongify(self); if (obj.skipType == XPMineItemType_CP) { [self.functionArray removeObject:obj]; } @@ -628,14 +636,6 @@ UIKIT_EXTERN NSString *kRequestTicket; userInfo.idAtt = [self.headView createNamePlateIdLabelAttribute:userInfo]; [self.tableView reloadData]; - [self.headView createNamePlateLevelAttribute:userInfo complete:^(NSMutableAttributedString *textAtt) { - @kStrongify(self); - dispatch_async(dispatch_get_main_queue(), ^{ - userInfo.levelAtt = textAtt; - self.headView.userInfo = userInfo; - }); - }]; - dispatch_async(dispatch_get_global_queue(0, 0), ^{ @kStrongify(self); [self.presenter getClanDetailInfo]; @@ -644,6 +644,16 @@ UIKIT_EXTERN NSString *kRequestTicket; // [self.presenter getMineBannerList]; [self.presenter getNobleInfo]; }); + + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self.headView createNamePlateLevelAttribute:userInfo complete:^(NSMutableAttributedString *textAtt) { + @kStrongify(self); + dispatch_async(dispatch_get_main_queue(), ^{ + userInfo.levelAtt = textAtt; + self.headView.userInfo = userInfo; + }); + }]; + }); } - (void)getUserWalletInfo:(WalletInfoModel *)balanceInfo{ diff --git a/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.m b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.m index daf9a362..17ccfec9 100644 --- a/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.m +++ b/YuMi/Modules/YMNewHome/View/Search/Presenter/XPInRoomRecordPresenter.m @@ -17,7 +17,9 @@ ///获取进房记录 - (void)getInRoomRecordList { NSString *uid = [AccountInfoStorage instance].getUid; + @kWeakify(self); [Api requestFootPrint:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + @kStrongify(self); NSArray *array = [XPMineFootPrintModel modelsWithArray:data.data]; [[self getView] getInRoomRecordSuccess:array]; } fail:^(NSInteger code, NSString * _Nullable msg) { @@ -27,7 +29,9 @@ /// 清除进房记录 - (void)cleanInRoomRecord { NSString *uid = [AccountInfoStorage instance].getUid; + @kWeakify(self); [Api requestCleanFootPrint:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + @kStrongify(self); [[self getView] cleanInRoomRecordSuccess]; }] uid:uid roomUid:NULL]; } diff --git a/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m b/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m index 71984f75..84c2d452 100644 --- a/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m @@ -329,7 +329,11 @@ -(void)pushMyRoomVC{ NSString* roomUid = [[AccountInfoStorage instance] getUid]; +// [XPRoomViewController openRoom:roomUid viewController:self]; + + @kWeakify(self); [Api getRoomInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); if (code == 200) { RoomInfoModel * roomInfo = [RoomInfoModel modelWithJSON:data.data]; if (roomInfo.isReselect) { diff --git a/YuMi/Modules/YMRoom/Model/ActivityInfoModel.m b/YuMi/Modules/YMRoom/Model/ActivityInfoModel.m index 17631ec9..441f98fe 100644 --- a/YuMi/Modules/YMRoom/Model/ActivityInfoModel.m +++ b/YuMi/Modules/YMRoom/Model/ActivityInfoModel.m @@ -16,9 +16,7 @@ if(dic[@"RESERVE"]!=nil){ _gameModel = [ActivityInfoItemModel modelWithJSON:dic[@"RESERVE"]]; } - } - } @end @implementation ActivityInfoItemModel diff --git a/YuMi/Modules/YMRoom/Model/RoomBottomEntranceModel.h b/YuMi/Modules/YMRoom/Model/RoomBottomEntranceModel.h new file mode 100644 index 00000000..9cdf36ce --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/RoomBottomEntranceModel.h @@ -0,0 +1,22 @@ +// +// RoomBottomEntranceModel.h +// YuMi +// +// Created by P on 2024/7/25. +// + +#import "PIBaseModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RoomBottomEntranceModel : PIBaseModel + +@property (nonatomic, assign) NSInteger skipType; // 1 = h5, 2 = 百顺 +@property (nonatomic, copy) NSString *skipUrl; +@property (nonatomic, copy) NSString *icon1Url; // 新增内容 +@property (nonatomic, copy) NSString *icon2Url; // 原有入口内容,有则替换为新图 +@property (nonatomic, copy) NSString *reserve; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Model/RoomBottomEntranceModel.m b/YuMi/Modules/YMRoom/Model/RoomBottomEntranceModel.m new file mode 100644 index 00000000..99dcbaaf --- /dev/null +++ b/YuMi/Modules/YMRoom/Model/RoomBottomEntranceModel.m @@ -0,0 +1,12 @@ +// +// RoomBottomEntranceModel.m +// YuMi +// +// Created by P on 2024/7/25. +// + +#import "RoomBottomEntranceModel.h" + +@implementation RoomBottomEntranceModel + +@end diff --git a/YuMi/Modules/YMRoom/Model/RoomInfoModel.h b/YuMi/Modules/YMRoom/Model/RoomInfoModel.h index f4a95edb..5dcba229 100644 --- a/YuMi/Modules/YMRoom/Model/RoomInfoModel.h +++ b/YuMi/Modules/YMRoom/Model/RoomInfoModel.h @@ -8,6 +8,7 @@ #import "NSObject+MJExtension.h" #import "YUMINNNN.h" #import "AcrossRoomPKPanelModel.h" +#import "RoomBottomEntranceModel.h" NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, RoomType) { @@ -70,7 +71,6 @@ typedef NS_ENUM(NSInteger, RoomDatingStateChangeType) { @property(nonatomic,copy) NSString *price; @end -@class AcrossRoomPKPanelModel; @interface RoomInfoModel : PIBaseModel @property (nonatomic , copy) NSString * nick; @@ -177,6 +177,9 @@ typedef NS_ENUM(NSInteger, RoomDatingStateChangeType) { @property (nonatomic , assign) RoomType oldType; +/// 右下角的配置项 +@property (nonatomic, strong) RoomBottomEntranceModel *rightBottomIconConfig; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m index 3edcce01..ec62d9da 100644 --- a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m +++ b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m @@ -63,15 +63,16 @@ [room sendCompleted]; } fail:^(NSInteger code, NSString * _Nullable msg) { [user sendError:nil]; + if (msg.length > 0) { + TTAlertConfig *config = [[TTAlertConfig alloc]init]; + config.message = msg; + config.actionStyle = TTAlertActionConfirmStyle; + [TTPopup alertWithConfig:config showBorder:NO confirmHandler:^{ - TTAlertConfig *config = [[TTAlertConfig alloc]init]; - config.message = msg; - config.actionStyle = TTAlertActionConfirmStyle; - [TTPopup alertWithConfig:config showBorder:NO confirmHandler:^{ + } cancelHandler:^{ - } cancelHandler:^{ - - }]; + }]; + } } showLoading:YES errorToast:NO] uid:roomUid intoUid:uid]; } @@ -190,9 +191,7 @@ delayDuration = 0.25; } dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayDuration * NSEC_PER_SEC)), dispatch_get_global_queue(0, 0), ^{ - @kWeakify(self); [Api requestNormalGiftList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { - @kStrongify(self); if (data.data) { [[XPGiftStorage shareStorage] cacheWith:data.data inRoom:roomUid]; } diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m index 8b7cc29c..2e1e4668 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m @@ -42,6 +42,8 @@ #import "BaseNavigationController.h" #import "PIRoomActivityWebView.h" +#import "MSRoomGameWebVC.h" +#import "XPRoomAnimationView.h" #import "MSRoomMenuGameVC.h" UIKIT_EXTERN NSString *kShowFirstRechargeView; @@ -54,6 +56,8 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; ///红包 @property(nonatomic,strong) PIRoomEnterRedPacketView *redPacketView; +/// 配置的入口,逻辑由 API 返回数据决定 +@property(nonatomic, strong) UIButton *configEntranceMenuButton; ///游戏菜单按钮 @property(nonatomic, strong) UIButton *gambleMenuButton; ///游戏菜单按钮 @@ -101,6 +105,7 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; [self.stackView addArrangedSubview:self.redPacketView]; [self.stackView addArrangedSubview:self.joinDatingView]; [self.stackView addArrangedSubview:self.pkMenuButton]; + [self.stackView addArrangedSubview:self.configEntranceMenuButton]; [self.stackView addArrangedSubview:self.gambleMenuButton]; } @@ -109,9 +114,10 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; make.edges.mas_equalTo(self); }]; - CGFloat itemWidth = KScreenHeight > 667 ? 65 : 55 * kScreenHeightScale; + CGFloat scrollItemWidth = KScreenHeight > 667 ? 65 : 55 * kScreenHeightScale; + CGSize itemSize = CGSizeMake(scrollItemWidth , scrollItemWidth); [self.pi_cycleScrollView mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(itemWidth , itemWidth)); + make.size.mas_equalTo(itemSize); }]; [self.redPacketView mas_makeConstraints:^(MASConstraintMaker *make) { @@ -120,12 +126,17 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; [self.pkMenuButton mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.mas_equalTo(0); - make.size.mas_equalTo(CGSizeMake(76, 76)); + make.size.mas_equalTo(itemSize); }]; [self.gambleMenuButton mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.mas_equalTo(0); - make.size.mas_equalTo(CGSizeMake(76, 76)); + make.size.mas_equalTo(itemSize); + }]; + + [self.configEntranceMenuButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(0); + make.size.mas_equalTo(itemSize); }]; [self.joinDatingView mas_makeConstraints:^(MASConstraintMaker *make) { @@ -142,6 +153,7 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; @kStrongify(self); self.playList = [NSMutableArray arrayWithArray:playModels]; self.littleGameList = [NSMutableArray arrayWithArray:littleGameModels]; + [self onRoomUpdate]; return nil; }] subscribeError:^(NSError * _Nullable error) {}]; @@ -179,6 +191,7 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; } roomUid:roomUid]; } + -(void)dealWithData{ self.isLoadActivity = YES; self.pi_cycleScrollView.hidden = NO; @@ -216,6 +229,7 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; [self.pi_cycleScrollView setAutoScroll:NO]; } } + - (void)setRedPacketList:(NSMutableArray *)redPacketList{ _redPacketList = redPacketList; self.redPacketView.redPacketList = redPacketList; @@ -224,28 +238,61 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; } } #pragma mark - RoomGuestDelegat +- (void)updateConfigEntranceButtons:(RoomInfoModel *)roomInfo { + RoomBottomEntranceModel *model = roomInfo.rightBottomIconConfig; + if (model) { + @kWeakify(self); + if (model.icon2Url.length > 0) { + NetImageView *loader = [[NetImageView alloc] init]; + [loader loadImageWithUrl:model.icon2Url + completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + @kStrongify(self); + [self.gambleMenuButton setImage:image forState:UIControlStateNormal]; + }]; + } + + if (model.icon1Url.length > 0) { + NetImageView *loader = [[NetImageView alloc] init]; + [loader loadImageWithUrl:model.icon1Url + completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + @kStrongify(self); + [self.configEntranceMenuButton setImage:image forState:UIControlStateNormal]; + self.configEntranceMenuButton.hidden = NO; + } fail:^(NSError * _Nonnull error) { + self.configEntranceMenuButton.hidden = YES; + }]; + } else { + [self.configEntranceMenuButton removeFromSuperview]; + } + } +} + - (void)onRoomUpdate { - RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + RoomInfoModel *roomInfo = self.hostDelegate.getRoomInfo; + + [self updateConfigEntranceButtons:roomInfo]; + if (roomInfo.type == RoomType_Anchor || roomInfo.roomModeType == RoomModeType_Open_Blind) { self.gambleMenuButton.hidden = YES; self.pkMenuButton.hidden = YES; } else { - self.gambleMenuButton.hidden = NO; + self.gambleMenuButton.hidden = self.playList.count > 0 ? NO : YES; self.pkMenuButton.hidden = NO; } if (roomInfo.roomModeType != RoomModeType_Open_PK_Mode) { [self.pkMenuButton removeFromSuperview]; + [self.stackView insertArrangedSubview:self.gambleMenuButton atIndex:0]; } else { + [self.gambleMenuButton removeFromSuperview]; [self.stackView addArrangedSubview:self.pkMenuButton]; } self.redPacketView.type = roomInfo.type; if (roomInfo.type == RoomType_MiniGame) { self.redPacketView.hidden = YES; - [self.gambleMenuButton removeFromSuperview]; + [self.pi_cycleScrollView removeFromSuperview]; - [self.stackView insertArrangedSubview:self.gambleMenuButton atIndex:0]; [self.stackView addArrangedSubview:self.pi_cycleScrollView]; [self.gambleMenuButton bringSubviewToFront:self.stackView]; if (self.isLoadActivity) { @@ -384,31 +431,22 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; // [fairyVC.navigationController setNavigationBarHidden:YES animated:NO]; [[XCCurrentVCStackManager shareManager].getCurrentVC.view addSubview:fairyVC.view]; [UIView animateWithDuration:0.2 animations:^{ - - fairyVC.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - + fairyVC.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); }completion:^(BOOL finished) { - }]; }else { if (info.skipType == ActivitySkipType_Room) { [self.hostDelegate exitRoom]; - [XPRoomViewController openRoom:info.skipContent viewController:kWindow.rootViewController]; - - } else if(info.skipType == ActivitySkipType_Web) { - - PIRoomActivityWebView * webView = [[PIRoomActivityWebView alloc]initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight)]; - webView.roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; - webView.url = info.skipContent; - webView.infoList = inftList; - [kWindow addSubview:webView]; - [UIView animateWithDuration:0.2 animations:^{ - webView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - }]; - - + PIRoomActivityWebView * webView = [[PIRoomActivityWebView alloc]initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight)]; + webView.roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + webView.url = info.skipContent; + webView.infoList = inftList; + [kWindow addSubview:webView]; + [UIView animateWithDuration:0.2 animations:^{ + webView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + }]; } } } @@ -471,22 +509,16 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; if (info.skipType == ActivitySkipType_Room) { [self.hostDelegate exitRoom]; - [XPRoomViewController openRoom:info.skipContent viewController:kWindow.rootViewController]; - - } else if(info.skipType == ActivitySkipType_Web) { - - PIRoomActivityWebView * webView = [[PIRoomActivityWebView alloc]initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight)]; - webView.roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; - webView.url = info.skipContent; - webView.infoList = inftList; - [kWindow addSubview:webView]; - [UIView animateWithDuration:0.2 animations:^{ - webView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); - }]; - - + PIRoomActivityWebView * webView = [[PIRoomActivityWebView alloc]initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight)]; + webView.roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + webView.url = info.skipContent; + webView.infoList = inftList; + [kWindow addSubview:webView]; + [UIView animateWithDuration:0.2 animations:^{ + webView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + }]; } } } @@ -551,6 +583,55 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; [self.hostDelegate.getCurrentNav presentViewController:vc animated:YES completion:nil]; } +- (void)didTapConfigEntranceButton { + RoomInfoModel *roomInfo = self.hostDelegate.getRoomInfo; + RoomBottomEntranceModel *model = roomInfo.rightBottomIconConfig; + if (!model) { + return; + } + if (model.skipUrl.length == 0) { + return; + } + + switch (model.skipType) { + case 1: { + XPWebViewController *vc = [[XPWebViewController alloc]init]; + vc.url = model.skipUrl; + [self.hostDelegate.getCurrentNav pushViewController:vc animated:YES]; + } + break; + case 2: { + if ([self.hostDelegate isKindOfClass:[XPRoomViewController class]]){ + ActivityInfoModel *activityModel = [[ActivityInfoModel alloc] init]; + activityModel.skipContent = model.skipUrl; + activityModel.skipType = ActivitySkipType_Web; + activityModel.showType = 1; + activityModel.code = @"BAISHUN"; + activityModel.ruleValue = model.reserve; + if (activityModel.gameModel) { + MSRoomGameWebVC *vc = [[MSRoomGameWebVC alloc] initWithDelegate:self.hostDelegate + gameModel:activityModel]; + vc.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + XPRoomViewController *roomVC = (XPRoomViewController *)self.hostDelegate; + [roomVC addChildViewController:vc]; + XPRoomAnimationView *animationView; + for (id obj in self.hostDelegate.getSuperView.subviews) { + if ([obj isKindOfClass:[XPRoomAnimationView class]]){ + animationView = obj; + break; + } + } + [self.hostDelegate.getSuperView addSubview:vc.view]; + [self.hostDelegate.getSuperView bringSubviewToFront:animationView]; + } + } + } + + default: + break; + } +} + - (void)didTapPKMenuButton { [self.hostDelegate showPKPanel]; } @@ -667,17 +748,37 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom]; [b setImage:[UIImage imageNamed:@"ms_room_game_button"] forState:UIControlStateNormal]; [b addTarget:self action:@selector(didTapGameMenuButton) forControlEvents:UIControlEventTouchUpInside]; + b.imageView.contentMode = UIViewContentModeScaleAspectFit; + b.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; + b.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; + b.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10); b.hidden = YES; _gambleMenuButton = b; } return _gambleMenuButton; } +- (UIButton *)configEntranceMenuButton { + if (!_configEntranceMenuButton) { + UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom]; + [b setImage:[UIImage imageNamed:@"ms_room_game_add_coin"] forState:UIControlStateNormal]; + [b addTarget:self action:@selector(didTapConfigEntranceButton) forControlEvents:UIControlEventTouchUpInside]; + b.imageView.contentMode = UIViewContentModeScaleAspectFit; + b.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; + b.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; + b.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10); + b.hidden = YES; + _configEntranceMenuButton = b; + } + return _configEntranceMenuButton; +} + - (UIButton *)pkMenuButton { if (!_pkMenuButton) { UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom]; [b setImage:[UIImage imageNamed:@"room_pk_panel_mini_icon"] forState:UIControlStateNormal]; [b addTarget:self action:@selector(didTapPKMenuButton) forControlEvents:UIControlEventTouchUpInside]; + b.imageView.contentMode = UIViewContentModeScaleAspectFill; b.hidden = YES; _pkMenuButton = b; } diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameCell.m b/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameCell.m index b4b757f8..ce38e3d3 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameCell.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameCell.m @@ -39,8 +39,10 @@ - (void)setModel:(ActivityInfoModel *)model{ _model = model; _gameView.image = nil; + @kWeakify(self); [_gameView loadImageWithUrl:_model.icon completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { - self.gameView.image = image; + @kStrongify(self); + self.gameView.image = image; }]; _textView.text = _model.name; } @@ -53,7 +55,9 @@ - (void)setLittleGameModel:(LittleGameInfoModel *)littleGameModel{ _littleGameModel = littleGameModel; _gameView.image = nil; + @kWeakify(self); [_gameView loadImageWithUrl:littleGameModel.pic2 completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { + @kStrongify(self); self.gameView.image = image; }]; _textView.text = littleGameModel.name; @@ -65,6 +69,7 @@ NetImageConfig *config = [NetImageConfig new]; config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; _gameView = [[NetImageView alloc]initWithConfig:config]; + _gameView.contentMode = UIViewContentModeScaleToFill; _gameView.layer.cornerRadius = kGetScaleWidth(6); _gameView.layer.masksToBounds = YES; } diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameVC.m b/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameVC.m index 57a576af..047f6a6c 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameVC.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameVC.m @@ -81,76 +81,28 @@ } -(void)getGameData{ -// NSMutableArray *resourceList = [self.hostDelegate getPlayList]; -// if(resourceList.count > 0){ -// self.gameView.playList = resourceList; -//// [self updateGamePlayList:resourceList]; -// return; -// } + NSMutableArray *resourceList = [self.hostDelegate getPlayList]; + if(resourceList.count > 0){ + self.gameView.playList = resourceList; + return; + } NSString * roomId = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; @kWeakify(self); [Api getPlayList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { if (code == 200) { @kStrongify(self); - NSArray * array = [ActivityInfoModel modelsWithArray:data.data]; -// NSMutableArray *tA = [array mutableCopy]; -// [tA addObjectsFromArray:array]; -// [tA addObjectsFromArray:array]; -// [tA addObjectsFromArray:array]; -// [tA addObjectsFromArray:array]; - - self.gameView.playList = [array mutableCopy]; -// [self updateGamePlayList:array]; + self.gameView.playList = [[ActivityInfoModel modelsWithArray:data.data] mutableCopy]; } } roomId:roomId]; } - (void)updateGamePlayList:(NSArray *)array { - NSMutableArray *tempArray = [[NSMutableArray alloc] initWithArray:array]; - RoomInfoModel *roomInfo = self.hostDelegate.getRoomInfo; - NSString * uid = [AccountInfoStorage instance].getUid; - if (uid.length > 0) { - BOOL meIsSuperAdmin = NO; - for (GuildSuperAdminInfoModel *managerInfo in self.hostDelegate.getRoomSuperAdminList) { - if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { - meIsSuperAdmin = YES; - break; - } - } - NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; - request.roomId = roomId; - request.userIds = @[uid]; - @kWeakify(self); - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - @kStrongify(self); - if (error == nil) { - NIMChatroomMember * member = members.firstObject; - BOOL isCreator = member.type == NIMChatroomMemberTypeCreator; - BOOL isManager = member.type == NIMChatroomMemberTypeManager; - - if (isCreator && - roomInfo.type != RoomType_MiniGame) { - XPRoomMoreItemModel *pkModel = [self createCrossRoomPKModel:roomInfo]; - if(roomInfo.type != RoomType_Anchor && pkModel){ - [tempArray insertObject:[self createCrossRoomPKModel:roomInfo] atIndex:0]; - } - } - if ((isCreator || isManager || meIsSuperAdmin) && - roomInfo.type != RoomType_MiniGame && - roomInfo.type != RoomType_Anchor ) { - XPRoomMoreItemModel *pkModel = [self createRoomPKModel:roomInfo]; - if (pkModel) { - [tempArray insertObject:[self createRoomPKModel:roomInfo] atIndex:0]; - } - } - } - self.gameView.playList = tempArray; - }]; - } - + NSMutableArray *tempArray = [[NSMutableArray alloc] initWithArray:@[ + [self createRoomPKModel:roomInfo], + [self createCrossRoomPKModel:roomInfo] + ]]; self.gameView.playList = tempArray; } diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameView.m index 76862171..9105073a 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameView.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameView.m @@ -75,6 +75,9 @@ static const NSInteger kItemsPerRow = 5; } - (void)updateViewHeightWithItemCount:(NSInteger)count { + if (count == 0) { + return; + } NSInteger lineNum = MIN(3, (count + kItemsPerRow - 1)/kItemsPerRow); if (lineNum == 1) { diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m index e9f8991a..f4f149f7 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m @@ -23,6 +23,7 @@ #import "MicroStateModel.h" #import "RoomInfoModel.h" #import "AttachmentModel.h" +#import "GuildSuperAdminInfoModel.h" ///View #import "XPRoomSendTextView.h" #import "XPSendGiftView.h" @@ -34,6 +35,7 @@ #import "XPRoomMessageBubbleView.h" #import "MSRoomMenuGameVC.h" #import "SVGA.h" + @interface XPRoomMenuContainerView () ///滚动的容器 @property (nonatomic,strong) UIScrollView *scrollView; @@ -210,7 +212,7 @@ } case XPRoomMenuItemType_PK: { - MSRoomMenuGameVC *vc = [[MSRoomMenuGameVC alloc]initWithDelegate:self.delegate roomMenuType:MSRoomMenuTypePK]; + MSRoomMenuGameVC *vc = [[MSRoomMenuGameVC alloc] initWithDelegate:self.delegate roomMenuType:MSRoomMenuTypePK]; vc.modalPresentationStyle = UIModalPresentationOverFullScreen; [self.delegate.getCurrentNav presentViewController:vc animated:YES completion:nil]; break; @@ -401,9 +403,21 @@ [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal]; [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected]; -#if RELEASE - self.gameButton.hidden = self.delegate.getUserInfo.uid != roomInfo.uid; -#endif + // MARK: 房主 or 超管可以看到按钮 + self.baiShunGameButton.hidden = YES; + self.pkButton.hidden = YES; + if ([AccountInfoStorage instance].getUid.integerValue == roomInfo.uid) { + self.baiShunGameButton.hidden = NO; + self.pkButton.hidden = NO; + } else { + for (GuildSuperAdminInfoModel *managerInfo in self.delegate.getRoomSuperAdminList) { + if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + self.baiShunGameButton.hidden = NO; + self.pkButton.hidden = NO; + break; + } + } + } self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode; if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.m b/YuMi/Modules/YMRoom/View/XPRoomViewController.m index f46950a5..de18e01d 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomViewController.m +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.m @@ -720,7 +720,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 }]; [self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(115); +// make.height.mas_equalTo(115); make.trailing.mas_equalTo(self.view); make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5); make.width.mas_equalTo(87); @@ -1454,7 +1454,9 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 if (self.roomInfo.valid) { // 房间有效,直接进入房间 if (self.roomInfo.roomPwd.length > 0 && self.roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue && [XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {//进房密码的情况 if (!self.isRequestSuperAdmin) { + @kWeakify(self); [Api getRoomSuperAdminList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); NSArray * array = [GuildSuperAdminInfoModel modelsWithArray:data.data]; self.superMangerList = array; [self handleSuperManagerEnterAnchorRoom:self.roomInfo]; diff --git a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m index a8d05c89..a8eb7add 100644 --- a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m +++ b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m @@ -544,7 +544,6 @@ [self createBigPrizeAnimation:prizeModel]; } [self.animationListB addObject:prizeModel]; - } } diff --git a/YuMi/zh-Hans.lproj/Localizable.strings b/YuMi/zh-Hans.lproj/Localizable.strings index f654fd74..28b5938d 100644 --- a/YuMi/zh-Hans.lproj/Localizable.strings +++ b/YuMi/zh-Hans.lproj/Localizable.strings @@ -1626,9 +1626,6 @@ "XPRoomLuckyBigPrizeView0" = "%@运气爆表!在%@ 中开出了价值 %@金币 的 %@"; - - - "XPRoomQuickMessageContainView0" = "你发送的太频繁啦,请稍后再试"; "AnchorRoomSrollTipView0" = "向上滑动发现更多精彩房间";