From d958a3ca36acd0eee291566883e083c288e3180d Mon Sep 17 00:00:00 2001 From: edwinQQQ Date: Wed, 22 Jan 2025 21:22:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=AD=A3=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YuMi.xcodeproj/project.pbxproj | 18 +- .../room_manager_limit.imageset/Contents.json | 2 +- .../room_manager_limit.imageset/from (2).png | Bin 0 -> 45436 bytes .../room_manager_limit@3x.png | Bin 45760 -> 0 bytes .../app_admin_icon.imageset}/Contents.json | 2 +- .../app_admin_icon.imageset/超管@3x.png | Bin 0 -> 2934 bytes .../Contents.json | 2 +- .../from (1).png | Bin 0 -> 47105 bytes .../room_manager_limit_ar@3x.png | Bin 47439 -> 0 bytes .../Contents.json | 2 +- .../room_manager_limit_en.imageset/from.png | Bin 0 -> 45430 bytes .../room_manager_limit_en@3x.png | Bin 44158 -> 0 bytes .../Contents.json | 2 +- .../from (3).png | Bin 0 -> 46169 bytes .../room_manager_limit_tr@3x.png | Bin 46513 -> 0 bytes .../ms_login_choose_phone_icon.imageset/1.png | Bin 2042 -> 0 bytes .../common_offical.imageset/Contents.json | 21 - .../common_offical@3x.png | Bin 2016 -> 0 bytes .../room_menu_play.imageset/Contents.json | 21 - .../room_menu_play@3x.png | Bin 4021 -> 0 bytes YuMi/CustomUI/MoliAvatar.m | 4 +- .../View/NewLogin/XPLoginViewController.m | 49 +- .../Modules/YMMessage/Model/AttachmentModel.m | 65 ++ .../View/SessionList/SessionListCell.m | 8 +- .../SessionList/SessionListViewController.m | 4 + .../View/DressUp/Model/DressUpShopModel.m | 2 - .../MineInfo/XPMineUserInfoViewController.m | 4 +- .../YMMine/View/SubViews/CPGiftBanner.m | 19 - .../MineInfo/XPMineUserInfoHeaderView.m | 101 +- .../View/Cell/XPMomentsTableViewCell.m | 6 +- .../View/SubViews/XPMomentsUserInfoView.m | 2 +- .../YMNewHome/Presenter/XPHomeMinePresenter.h | 2 - .../YMNewHome/Presenter/XPHomeMinePresenter.m | 16 - .../Cell/XPNewHomePartyCollectionViewCell.m | 6 + .../YMNewHome/View/XPHomeMineViewController.m | 8 - .../View/XPHomePagingViewController.m | 8 +- .../YMNewHome/View/XPNewHomeViewController.m | 8 + YuMi/Modules/YMRoom/Api/Api+Room.h | 2 + YuMi/Modules/YMRoom/Api/Api+SuperAdmin.h | 24 + YuMi/Modules/YMRoom/Api/Api+SuperAdmin.m | 28 + .../View/SubViews/XPAcrossRoomPKPanelView.m | 1 - .../XPRoomActivityContainerView.m | 6 +- .../AnimationView/GameUniversalBannerView.m | 79 +- .../View/AnimationView/RoomAnimationView.m | 49 +- .../View/AnimationView/XPRoomAnimationView.m | 1 - .../XPRoomFunctionContainerView.m | 9 +- .../View/XPRoomLittleGameContainerView.m | 6 + .../View/MenuContainerView/MSRoomMenuGameVC.m | 24 +- .../XPRoomMenuContainerView.m | 71 +- .../MenuContainerView/XPRoomSendTextView.m | 1 + .../Tool/XPRoomMessageParser.m | 85 +- .../View/XPRoomMessageTableViewCell.m | 3 + .../XPRoomMessageContainerView.m | 163 +--- .../View/MoreView/Model/XPRoomMoreItemModel.h | 4 + .../MoreView/Presenter/XPMoreMenuPresenter.h | 2 +- .../MoreView/Presenter/XPMoreMenuPresenter.m | 18 +- .../AppOfficalManagerActionsViewController.h | 23 + .../AppOfficalManagerActionsViewController.m | 251 +++++ .../Cell/XPRoomMoreMenuCollectionViewCell.m | 7 +- .../View/XPRoomMoreMenuViewController.m | 18 +- .../XPRoomQuickMessageContainView.m | 1 + .../RoomGame/View/SubView/MSRoomGameMsgView.m | 1 + .../View/SubView/MSRoomGameSendTextView.m | 1 + .../YMRoom/View/RoomSideMenu/RoomSideMenu.m | 6 +- .../View/SendGiftView/GiftComboManager.m | 1 + .../View/Cell/XPGiftUserCollectionViewCell.m | 36 +- .../View/SendGiftView/View/XPSendGiftView.m | 56 +- .../View/Cell/XPRoomRoleTableViewCell.h | 3 + .../View/Cell/XPRoomRoleTableViewCell.m | 4 + .../Setting/View/XPRoomOnLineViewController.m | 14 +- .../Setting/View/XPRoomRoleViewController.h | 3 + .../Setting/View/XPRoomRoleViewController.m | 7 + .../YMRoom/View/StageView/AnchorPKStageView.m | 5 +- .../YMRoom/View/StageView/AnchorStageView.m | 4 +- .../Modules/YMRoom/View/StageView/StageView.m | 227 +++-- .../View/UserCard/Model/XPUserCardInfoModel.h | 2 + .../UserCard/Presenter/XPUserCardPresenter.h | 6 +- .../UserCard/Presenter/XPUserCardPresenter.m | 339 ++++--- .../UserCard/Protocol/XPUserCardProtocol.h | 2 +- .../View/UserRoomCardViewController.h | 5 +- .../View/UserRoomCardViewController.m | 195 +++- .../UserCard/View/XPUserCardViewController.m | 42 +- .../YMRoom/View/XPRoomViewController.m | 99 +- .../View/PIFullScreenBannerAnimation.h | 25 - .../View/PIFullScreenBannerAnimation.m | 894 ------------------ .../YMTabbar/View/TabbarViewController.m | 134 +-- YuMi/Structure/MVP/Model/UserInfoModel.h | 2 +- .../CardManager/XPSkillCardPlayerManager.h | 2 + YuMi/Tools/NSString/NSString+Utils.m | 6 +- YuMi/ar.lproj/Localizable.strings | 19 + YuMi/en.lproj/Localizable.strings | 18 + YuMi/tr.lproj/Localizable.strings | 23 + YuMi/zh-Hant.lproj/Localizable.strings | 23 +- 93 files changed, 1644 insertions(+), 1818 deletions(-) create mode 100644 YuMi/Assets.xcassets/1.0.34/room_manager_limit.imageset/from (2).png delete mode 100644 YuMi/Assets.xcassets/1.0.34/room_manager_limit.imageset/room_manager_limit@3x.png rename YuMi/Assets.xcassets/{Login/ms_login_choose_phone_icon.imageset => 20.20.50/app_admin_icon.imageset}/Contents.json (88%) create mode 100644 YuMi/Assets.xcassets/20.20.50/app_admin_icon.imageset/超管@3x.png create mode 100644 YuMi/Assets.xcassets/Language/ar/room_manager_limit_ar.imageset/from (1).png delete mode 100644 YuMi/Assets.xcassets/Language/ar/room_manager_limit_ar.imageset/room_manager_limit_ar@3x.png create mode 100644 YuMi/Assets.xcassets/Language/en/room_manager_limit_en.imageset/from.png delete mode 100644 YuMi/Assets.xcassets/Language/en/room_manager_limit_en.imageset/room_manager_limit_en@3x.png create mode 100644 YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/from (3).png delete mode 100644 YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/room_manager_limit_tr@3x.png delete mode 100644 YuMi/Assets.xcassets/Login/ms_login_choose_phone_icon.imageset/1.png delete mode 100644 YuMi/Assets.xcassets/utils/common_offical.imageset/Contents.json delete mode 100644 YuMi/Assets.xcassets/utils/common_offical.imageset/common_offical@3x.png delete mode 100644 YuMi/Assets.xcassets/yna/Menu/room_menu_play.imageset/Contents.json delete mode 100644 YuMi/Assets.xcassets/yna/Menu/room_menu_play.imageset/room_menu_play@3x.png create mode 100644 YuMi/Modules/YMRoom/Api/Api+SuperAdmin.h create mode 100644 YuMi/Modules/YMRoom/Api/Api+SuperAdmin.m create mode 100644 YuMi/Modules/YMRoom/View/MoreView/View/AppOfficalManagerActionsViewController.h create mode 100644 YuMi/Modules/YMRoom/View/MoreView/View/AppOfficalManagerActionsViewController.m delete mode 100644 YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.h delete mode 100644 YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m diff --git a/YuMi.xcodeproj/project.pbxproj b/YuMi.xcodeproj/project.pbxproj index 1bd9b2b8..41a8f6a5 100644 --- a/YuMi.xcodeproj/project.pbxproj +++ b/YuMi.xcodeproj/project.pbxproj @@ -155,7 +155,6 @@ 232C43EC2AB169EC00D4B2ED /* pi_room_tarrow_banner.svga in Resources */ = {isa = PBXBuildFile; fileRef = 232C43EB2AB169EB00D4B2ED /* pi_room_tarrow_banner.svga */; }; 232C444B2AB4363200D4B2ED /* pi_room_tarrow_h5_banner.svga in Resources */ = {isa = PBXBuildFile; fileRef = 232C444A2AB4363200D4B2ED /* pi_room_tarrow_h5_banner.svga */; }; 232EBBFF2BD7A25500E8CEAD /* MSParamsDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 232EBBFE2BD7A25500E8CEAD /* MSParamsDecode.m */; }; - 2331C0DC2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C0DB2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m */; }; 2331C1632A5EB71000E1D940 /* XPNobleCenterPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1322A5EB71000E1D940 /* XPNobleCenterPresenter.m */; }; 2331C1642A5EB71000E1D940 /* NobleInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1362A5EB71000E1D940 /* NobleInfo.m */; }; 2331C1652A5EB71000E1D940 /* NobleRechargeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2331C1392A5EB71000E1D940 /* NobleRechargeModel.m */; }; @@ -522,6 +521,8 @@ 4CEB9EAD2D09AA0400443480 /* SexAgeLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEB9EAC2D09AA0400443480 /* SexAgeLabel.m */; }; 4CEB9EB02D0AF4FE00443480 /* TwentyMicStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEB9EAF2D0AF4FE00443480 /* TwentyMicStageView.m */; }; 4CEB9EB32D0AFCE200443480 /* NineteenMicStageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CEB9EB22D0AFCE200443480 /* NineteenMicStageView.m */; }; + 4CFFEFCD2D3A4E410035D016 /* AppOfficalManagerActionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CFFEFCC2D3A4E410035D016 /* AppOfficalManagerActionsViewController.m */; }; + 4CFFEFD02D3A5E130035D016 /* Api+SuperAdmin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CFFEFCF2D3A5E130035D016 /* Api+SuperAdmin.m */; }; 540EC1D02C89925F00F3BF0D /* GiftComboView.m in Sources */ = {isa = PBXBuildFile; fileRef = 540EC1CF2C89925F00F3BF0D /* GiftComboView.m */; }; 540EC1D32C89998500F3BF0D /* GiftComboManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 540EC1D22C89998500F3BF0D /* GiftComboManager.m */; }; 5412E0F42C4E460300FDD668 /* XPMineCenterAgencyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5412E0F32C4E460300FDD668 /* XPMineCenterAgencyView.m */; }; @@ -1945,8 +1946,6 @@ 232C444A2AB4363200D4B2ED /* pi_room_tarrow_h5_banner.svga */ = {isa = PBXFileReference; lastKnownFileType = file; path = pi_room_tarrow_h5_banner.svga; sourceTree = ""; }; 232EBBFD2BD7A25500E8CEAD /* MSParamsDecode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MSParamsDecode.h; sourceTree = ""; }; 232EBBFE2BD7A25500E8CEAD /* MSParamsDecode.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MSParamsDecode.m; sourceTree = ""; }; - 2331C0DA2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PIFullScreenBannerAnimation.h; sourceTree = ""; }; - 2331C0DB2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PIFullScreenBannerAnimation.m; sourceTree = ""; }; 2331C1312A5EB71000E1D940 /* XPNobleCenterPresenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterPresenter.h; sourceTree = ""; }; 2331C1322A5EB71000E1D940 /* XPNobleCenterPresenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterPresenter.m; sourceTree = ""; }; 2331C1342A5EB71000E1D940 /* XPNobleCenterProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterProtocol.h; sourceTree = ""; }; @@ -2650,6 +2649,10 @@ 4CEB9EAF2D0AF4FE00443480 /* TwentyMicStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TwentyMicStageView.m; sourceTree = ""; }; 4CEB9EB12D0AFCE200443480 /* NineteenMicStageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NineteenMicStageView.h; sourceTree = ""; }; 4CEB9EB22D0AFCE200443480 /* NineteenMicStageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NineteenMicStageView.m; sourceTree = ""; }; + 4CFFEFCB2D3A4E410035D016 /* AppOfficalManagerActionsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppOfficalManagerActionsViewController.h; sourceTree = ""; }; + 4CFFEFCC2D3A4E410035D016 /* AppOfficalManagerActionsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppOfficalManagerActionsViewController.m; sourceTree = ""; }; + 4CFFEFCE2D3A5E130035D016 /* Api+SuperAdmin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+SuperAdmin.h"; sourceTree = ""; }; + 4CFFEFCF2D3A5E130035D016 /* Api+SuperAdmin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+SuperAdmin.m"; sourceTree = ""; }; 540EC1CE2C89925F00F3BF0D /* GiftComboView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftComboView.h; sourceTree = ""; }; 540EC1CF2C89925F00F3BF0D /* GiftComboView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiftComboView.m; sourceTree = ""; }; 540EC1D12C89998500F3BF0D /* GiftComboManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiftComboManager.h; sourceTree = ""; }; @@ -7599,6 +7602,8 @@ 54E82EAA2CA9261000C931D9 /* Api+Boom.m */, 546104172CD4C06400066B21 /* Api+CustomBackground.h */, 546104182CD4C06400066B21 /* Api+CustomBackground.m */, + 4CFFEFCE2D3A5E130035D016 /* Api+SuperAdmin.h */, + 4CFFEFCF2D3A5E130035D016 /* Api+SuperAdmin.m */, ); path = Api; sourceTree = ""; @@ -10731,8 +10736,6 @@ 9BE01AF42893E7E000B50299 /* Cell */, 189DD53226DE255300AB55B1 /* TabbarViewController.h */, 189DD53326DE255300AB55B1 /* TabbarViewController.m */, - 2331C0DA2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.h */, - 2331C0DB2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m */, 142721B029A7647F00C7C423 /* XPBlankViewController.h */, 142721B129A7647F00C7C423 /* XPBlankViewController.m */, 140A7F50299CC69000841594 /* XPTabBar.h */, @@ -11007,6 +11010,8 @@ E8DEC99D2764A5B60078CB70 /* XPRoomMoreMenuViewController.m */, E8412F9427795E34006E1101 /* XPRoomInviteFansView.h */, E8412F9527795E34006E1101 /* XPRoomInviteFansView.m */, + 4CFFEFCB2D3A4E410035D016 /* AppOfficalManagerActionsViewController.h */, + 4CFFEFCC2D3A4E410035D016 /* AppOfficalManagerActionsViewController.m */, ); path = View; sourceTree = ""; @@ -11935,6 +11940,7 @@ E81E09C9290F71BF00A1F410 /* XPAdvertiseView.m in Sources */, 2305F3412AD94D5200AD403C /* XPMaskManagerVC.m in Sources */, 238B37D32AC55A2C00BFC9D5 /* XPTreasureFairyShopingRecordView.m in Sources */, + 4CFFEFD02D3A5E130035D016 /* Api+SuperAdmin.m in Sources */, 9BC5C91F277C902B007C8719 /* XPReleaseRadioView.m in Sources */, E84843AF27F59E7E0050D365 /* XPRoomPKResultView.m in Sources */, E83DB47A27462C4500D8CBD1 /* XPGiftBigPrizeModel.m in Sources */, @@ -12049,6 +12055,7 @@ E8788942273A55AD00BF1D57 /* XPGiftUsersView.m in Sources */, 9BD9A17927A0EC57004186FE /* XPMineVisitorPresenter.m in Sources */, E8BD0F8828A9E9E400DE050D /* RoomSailingPrizeModel.m in Sources */, + 4CFFEFCD2D3A4E410035D016 /* AppOfficalManagerActionsViewController.m in Sources */, 238B37B32AC55A2C00BFC9D5 /* XPTreasureFairyPrizeRecordCell.m in Sources */, 23CEFC512AFB8FC100576D89 /* SystemUtil.m in Sources */, E8659909273E800D00EE349D /* XPGiftCollectionViewFlowLayout.m in Sources */, @@ -12986,7 +12993,6 @@ 18F403CB2758C66800A6C548 /* MessageContentText.m in Sources */, 547853A12C258F2A00F45E60 /* XPMineUserViewHeader.m in Sources */, E87DF4E72A42CB00009C1185 /* XPHomePresenter.m in Sources */, - 2331C0DC2A5E9E9000E1D940 /* PIFullScreenBannerAnimation.m in Sources */, E8232600274E48EA003A3332 /* XPUserCardItemCollectionViewCell.m in Sources */, 239D0FA92BFCB88D002977CE /* XPRoomDatingVipUpMicView.m in Sources */, E88B5CC526FB42B000DA9178 /* XPMineUserInfoHeaderView.m in Sources */, diff --git a/YuMi/Assets.xcassets/1.0.34/room_manager_limit.imageset/Contents.json b/YuMi/Assets.xcassets/1.0.34/room_manager_limit.imageset/Contents.json index f40b62af..8803d945 100644 --- a/YuMi/Assets.xcassets/1.0.34/room_manager_limit.imageset/Contents.json +++ b/YuMi/Assets.xcassets/1.0.34/room_manager_limit.imageset/Contents.json @@ -9,7 +9,7 @@ "scale" : "2x" }, { - "filename" : "room_manager_limit@3x.png", + "filename" : "from (2).png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/1.0.34/room_manager_limit.imageset/from (2).png b/YuMi/Assets.xcassets/1.0.34/room_manager_limit.imageset/from (2).png new file mode 100644 index 0000000000000000000000000000000000000000..7922800413119d7a01d23186e54f83b70b8aa6c6 GIT binary patch literal 45436 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%0ANn+)VzCB9)OfL8gx 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 ZVOLtvJpA2-RtfMqZF%k_>E~as{TB{UYMTH6 diff --git a/YuMi/Assets.xcassets/Login/ms_login_choose_phone_icon.imageset/Contents.json b/YuMi/Assets.xcassets/20.20.50/app_admin_icon.imageset/Contents.json similarity index 88% rename from YuMi/Assets.xcassets/Login/ms_login_choose_phone_icon.imageset/Contents.json rename to YuMi/Assets.xcassets/20.20.50/app_admin_icon.imageset/Contents.json index 5501fd72..ee0b03f9 100644 --- a/YuMi/Assets.xcassets/Login/ms_login_choose_phone_icon.imageset/Contents.json +++ b/YuMi/Assets.xcassets/20.20.50/app_admin_icon.imageset/Contents.json @@ -9,7 +9,7 @@ "scale" : "2x" }, { - "filename" : "1.png", + "filename" : "超管@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/20.20.50/app_admin_icon.imageset/超管@3x.png b/YuMi/Assets.xcassets/20.20.50/app_admin_icon.imageset/超管@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9c410cd5c582abb6cabb9b4507e6ecc2fc38c32b GIT binary patch literal 2934 zcmV-+3yJiJP)Px=FiAu~RCr$PooA>eNfpQcWzIRL6|;hh5wn636)|8|6m!6giaEy*f{3Cn1{6gF zF@Wd?MMOm~Vn7iSyR);&+1;7l*>z`ir|jQ-r=C6i`rb~bs{8rgfy-Rx^{w!)Qzut- z&_XE2co|9Qb9qU8u4w;WR?_7p1$%~3AD0v*T`K9{_W6&bWA>fD9}gk$@9f0DXQLP+ z;9aQ(=oMAUSb~>0q~E75coa|%>s0c5pb^|>8g_8Rya8)0es^2b6J280=uCY z6#+WNNIw92Wl7gD4lXvymX6?X0RI=Frv&KPfi~`ibNRr@OCrR}1(J@25CA_LWdquj z+jS*f-MBehUlY+u3KhW54I!Xh-N}9O1~A+U$SAknL~!*XM2fey;tF((5gB|9DY>N;Sd5c+=bkLjxi!4b|V+B0}}atD1-p$lW8*0F-EM3YZ=Is2eiNj&hwDn zlYovf;=SF#EQ$qU3kTqHRAv>{@oH_&@fCU@3;}ZXfnIgZSM>8_03l9_52=NiE}~-=XA}v6Sx>7?(|K%8gl+S zF%rDYJ4w2?q&rKxd94rP5kHsoBT0Xk#6)Kc>YLd|P--o01bQY5^NsBQzxI0yo3eAC~l;QiE;ubG~_x ztvSj~K%@8&8J*(AVPZu6o+s%=6Fp5Vflo{NtYuFehSs|Y0LH#<6(Ox4nw5dQOcuHX zy}YtZUr=%6RUA4aF7XLTCp)w?vp!ql;s0(wr4#w{nucr*b`NRm%U`eC8)D~`)UOHQoO*D78eEJ{ah2KCA%iCDyg z3Uv5=NyJj-qOGW&RoxS%D_v6i%0f z=I-ah;fSOsOWL+)b9J<#UGj+s0GhZn7Ds79RDD3w!!mVDoZ%Z)ZT5Stq$^W5y_!7; z&;*dK*XwcLhfu_ir~*pw%VfVFt^j_6YAFG`|JYiV>Gpl`RZQ2{Q=;k%m+42QP`yT~~I!V<7Q zsbn$<(PmA>eJf|>wvxUu_Z*i9bQ2SlPqkdmSL~A^EGphPN=si zg!&}_O?g3ylu~m}aO*uKJ*5H)VAfSeq2!2NqxjCOeNcvNL<|K7h;rXLQR<7V{!<}v z>)l)k&{T|athh8GGbzsn;C011MBm6@Q!db#6CY)qOV+4KUpHI5^jr@EG;t2%9VG}r z*+K8EUu zqwP~mrLq9!Rn^MAu*bmakKDDvU05jZtj@1IIzzQ9i2`=dOC{kDdC_(%3+~F9oJB4_ z#5iSW+?&8X6-{*l?AMsJ;%Sy1FvUw?%JT}ht>i2-h%x3YHvn9=BVZ3L1?KS2E9~S| z9c(J9*db4M;%vke<->n)2AMH$l^Yn)ISXhWYq`O(^7LobOR48fK8m4GliaFB$v2IW5j$s$eHnak)wC+5DwvllHIs&e8~>b4;v)5NK?q@Ww4)9*hCj6y9>jzR-jgx$bnn~5 z2xci~6Q4hD-~dgY(o^v@hj2=|Pp?_=?-gL8gyEwt@rHp|v_4MN5n?0}3yGUPCX-Ge zt10_E#z-4n?M8j{>Kse1qZI^nI8=%K>`k9H<(k^XVj}K5CX4=RJKpR)M%rsXTESl& z>+mr8nM4kvUXN0;M8vHDf6Qrx=I-zsFG`S$Q`R09g2O$IzdhRyRC*0OwZp(U_ww6X z!&o-Nnw!o`O4?Gf1h==DmxN!jpFOGj_?vMxN)axZa-b8@K}On}2>v|P0{*FO0#8^s zb;1Gpig7;N#dQ>fWjSI|w@m(FPLF4y4a|T^cfzHzxsE7P%ZD_=Slky@` zR&Qz~SqZxme?|;&ZwKXIo31D(toj5=c&vm}SvVHZgXkC8yyNPhP1i^ePXMGLPC$LI z*taBE3Gx#|_8`KSEFLy+B5FVYj97BtEDY8V)(ZNF(lL*_qmj*=mTfKI>AD!jBdUk2 zCyvZ#irfcS#KAA^8hMX}^K64tvfS4(>|&IfVq~k06(ODzS#n$Bulh-|vg?XVoey6! zn489i$k=%OaW9J?bG&-Dg1g%EcA@uI*cAZU2J7oh;#d!Jx@&H1%G(#<**z z`Cpk?lh=T~e+leX9Y~%_U~6DgsIq^p@xT`?^perdJ+yyO_wct_i~@R(%IrZhd6d<$ zPAk-2ra+cs^rCfXodx_I>tddlDb!>(rXMkbQWp}I#+{HWH_3F~5xr?(Zd_>B9}^z^ ze{t7wt0{ijcwKSdRd)m0(f=9tE!UrJV=hTYhU?A}eU*+W!hsq@Ibz3o0dLA z+oJ7(>_D6Brl0*+p^jRjkw3DlIpOT|?pd-fW7B1QM}auNJcE1B&&|EFadd~ngThSj z|7HRBOa(r@D;(vPURQl_y`ZJ<3VA(OM0E5SY|9JS0UvHpFJnjaFy6EX=>_c6Q6yl~ g%hv&SQ7>TsFCWGm6JIPlyZ`_I07*qoM6N<$f<;+_qW}N^ literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Language/ar/room_manager_limit_ar.imageset/Contents.json b/YuMi/Assets.xcassets/Language/ar/room_manager_limit_ar.imageset/Contents.json index 64609ff2..cc239228 100644 --- a/YuMi/Assets.xcassets/Language/ar/room_manager_limit_ar.imageset/Contents.json +++ b/YuMi/Assets.xcassets/Language/ar/room_manager_limit_ar.imageset/Contents.json @@ -9,7 +9,7 @@ "scale" : "2x" }, { - "filename" : "room_manager_limit_ar@3x.png", + "filename" : "from (1).png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/Language/ar/room_manager_limit_ar.imageset/from (1).png b/YuMi/Assets.xcassets/Language/ar/room_manager_limit_ar.imageset/from (1).png new file mode 100644 index 0000000000000000000000000000000000000000..5dba487e4930ff6963c9fd176c7bf4d67ab07075 GIT binary patch literal 47105 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 z

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 W@_cD&T2Xx9cfsJw*{m~mcm4~~5x9K- diff --git a/YuMi/Assets.xcassets/Language/en/room_manager_limit_en.imageset/Contents.json b/YuMi/Assets.xcassets/Language/en/room_manager_limit_en.imageset/Contents.json index ecfdc2ae..3c95f84d 100644 --- a/YuMi/Assets.xcassets/Language/en/room_manager_limit_en.imageset/Contents.json +++ b/YuMi/Assets.xcassets/Language/en/room_manager_limit_en.imageset/Contents.json @@ -9,7 +9,7 @@ "scale" : "2x" }, { - "filename" : "room_manager_limit_en@3x.png", + "filename" : "from.png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/Language/en/room_manager_limit_en.imageset/from.png b/YuMi/Assets.xcassets/Language/en/room_manager_limit_en.imageset/from.png new file mode 100644 index 0000000000000000000000000000000000000000..782c66e39ad7e8421dab2561523ac8b10263f308 GIT binary patch literal 45430 zcmeEu`9IX}_jmTCP!ZWh$X?d$gzOYq$C8Ax%#bz9SW<{0d-k$s8I)yggOVis9y1v0 z*oGKm8QcBx`P|=k@BiTb;r{;6^mvS!*L9t9JY162QF}mgY+aWNAx)udFNuv7Y z2k!#ksjFwqd1F7W!9DHE?wTQ@O#RB&M&bBb_s>`742}@SIYhTS&n;Y{bgEPs+xU$M zY_}&E3|?@5H^jAV_pxLz#-+icFjD*J^GxwqBRt_3NU8tx^0YC$i!VAvMILQwIN*>s z(5#~*FR0x3WoR8gmTHm8-S~%FrAm(~QgBRA{^$TBq*ArJ{d&v)im~FAfd^OYn;+$+ zFYx{IG@ijn?LOAu1EvJO{9eF&l(P)X$1`}MGWAMR$k9_-Vq-JSO7h;(16X!ZUVdJa z%wMry9^{wRE|C29WuEC1<93M9ydv-Xp^sJHq-sh2grY0S{+B$X?&iYvbY-8AT&nNb zBi-y&C!c?PkK@{(*B)0Aw(Nc4*wPRR)!3I9#2&t%wf~KFsY=zBVD5ZN z7fPjp@RWBV<3T%YZRlhAVo-=G;V?vw-`iwQ{eP5jS?vQq&2y#P2{yKnvysXVzNy$S z$fr2$)B=5j@k!`U!$$d5?GWB+&6|R`$)Cmk?>U|yrr4u)5f%A4!cW9hm`fM>`PySe z%;}Em{S@Z((bET-p=<**znTB9ssW`(cw8MMIF*T9Wbr+jTc%Yce7WWYdV%AZjL0-H}&!5meADK9Mpew`!A5rH?U3p{zEe^!2eiu z+~^@0boPurIjpJmiGTdh^3U|&+y1RXS(2&=AD^QwXqcEavVam@5~})KFJ9a3YJv?$ zR%tEn?-{9yk|g~6NZFk+cB+U{iLZrx4+mi<_eO*Ab^+DhX4e&UJLUXGs`esMyM!)$ zR22_4LI>}weW}6tEObyc&|B$j+2n57+rQ5Zhmj<-4DO*6H)#LbL-PcTl3*R}&{@LdR5;^MUnq?s>1FBG^@ukG_(AJh2d+dks zqYcv&i9cpo9hl3QcziSOeaDTz zki*cEBw%N!LW7S~Oq$6vw612v>-ALi{dVoI8*! zvjsv5{Lxx}(b%p`sxr_4;hup$ao2BGwk)~Ly3R%67W*%`-N===296-D$dg#LcG!I4 z$BrGPRtnzMi>5w$@&Ec@csY6e(&EqTaR!_vG^k-fNpf+kbKyuPlHb;k@qyJpl17Zu zJbJFl1;yuZ8VC2&r5$r8{FE~ZP>Fx@chPVZd5EXJ!wfRlG=X6=c_Gz_ceo2eKFab} z#Su)j75!pAn>&4$88j$$A}biT>-6Wk?@Is6X2co)WT)A%V&zX(-YF{02Y+>{D{1W5Z!gTiwdfxJ66+7=#*ECGyYKC4#bdSe(0H6&|Rs$rhqo z7Jo$Dba7=6^V@6dNh3|oG{e%CHOyO+8YYKRu>7;EUnU`aVY;Db>zN@&BD1IQ2f_(O zJEMm2w$E1s3jYj8N1nEBe7@m|jM6kt8~NDAWPB3PjYA(4SVZE=C}tC*3P4wtZyxdA zQftrQu@Tt1-=5PA@2GQnp$2Y;Po%6Qn2>J%6w_cud;if5x6Sk@anbt{_!%1Y&lR1;S+f)&E1c*`j&V(?% z>6urn^9xE?a_WYfKj!Ca-!IbBy%xjlbwu_ylYzU=&xjOC3I)mOMR`8*U24<$THQ=) zv8o(wDLi}7^n8FrXFYXYO_%fbsstO)cv$Ow+9Os>J zlTh`DMPCjczdZ58D84Ms5bUgVVaGe4!H%5NeE{I*vLdN^`D(S{s4zCzQkjszXIc_D zl7NcfLjL36q1v$Y7wTA-dOht*|4(s7d{+69#|oFg$AWnlZirSMKSjHXdI7pO3FY#T z!F;mKv z56X=6mh!jsJLdcZFnh+3687&|#B1XUg*e{n;BMLmg4LYsbO&0{f6K=d+cMwoQa?AS zusxRjmY89<+ZtP!cSclh44fCj4IjuWz}i2rzxG3B>}>%Oj`Qj^#hW?c;jq{zj7z1ruUAfH(tw4>nJCamI%=*u3OB z>=VnB-DT;^?kw?VM;~f}cDsHzwz%RMW)$!XdMyNX)EG|DJ|HU{5?mvoepZS!Ii2rY zw)Sp*n>d_x=61MQniQK3y|%Rqt55Kp9z+K_woTt%O7fZ zx@SWlZY5veZ)}6(gAADsFK&l96SQMCK?uAbeww{}u@=YAKS5d2WhQL?CcfXY0w$rC$W-+!*T6RWxF^T@(AG-Lw${N9=>h;`lD<^(uhtKY|^ml}K&>E9)R z?61NISc&42xfA=CDsduD&5OB!EUnx9VVO7zX{+CwkGdTq1W5K9Ba%8NPK|c@;XjMh z!7l3A&q+6zcZaR2tjO#*f3qrZe-3Tk^;wo6M33tdf>qtKL6cWwq8BD6cE@_c1OO{# z-d@xRJ!3WTJv7ej^?E#Q;Zine#%K6|L*PWJ}!|Il73>co73XOenVV{QuJk99ZM@5Y;W59Ik9$j8~N^|mZ`RM zgJI$5X0~9drPD(euuul!HOH z#mOD9Gq|#!a2K-n;W-^>W zhg%ueYWya)Q-oUGJIzNuY6;C_vN^sc#Bub%U^$bJpo=SRdp{GbXG%i4DcT}p!s;cG z9{+TL>*{)X(3s*Z3%*BDZ)mKtqTJrvp2gWg>Os*Z<`^a~tS=jHr^T59cua@USK|5I zCqWtlRA>PCSp!ZpuaZ6LqV^t{iJc}c`m^)DDrjRxFR(6ACpy0czB&O7{ZSFcK3c%G zbU>u2tTE9HPF`lvBZz4gYJqrj?#+5>>T%OfwE9uaNMWlf!#;KynYT}82W12Y9Ja;m zAH;v?>G>Ys{P?>?5qO^Ag)^VfSx;)jfNceW-yiB_I55avG(MVQd6Y4!v{v?_wb?gs zaF6bY<8ICDXjc<0Wb{JV*1b{`p_nQD(7wLvj(H`lhIBKQ&sj@veINEn!ZT+SdYCmD z@@LjHXHvkN-T7A=qnC@G{>^O#6Hc$_}OcK@Gr5~=e-i`-KbU=j+%HNLczD0_-%WZAt=rf=X$ZIXE7YLOTE4hHjbyUVN(GC zL0PI;P7X0~vwPj&HCa(TxDPNyx>5V!E3j+Yofe^wyo2A+HKP&Yb)3-g7%%lCT?W@r zG`j~@301D#jYxqkZt8IaI4Ds;uBktft5i^-ZC1ua`s7TOrk-$M-6H6p<(rf(&XR=@ zS~-}ZEJY!H@BWGAQnfi+ljJ69=&C#?CHX`T zHkEjyU*xuG{9-NDl>||*HMAHeEn-8AYn>eIw5s5*+D|o6I%X-2|!Z6uW9xbtV~W2Gp=6lESsDi;&b*Xxp7vLH`ItwGnD-(&*RjM7l_;A zhJNih*Rin{VozO5P?_C{Na@MJYE0%FR|-*h@XYD`t3I_MjxPl~9 z;PVfZ>Z{B*MqHhI+hLWIL^sRe7!5p}kD|0GYfpH6-2rCkA-0wr);&?^wRoZ)R^=mW z5%vf5VfDv13iN3XFXwDXM!KOD1L6*^kY0Yo2H-$b*LqlY2vlL-q`YjIujb-6So18{*k<5#tcYBKB8D^uzTd z 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 H@lF0OBy8sk diff --git a/YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/Contents.json b/YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/Contents.json index be3dbcf6..c10c49ed 100644 --- a/YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/Contents.json +++ b/YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/Contents.json @@ -9,7 +9,7 @@ "scale" : "2x" }, { - "filename" : "room_manager_limit_tr@3x.png", + "filename" : "from (3).png", "idiom" : "universal", "scale" : "3x" } diff --git a/YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/from (3).png b/YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/from (3).png new file mode 100644 index 0000000000000000000000000000000000000000..0be59d7aef8663c89ce6594cad4fbbf2b81e429f GIT binary patch literal 46169 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 WpL{8Otx?4QUfLRZ>czi23jaS6%-aJ1 literal 0 HcmV?d00001 diff --git a/YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/room_manager_limit_tr@3x.png b/YuMi/Assets.xcassets/Language/tr/room_manager_limit_tr.imageset/room_manager_limit_tr@3x.png deleted file mode 100644 index 5f46f229df18924a113625fb873ba2fe462dc6fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46513 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 IFPCEf1Ij{g%K!iX diff --git a/YuMi/Assets.xcassets/Login/ms_login_choose_phone_icon.imageset/1.png b/YuMi/Assets.xcassets/Login/ms_login_choose_phone_icon.imageset/1.png deleted file mode 100644 index e44f8257f2281dd03497698b8cc6f7e684bdde04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2042 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 b7NGwFH<6(^!rp}Y00000NkvXXu0mjf#QLeZ diff --git a/YuMi/CustomUI/MoliAvatar.m b/YuMi/CustomUI/MoliAvatar.m index 036a2a03..33baae84 100644 --- a/YuMi/CustomUI/MoliAvatar.m +++ b/YuMi/CustomUI/MoliAvatar.m @@ -74,7 +74,7 @@ [self addSubview:self.headWearSvgaImageView]; [self.headWearSvgaImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(self.avatarView); - make.size.mas_equalTo(self.avatarView).multipliedBy(1.3); + make.size.mas_equalTo(self.avatarView).multipliedBy(1.4); }]; [self.headWearSvgaImageView setImageName:url]; @@ -84,7 +84,7 @@ [self addSubview:self.sequenceFrameHeadWear]; [self.sequenceFrameHeadWear mas_makeConstraints:^(MASConstraintMaker *make) { make.center.mas_equalTo(self.avatarView); - make.size.mas_equalTo(self.avatarView).multipliedBy(1.3); + make.size.mas_equalTo(self.avatarView).multipliedBy(1.4); }]; @kWeakify(self); diff --git a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m index f1bb4510..31f76a7d 100644 --- a/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m +++ b/YuMi/Modules/YMLogin/View/NewLogin/XPLoginViewController.m @@ -69,8 +69,6 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; ///上次登錄 @property(nonatomic,strong) UILabel *nextLabel; -///选择类型背景 -@property(nonatomic,strong) UIImageView *chooseTypeView; ///选择手机登录 @property(nonatomic,strong) UIButton *chooseAccountBtn; ///选择密码登录 @@ -167,7 +165,6 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; [self.view addSubview:self.chooseAccountBtn]; [self.view addSubview:self.chooseSMSBtn]; - [self.view addSubview:self.chooseTypeView]; [self.view addSubview:self.accountView]; [self.view addSubview:self.accountPwdView]; @@ -210,30 +207,17 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; CGFloat width = KScreenWidth/2; [self.chooseAccountBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(0); + make.centerX.equalTo(self.view); make.height.mas_equalTo(kGetScaleWidth(22)); make.width.mas_equalTo(width); make.top.equalTo(self.logoView.mas_bottom).mas_offset(kGetScaleWidth(31)); }]; - - [self.chooseSMSBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(kGetScaleWidth(22)); - make.width.mas_equalTo(width); - make.top.equalTo(self.logoView.mas_bottom).mas_offset(kGetScaleWidth(31)); - make.trailing.mas_equalTo(0); - }]; - - [self.chooseTypeView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.logoView.mas_bottom).mas_offset(kGetScaleWidth(48)); - make.width.mas_equalTo(kGetScaleWidth(24)); - make.height.mas_equalTo(kGetScaleWidth(14)); - make.leading.mas_equalTo(KScreenWidth/4 - kGetScaleWidth(12)); - }]; + [self.accountView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.view); make.width.mas_equalTo(kGetScaleWidth(303)); - make.top.mas_equalTo(self.chooseTypeView.mas_bottom).offset(kGetScaleWidth(13)); + make.top.mas_equalTo(self.chooseAccountBtn.mas_bottom).offset(kGetScaleWidth(13)); make.height.mas_equalTo(kGetScaleWidth(52)); }]; @@ -268,6 +252,13 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; make.top.mas_equalTo(self.loginBtn.mas_bottom).offset(kGetScaleWidth(23)); make.centerX.mas_equalTo(self.view); }]; + + [self.chooseSMSBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(kGetScaleWidth(22)); + make.width.mas_equalTo(width); + make.top.equalTo(self.stackView.mas_bottom).mas_offset(kGetScaleWidth(31)); + make.centerX.mas_equalTo(self.stackView); + }]; CGFloat left = isMSRTL() ? -11 : 11; CGFloat protocolWidth = 204; @@ -526,15 +517,6 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; _phoneInputView.hidden = _loginType == 0; _codeInputView.hidden = _loginType == 0; - - [self.chooseTypeView.superview layoutIfNeeded]; - CGFloat lead = _loginType == 0 ? KScreenWidth/4 - kGetScaleWidth(12) : KScreenWidth/4 * 3 - kGetScaleWidth(12); - [UIView animateWithDuration:0.1 animations:^{ - [self.chooseTypeView mas_updateConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(lead); - }]; - [self.chooseTypeView.superview layoutIfNeeded]; - }]; } #pragma mark - XPLoginInputViewDelegate @@ -833,17 +815,6 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy"; return _loginBtn; } - - -- (UIImageView *)chooseTypeView{ - if(!_chooseTypeView){ - _chooseTypeView = [UIImageView new]; - _chooseTypeView.userInteractionEnabled = YES; - _chooseTypeView.contentMode = UIViewContentModeScaleAspectFit; - [_chooseTypeView setImage:kImage(@"ms_login_choose_phone_icon")]; - } - return _chooseTypeView; -} - (UIButton *)chooseAccountBtn{ if(!_chooseAccountBtn){ _chooseAccountBtn = [UIButton new]; diff --git a/YuMi/Modules/YMMessage/Model/AttachmentModel.m b/YuMi/Modules/YMMessage/Model/AttachmentModel.m index 340de2c0..6f434db3 100644 --- a/YuMi/Modules/YMMessage/Model/AttachmentModel.m +++ b/YuMi/Modules/YMMessage/Model/AttachmentModel.m @@ -10,7 +10,72 @@ @implementation AttachmentModel - (NSString *)encodeAttachment { +//#if DEBUG +// NSString *s = [self toJSONString]; +// NSString *ss = [self compressJSONString:s]; +// NSString *sss = [self convertModelToJSONString:self]; +//#endif return [self toJSONString]; } +- (NSDictionary *)toDictionary { + NSMutableDictionary *dict = [NSMutableDictionary dictionary]; + + if (self.data) { + dict[@"data"] = self.data; + } + dict[@"first"] = @(self.first); + dict[@"second"] = @(self.second); + dict[@"isBroadcast"] = @(self.isBroadcast); + + return [dict copy]; +} + +- (NSString *)convertModelToJSONString:(AttachmentModel *)model { + if (!model) { + return nil; + } + + // 获取模型的字典表示 + NSDictionary *modelDict = [model toDictionary]; + + // 将字典序列化为 JSON 数据 + NSError *error; + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:modelDict options:0 error:&error]; + + if (error) { + NSLog(@"JSON 序列化失败: %@", error.localizedDescription); + return nil; + } + + // 转换为字符串 + return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; +} + +- (NSString *)compressJSONString:(NSString *)jsonString { + if (!jsonString) return nil; + + // 将 JSON 字符串转为对象(字典或数组) + NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; + NSError *error; + id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; + + if (error) { + NSLog(@"JSON 解析错误: %@", error.localizedDescription); + return nil; + } + + // 将对象重新序列化为紧凑格式的 JSON 数据 + NSData *compressedData = [NSJSONSerialization dataWithJSONObject:jsonObject options:0 error:&error]; + + if (error) { + NSLog(@"JSON 序列化错误: %@", error.localizedDescription); + return nil; + } + + // 转换为字符串 + NSString *compressedString = [[NSString alloc] initWithData:compressedData encoding:NSUTF8StringEncoding]; + return compressedString; +} + @end diff --git a/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.m b/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.m index 119b5aa6..73f1e918 100644 --- a/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.m +++ b/YuMi/Modules/YMMessage/View/SessionList/SessionListCell.m @@ -86,12 +86,13 @@ self.timeLabel.text = [NIMTimeUtils formattedTimeFromInterval:timeSecond]; } [self.timeLabel sizeToFit]; + if (recent.unreadCount) { self.badgeView.hidden = NO; if (recent.unreadCount > 100) { - self.badgeView.text = @" 99+ "; + self.badgeView.text = @"99+"; } else { - self.badgeView.text = [NSString stringWithFormat:@" %@ ", @(recent.unreadCount)]; + self.badgeView.text = [NSString stringWithFormat:@"%@", @(recent.unreadCount)]; } } else { self.badgeView.hidden = YES; @@ -168,7 +169,7 @@ make.centerY.mas_equalTo(self.messageLabel); make.trailing.mas_equalTo(self.timeLabel); make.height.mas_equalTo(16); - make.width.mas_lessThanOrEqualTo(30); + make.width.mas_equalTo(16); }]; } @@ -225,6 +226,7 @@ _badgeView.backgroundColor = UIColorFromRGB(0xFF4E5C) ; _badgeView.textAlignment = NSTextAlignmentCenter; [_badgeView setCornerRadius:8]; + _badgeView.hidden = YES; } return _badgeView; } diff --git a/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.m b/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.m index 2440ccd8..d5969693 100644 --- a/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.m +++ b/YuMi/Modules/YMMessage/View/SessionList/SessionListViewController.m @@ -85,6 +85,10 @@ NSString * const kMessageShowReadDotKey = @"kMessageShowReadDotKey"; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(allReadButtonClick) name:@"kAllReadAction" object:nil]; } +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; +} + - (void)getUserInfo { NSString * uid = [AccountInfoStorage instance].getUid; [Api getUserInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { diff --git a/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.m b/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.m index 4680e361..262fd318 100644 --- a/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.m +++ b/YuMi/Modules/YMMine/View/DressUp/Model/DressUpShopModel.m @@ -34,8 +34,6 @@ NSForegroundColorAttributeName: UIColorFromRGB(0xF8CE1F) }; NSString *formattedPriceString; - -//TODO: 修改为支持 0-1-2 位小数 if (fmod(self.dressPrice, 1.0) == 0.0) { formattedPriceString = [NSString stringWithFormat:@"%ld", (long)self.dressPrice]; diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m index 8687131a..066a92a3 100644 --- a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoViewController.m @@ -404,9 +404,9 @@ HWDMP4PlayDelegate> if(isMSRTL()){ self.userMomentVC.view.hidden = YES; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.titleView selectItemAtIndex:1]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self.titleView selectItemAtIndex:0]; [self.userDataVC reloadView]; self.userMomentVC.view.hidden = NO; diff --git a/YuMi/Modules/YMMine/View/SubViews/CPGiftBanner.m b/YuMi/Modules/YMMine/View/SubViews/CPGiftBanner.m index 5d411b43..ba0135ed 100644 --- a/YuMi/Modules/YMMine/View/SubViews/CPGiftBanner.m +++ b/YuMi/Modules/YMMine/View/SubViews/CPGiftBanner.m @@ -113,25 +113,6 @@ }); } }]; - -// @kWeakify(bannerView); -// [UIView animateWithDuration:0.25 animations:^{ -// @kStrongify(bannerView); -// bannerView.center = CGPointMake(superView.center.x, height/2 + topSpace); -// } completion:^(BOOL finished) { -// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ -// [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ -// @kStrongify(bannerView); -// bannerView.frame = CGRectMake(-KScreenWidth, 0, width, height); -// } completion:^(BOOL finished) { -// @kStrongify(bannerView); -// if (bannerView.completeDisplay) { -// bannerView.completeDisplay(); -// } -// [bannerView removeFromSuperview]; -// }]; -// }); -// }]; } - (void)addNotification { diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m index 3d291807..d8fbe9e4 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoHeaderView.m @@ -126,13 +126,14 @@ HWDMP4PlayDelegate> @property (nonatomic,strong) SVGAImageView *onlineIconView; ///正在直播中 @property (nonatomic,strong) UIButton *onlineButton; -/// -@property (nonatomic,strong) UIStackView *idStackView; +@property(nonatomic, strong) UIStackView *stack; ///id @property (nonatomic,strong) UILabel *idLabel; @property (nonatomic, strong) UIImageView *copyIdImageView; @property (nonatomic, strong) XPBeautIDView *beautIDView; +@property(nonatomic, strong) UIView *idEmptyView; + @property (nonatomic, strong) UIButton *copyIdButton; ///魅力等级 等级 铭牌 @property (nonatomic,strong) UIStackView *tagStackView; @@ -270,7 +271,7 @@ HWDMP4PlayDelegate> [self setupNameArea]; - [self setupIDArea]; +// [self setupIDArea]; [self setupNameplateArea]; @@ -407,27 +408,66 @@ HWDMP4PlayDelegate> }]; } +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + NSLog(@"%@", [NSValue valueWithCGPoint:scrollView.contentOffset]); +} + - (void)setupIDArea { + if (_stack) { + return; + } + UIScrollView *scrollView = [[UIScrollView alloc] init]; - UIStackView *stack = [[UIStackView alloc] init]; - stack.axis = UILayoutConstraintAxisHorizontal; - stack.distribution = UIStackViewDistributionFill; - stack.alignment = UIStackViewAlignmentCenter; - stack.spacing = 4; - [self.userInfoView addSubview:stack]; - [stack mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(kGetScaleWidth(15)); - make.top.mas_equalTo(self.nickStackView.mas_bottom).offset(5); - make.height.mas_equalTo(24); - }]; - - [stack addArrangedSubview:self.beautIDView]; - [stack addArrangedSubview:self.idLabel]; - [stack addArrangedSubview:self.copyIdImageView]; - [stack addArrangedSubview:self.experImageView]; - [stack addArrangedSubview:self.charmImageView]; - [stack addArrangedSubview:self.vipPlateImageView]; - [stack addArrangedSubview:self.agentPlateImageView]; + _stack = [[UIStackView alloc] init]; + self.stack.axis = UILayoutConstraintAxisHorizontal; + self.stack.distribution = UIStackViewDistributionFill; + self.stack.alignment = UIStackViewAlignmentCenter; + self.stack.spacing = 4; + + if (self.userInfo.guildNameplateIcon.length > 0) { + scrollView.translatesAutoresizingMaskIntoConstraints = NO; + [self.userInfoView addSubview:scrollView]; + [scrollView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(15)); + make.trailing.mas_equalTo(kGetScaleWidth(-15)); + make.top.mas_equalTo(self.nickStackView.mas_bottom).offset(5); + make.height.mas_equalTo(24); + }]; + [scrollView addSubview:self.stack]; + [self.stack mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(scrollView); // 内容视图的边缘与滚动视图一致 + make.height.equalTo(scrollView); // 高度与滚动视图一致,确保仅水平滚动 + }]; + + if (isMSRTL()) { + _idEmptyView = [[UIView alloc] init]; + } + } else { + [self.userInfoView addSubview:self.stack]; + [self.stack mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.mas_equalTo(kGetScaleWidth(15)); + make.top.mas_equalTo(self.nickStackView.mas_bottom).offset(5); + make.height.mas_equalTo(24); + }]; + } + + [self.stack addArrangedSubview:self.beautIDView]; + [self.stack addArrangedSubview:self.idLabel]; + [self.stack addArrangedSubview:self.copyIdImageView]; + [self.stack addArrangedSubview:self.experImageView]; + [self.stack addArrangedSubview:self.charmImageView]; + [self.stack addArrangedSubview:self.vipPlateImageView]; + [self.stack addArrangedSubview:self.agentPlateImageView]; + if (_idEmptyView) { + [self.stack addArrangedSubview:self.idEmptyView]; + [self.idEmptyView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(24); + make.width.mas_equalTo(30); + }]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [scrollView setContentOffset:CGPointMake(34, 0)]; + }); + } [self.beautIDView mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(24); @@ -877,6 +917,8 @@ HWDMP4PlayDelegate> - (void)updateIDInfo { NSString *text = [NSString stringWithFormat:@"%ld", (long)self.userInfo.erbanNo]; + [self setupIDArea]; + if (self.userInfo.hasPrettyErbanNo) { self.idLabel.hidden = YES; self.beautIDView.hidden = NO; @@ -1025,19 +1067,6 @@ HWDMP4PlayDelegate> return _sexImageView; } -- (UIStackView *)idStackView { - if (!_idStackView) { - _idStackView = [[UIStackView alloc] init]; - _idStackView.backgroundColor = [UIColor clearColor]; - _idStackView.distribution = UIStackViewDistributionFill; - _idStackView.alignment = UIStackViewAlignmentCenter; - _idStackView.userInteractionEnabled = YES; - _idStackView.spacing = 2; - _idStackView.clipsToBounds = NO; - } - return _idStackView; -} - - (UILabel *)idLabel { if (!_idLabel) { _idLabel = [[UILabel alloc] init]; @@ -1226,7 +1255,7 @@ HWDMP4PlayDelegate> if (!_officialImageView) { _officialImageView = [[UIImageView alloc] init]; _officialImageView.userInteractionEnabled = YES; - _officialImageView.image = [UIImage imageNamed:@"common_offical"]; + _officialImageView.image = [UIImage imageNamed:@"app_admin_icon"]; _officialImageView.hidden = YES; } return _officialImageView; diff --git a/YuMi/Modules/YMMonents/View/Cell/XPMomentsTableViewCell.m b/YuMi/Modules/YMMonents/View/Cell/XPMomentsTableViewCell.m index 4fc28678..e5bf1300 100644 --- a/YuMi/Modules/YMMonents/View/Cell/XPMomentsTableViewCell.m +++ b/YuMi/Modules/YMMonents/View/Cell/XPMomentsTableViewCell.m @@ -103,9 +103,9 @@ [self.topicView mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(kMOMENTS_TEXT_TOPIC_HEIGHT); }]; - [self.photoView mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KScreenWidth-30); - }]; +// [self.photoView mas_makeConstraints:^(MASConstraintMaker *make) { +// make.width.mas_equalTo(KScreenWidth-30); +// }]; [self.toolBarView mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.trailing.mas_equalTo(self.backView); make.top.mas_equalTo(self.stackView.mas_bottom).mas_offset(10); diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMomentsUserInfoView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMomentsUserInfoView.m index 854efac3..0f81ac0f 100644 --- a/YuMi/Modules/YMMonents/View/SubViews/XPMomentsUserInfoView.m +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMomentsUserInfoView.m @@ -459,7 +459,7 @@ if (!_officialImageView) { _officialImageView = [[UIImageView alloc] init]; _officialImageView.userInteractionEnabled = YES; - _officialImageView.image = [UIImage imageNamed:@"common_offical"]; + _officialImageView.image = [UIImage imageNamed:@"app_admin_icon"]; _officialImageView.hidden = YES; } return _officialImageView; diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.h b/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.h index 6654fa37..d6d33a2c 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.h +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.h @@ -13,8 +13,6 @@ NS_ASSUME_NONNULL_BEGIN - (void)getMyRoom; -//- (void)getMyCollectRooms:(NSInteger)page; -//- (void)getMyRecentRooms:(NSInteger)page; @end diff --git a/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.m b/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.m index 6b031b08..2bb0de64 100644 --- a/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.m +++ b/YuMi/Modules/YMNewHome/Presenter/XPHomeMinePresenter.m @@ -29,22 +29,6 @@ }]; } -//- (void)getMyCollectRooms:(NSInteger)page { -// [Api getMyCollectRoomsCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { -// // TODO: 确认 model -// } -// pageNum:[NSString stringWithFormat:@"%ld", page] -// pageSize:@"20"]; -//} -// -//- (void)getMyRecentRooms:(NSInteger)page { -// [Api getMyRecentRoomsCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { -// // TODO: 确认 model -// } -// pageNum:[NSString stringWithFormat:@"%ld", page] -// pageSize:@"20"]; -//} - @end diff --git a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyCollectionViewCell.m b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyCollectionViewCell.m index 9def99d4..8bb8024d 100644 --- a/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyCollectionViewCell.m +++ b/YuMi/Modules/YMNewHome/View/Cell/XPNewHomePartyCollectionViewCell.m @@ -168,6 +168,12 @@ make.leading.top.mas_equalTo(self.avatarView); make.size.mas_equalTo(CGSizeMake(40, 16)); }]; + + [self.boomImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.contentView).offset(11); + make.trailing.mas_equalTo(self.contentView).offset(-8); + make.size.mas_equalTo(CGSizeMake(40, 40)); + }]; } - (void)setRoomInfo:(HomePlayRoomModel *)roomInfo{ diff --git a/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m b/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m index 54b22db2..22d92e52 100644 --- a/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPHomeMineViewController.m @@ -481,17 +481,9 @@ _titleView.defaultSelectedIndex = 0; _titleView.averageCellSpacingEnabled = NO; -// _titleView.cellWidth = 50; _titleView.cellSpacing = kGetScaleWidth(28); _titleView.listContainer = (id)self.pagingView.listContainerView; - -// JXCategoryIndicatorImageView *indicator = [[JXCategoryIndicatorImageView alloc] init]; -// indicator.indicatorImageView.image = [UIImage imageNamed:@"ms_login_choose_phone_icon"]; -// indicator.indicatorImageViewSize = CGSizeMake(kGetScaleWidth(24), kGetScaleWidth(24)); -// indicator.verticalMargin = -kGetScaleWidth(4); -// indicator.contentMode = UIViewContentModeScaleAspectFit; -// _titleView.indicators = @[indicator]; } return _titleView; } diff --git a/YuMi/Modules/YMNewHome/View/XPHomePagingViewController.m b/YuMi/Modules/YMNewHome/View/XPHomePagingViewController.m index 67cc9368..a9684c8b 100644 --- a/YuMi/Modules/YMNewHome/View/XPHomePagingViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPHomePagingViewController.m @@ -38,13 +38,7 @@ - (void)viewDidLoad { [super viewDidLoad]; [self setup]; - [self preLoadGifts]; - -//#if DEBUG -// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ -// [self performSelector:@selector(completeUserInfo)]; -// }); -//#endif +// [self preLoadGifts]; } /// 禮物面板緩存-1: 登錄後,用空的 roomUid 預加載默認禮物,並緩存 diff --git a/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m index d9e81a7f..bf67a9a6 100644 --- a/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m +++ b/YuMi/Modules/YMNewHome/View/XPNewHomeViewController.m @@ -215,6 +215,14 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification; [self.tabCollectionView selectItemAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UICollectionViewScrollPositionNone]; + + if (isMSRTL()) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self.tabCollectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] + atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally + animated:YES]; + }); + } } } } diff --git a/YuMi/Modules/YMRoom/Api/Api+Room.h b/YuMi/Modules/YMRoom/Api/Api+Room.h index f9c5e2c0..bbf83846 100644 --- a/YuMi/Modules/YMRoom/Api/Api+Room.h +++ b/YuMi/Modules/YMRoom/Api/Api+Room.h @@ -40,6 +40,8 @@ NS_ASSUME_NONNULL_BEGIN ticket:(NSString *)ticket mgId:(NSString *)mgId; ++ (void)closeRoom:(HttpRequestHelperCompletion)complection uid:(NSString *)uid ticket:(NSString *)ticket; + /// 房间上麦 /// @param complection 完成 /// @param micUid 上麦的uid diff --git a/YuMi/Modules/YMRoom/Api/Api+SuperAdmin.h b/YuMi/Modules/YMRoom/Api/Api+SuperAdmin.h new file mode 100644 index 00000000..4cfa195e --- /dev/null +++ b/YuMi/Modules/YMRoom/Api/Api+SuperAdmin.h @@ -0,0 +1,24 @@ +// +// Api+SuperAdmin.h +// YuMi +// +// Created by P on 2025/1/17. +// + +#import "Api.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface Api(SuperAdmin) +// type: 操作类型 1、解除进房限制;2、锁麦;3、闭麦;4、抱TA下麦;5、踢出房间;6、加入黑名单;7、关闭房间;8、隐藏房间;9、关闭公屏消息;10、开启公屏消息;11、移除黑名单 ++ (void)superAdminOperate:(HttpRequestHelperCompletion)complection + uid:(NSString *)uid + roomUid:(NSString *)roomUid + targetUid:(NSString *)targetUid + operateType:(NSNumber *)type; +// type: 0.关闭隐藏 1.开启隐藏 ++ (void)superAdminOperateRoom:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid type:(NSNumber *)type; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Api/Api+SuperAdmin.m b/YuMi/Modules/YMRoom/Api/Api+SuperAdmin.m new file mode 100644 index 00000000..e9466a20 --- /dev/null +++ b/YuMi/Modules/YMRoom/Api/Api+SuperAdmin.m @@ -0,0 +1,28 @@ +// +// Api+SuperAdmin.m +// YuMi +// +// Created by P on 2025/1/17. +// + +#import "Api+SuperAdmin.h" + +@implementation Api(SuperAdmin) + ++ (void)superAdminOperate:(HttpRequestHelperCompletion)complection + uid:(NSString *)uid + roomUid:(NSString *)roomUid + targetUid:(NSString *)targetUid + operateType:(NSNumber *)type { + [self makeRequest:@"super/admin/operate/save" + method:HttpRequestHelperMethodPOST + completion:complection, __FUNCTION__, uid, roomUid, targetUid, type, nil]; +} + ++ (void)superAdminOperateRoom:(HttpRequestHelperCompletion)complection roomUid:(NSString *)roomUid type:(NSNumber *)type { + [self makeRequest:@"super/hide/room" + method:HttpRequestHelperMethodPOST + completion:complection, __FUNCTION__, roomUid, type, nil]; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelView.m b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelView.m index 9868cfaf..66c93bdb 100644 --- a/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelView.m +++ b/YuMi/Modules/YMRoom/View/AcrossRoomPK/View/SubViews/XPAcrossRoomPKPanelView.m @@ -388,7 +388,6 @@ static CGFloat MiniHeight = 130.5; } - (void)initUserSubViews { - // TODO: 换图 for (int i = 0; i < 3; i++) { XPAcrossRoomPKPanelUserView * userView = [[XPAcrossRoomPKPanelUserView alloc] init]; userView.tag = (1000 + i); diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m index c7d1383b..17db6a48 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m @@ -43,7 +43,7 @@ #import "PIRoomActivityWebView.h" #import "MSRoomGameWebVC.h" -#import "XPRoomAnimationView.h" +#import "RoomAnimationView.h" #import "MSRoomMenuGameVC.h" #import "BoomInfoModel.h" @@ -698,9 +698,9 @@ UIKIT_EXTERN NSString *kShowFirstRechargeView; vc.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); XPRoomViewController *roomVC = (XPRoomViewController *)self.hostDelegate; [roomVC addChildViewController:vc]; - XPRoomAnimationView *animationView; + RoomAnimationView *animationView; for (id obj in self.hostDelegate.getSuperView.subviews) { - if ([obj isKindOfClass:[XPRoomAnimationView class]]){ + if ([obj isKindOfClass:[RoomAnimationView class]]){ animationView = obj; break; } diff --git a/YuMi/Modules/YMRoom/View/AnimationView/GameUniversalBannerView.m b/YuMi/Modules/YMRoom/View/AnimationView/GameUniversalBannerView.m index b0791264..a0319e1d 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/GameUniversalBannerView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/GameUniversalBannerView.m @@ -7,6 +7,7 @@ #import "GameUniversalBannerView.h" +#import #import #import "AttachmentModel.h" #import "PIUniversalBannerModel.h" @@ -45,26 +46,74 @@ bannerView.gameID = model.skipContent; [superView addSubview:bannerView]; - // TODO: 添加手势 | 调整为 pop 动画 - + [bannerView addNotification]; + @kWeakify(bannerView); - [UIView animateWithDuration:0.25 animations:^{ - bannerView.center = CGPointMake(superView.center.x, height/2 + 0); - } completion:^(BOOL finished) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ - bannerView.frame = CGRectMake(-KScreenWidth, 0, width, height); - } completion:^(BOOL finished) { + [bannerView popEnterAnimation:^(BOOL finished) { + if (finished) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ @kStrongify(bannerView); - [bannerView removeFromSuperview]; - if (bannerView.completeDisplay) { - bannerView.completeDisplay(); - } - }]; - }); + [bannerView popLeaveAnimation:^(bool finished) { + if (bannerView.completeDisplay) { + bannerView.completeDisplay(); + } + [bannerView removeFromSuperview]; + }]; + }); + } }]; } +- (void)addNotification { + @kWeakify(self); + [[NSNotificationCenter defaultCenter] addObserverForName:@"SwipeOutBanner" + object:nil + queue:[NSOperationQueue mainQueue] + usingBlock:^(NSNotification * _Nonnull notification) { + @kStrongify(self); + [self dismissBanner]; + }]; +} + +- (void)dismissBanner { + [self pop_removeAllAnimations]; // 停止所有动画 + + [self popLeaveAnimation:^(bool finished) { + if (self.completeDisplay) { + self.completeDisplay(); + } + [self removeFromSuperview]; + }]; +} + +- (void)popEnterAnimation:(void(^)(BOOL finished))finish { + NSInteger height = kGetScaleWidth(70); + POPSpringAnimation *enterAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewFrame]; + enterAnimation.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, KScreenWidth, height)]; + enterAnimation.springBounciness = 10; // 弹性系数 + enterAnimation.springSpeed = 12; // 动画速度 + enterAnimation.completionBlock = ^(POPAnimation *anim, BOOL finished) { + if (finish) { + finish(finished); + } + }; + [self pop_addAnimation:enterAnimation forKey:@"enterAnimation"]; +} + +- (void)popLeaveAnimation:(void(^)(bool finished))finish { + NSInteger height = kGetScaleWidth(70); + POPBasicAnimation *exitAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewFrame]; + exitAnimation.toValue = [NSValue valueWithCGRect:CGRectMake(-KScreenWidth, 0, KScreenWidth, height)]; + exitAnimation.duration = 0.25; // 动画持续时间 + exitAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; + exitAnimation.completionBlock = ^(POPAnimation *anim, BOOL finished) { + if (finish) { + finish(finished); + } + }; + [self pop_addAnimation:exitAnimation forKey:@"exitAnimation"]; +} + - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { [self addSubview:self.bgSVGA]; diff --git a/YuMi/Modules/YMRoom/View/AnimationView/RoomAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/RoomAnimationView.m index 80ff8f7d..bfb0626c 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/RoomAnimationView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/RoomAnimationView.m @@ -33,7 +33,6 @@ #import "GiftAnimationManager.h" #import "MSRoomGameWebVC.h" -#import "XPRoomAnimationView.h" #import "XPRoomViewController.h" #import "PIUniversalBannerView.h" #import "PIUniversalBannerModel.h" @@ -151,18 +150,19 @@ XPRoomGraffitiGiftAnimationViewDelegate - (void)dealloc { - if (self.giftEffectTimer) { + [[NIMSDK sharedSDK].broadcastManager removeDelegate:self]; + + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + + [self pop_removeAllAnimations]; + + if (_giftEffectTimer) { dispatch_source_cancel(self.giftEffectTimer); self.giftEffectTimer = nil; } - if (self.giftEffectsQueue) { + if (_giftEffectsQueue) { self.giftEffectsQueue = NULL; } - - [self.enterRoomAnimationQueue removeAllObjects]; - [self.enterEffectView stopAnimation]; - - [[NIMSDK sharedSDK].broadcastManager removeDelegate:self]; } -(void)resumeTimer{ @@ -213,7 +213,6 @@ XPRoomGraffitiGiftAnimationViewDelegate [self.bannerContainer mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self).offset(kNavigationHeight); make.leading.trailing.mas_equalTo(self); -// make.bottom.mas_equalTo(self.mas_centerY); make.height.mas_equalTo(180); }]; } @@ -255,6 +254,10 @@ XPRoomGraffitiGiftAnimationViewDelegate NSDictionary * dic = [(NSDictionary *)messageExt.roomExt.toJSONObject objectForKey:message.from]; XPMessageRemoteExtModel *extModel = [XPMessageRemoteExtModel modelWithJSON:dic]; + if (extModel.platformRole == 1) { + return; + } + if (extModel.enterHide) { //隐身进房 if ([message.from isEqualToString:[AccountInfoStorage instance].getUid]) { @@ -416,6 +419,9 @@ XPRoomGraffitiGiftAnimationViewDelegate - (void)endAnimationEnterEffect { self.isEnterRoomAnimating = NO; + [self.enterEffectView stopAnimation]; + self.enterEffectView.hidden = YES; + [self.enterEffectView removeFromSuperview]; [self tryDequeueAnimation]; } @@ -469,6 +475,11 @@ XPRoomGraffitiGiftAnimationViewDelegate } - (void)playRoomGiftBanner:(AttachmentModel *)obj { + if (!obj.data) { + [self processNextRoomEffectAttachment]; + return; + } + @kWeakify(self); [RoomHighValueGiftBannerAnimation display:self.bannerContainer with:obj @@ -589,9 +600,9 @@ XPRoomGraffitiGiftAnimationViewDelegate vc.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); XPRoomViewController *roomVC = (XPRoomViewController *)self.hostDelegate; [roomVC addChildViewController:vc]; - XPRoomAnimationView *animationView; + RoomAnimationView *animationView; for (id obj in self.hostDelegate.getSuperView.subviews) { - if ([obj isKindOfClass:[XPRoomAnimationView class]]){ + if ([obj isKindOfClass:[RoomAnimationView class]]){ animationView = obj; break; } @@ -616,6 +627,9 @@ XPRoomGraffitiGiftAnimationViewDelegate if (!self.hostDelegate.getRoomInfo.hasAnimationEffect) { return; } + if (self.hostDelegate.getUserInfo.platformRole == 1) { + return; + } NSInteger otherViewType = [attachment.data[@"otherViewType"] integerValue]; NSString *viewUrl = attachment.data[@"viewUrl"]; NSString *effect = attachment.data[@"effect"]; @@ -1252,6 +1266,7 @@ XPRoomGraffitiGiftAnimationViewDelegate [self _handleGift:receiveInfo attachment:attachment]; break; case Custom_Message_Sub_AllMicroSend: + case Custom_Message_Sub_AllBatchSend: [self _handleGift:receiveInfo attachment:attachment]; break; case Custom_Message_Sub_Gift_ChannelNotify: @@ -1301,7 +1316,7 @@ XPRoomGraffitiGiftAnimationViewDelegate model.uid = receiveInfo.uid.integerValue; receiveInfo.targetUsers = @[model]; } - if (receiveInfo.targetUids.count == 0) { + if (receiveInfo.targetUids.count == 0 && attachment.second == Custom_Message_Sub_Gift_Send) { receiveInfo.targetUids = @[@(receiveInfo.uid.integerValue)]; } } @@ -1649,7 +1664,12 @@ XPRoomGraffitiGiftAnimationViewDelegate - (void)addBnnerContainGesture { UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe)]; - swipe.direction = UISwipeGestureRecognizerDirectionLeft; + if (isMSRTL()) { + swipe.direction = UISwipeGestureRecognizerDirectionRight; + } else { + swipe.direction = UISwipeGestureRecognizerDirectionLeft; + } + [self.bannerContainer addGestureRecognizer:swipe]; } @@ -1823,9 +1843,6 @@ XPRoomGraffitiGiftAnimationViewDelegate - (XPRoomAnimationHitView *)bannerContainer { if (!_bannerContainer) { _bannerContainer = [[XPRoomAnimationHitView alloc] init]; -//#if DEBUG -// _bannerContainer.backgroundColor = [UIColor colorWithWhite:1 alpha:0.4]; -//#endif } return _bannerContainer; } diff --git a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m index 86e2505a..85a38ccd 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/XPRoomAnimationView.m @@ -59,7 +59,6 @@ #import "XPRoomStarKitchenBannerView.h" #import "XPWebViewController.h" #import "PIBaseAnimationViewModel.h" -#import "PIFullScreenBannerAnimation.h" #import "XPTreasureFairyGiftView.h" #import "XPRoomTarrowBannerView.h" #import "PIRoomGiftBroadcastWindow.h" diff --git a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m index af6a4050..3a401f48 100644 --- a/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m +++ b/YuMi/Modules/YMRoom/View/BaseUIContainerView/XPRoomFunctionContainerView.m @@ -69,7 +69,6 @@ #import "XPAnchorPKResultView.h" #import "XPAnchorPKFinishView.h" #import "XPSendGiftView.h" -#import "XPUserCardViewController.h" #import "UserRoomCardViewController.h" #import "XPRoomViewController.h" #import "AcrossRoomPKPrizeModel.h" @@ -276,7 +275,7 @@ [self.hourRankEntranceView mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(66); - make.height.mas_equalTo(22); + make.height.mas_equalTo(27); }]; [self.musicEnterButton mas_makeConstraints:^(MASConstraintMaker *make) { @@ -1126,11 +1125,13 @@ RoomInfoModel * roomInfo = self.delegate.getRoomInfo; NSString * targetUid = uid; XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + __block MicroQueueModel *micModel = nil; [[self.delegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if (targetUid.integerValue == obj.userInfo.uid) { model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; model.posState = obj.microState.posState; model.micState = obj.microState.micState; + micModel = obj; *stop = YES; } }]; @@ -1140,8 +1141,8 @@ model.roomInfo = roomInfo; model.micQueue = self.delegate.getMicroQueue; model.superMangerList = self.delegate.getRoomSuperAdminList; - - UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model]; + model.platformRole = micModel.userInfo.platformRole; + UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model controlUser:self.delegate.getUserInfo]; vc.modalPresentationStyle = UIModalPresentationOverFullScreen; [self.delegate.getCurrentNav presentViewController:vc animated:NO completion:nil]; } diff --git a/YuMi/Modules/YMRoom/View/LittleGame/View/XPRoomLittleGameContainerView.m b/YuMi/Modules/YMRoom/View/LittleGame/View/XPRoomLittleGameContainerView.m index 01313dee..705d1997 100644 --- a/YuMi/Modules/YMRoom/View/LittleGame/View/XPRoomLittleGameContainerView.m +++ b/YuMi/Modules/YMRoom/View/LittleGame/View/XPRoomLittleGameContainerView.m @@ -101,6 +101,12 @@ BOOL isTestEnv = NO; #ifdef DEBUG isTestEnv = YES; + + NSString *isProduction = [[NSUserDefaults standardUserDefaults]valueForKey:@"kIsProductionEnvironment"]; + if([isProduction isEqualToString:@"YES"]){ + isTestEnv = NO; + } + #else isTestEnv = NO; #endif diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameVC.m b/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameVC.m index 5605fe9f..c07460b2 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameVC.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/MSRoomMenuGameVC.m @@ -14,7 +14,7 @@ #import "XPSailingViewController.h" #import "XPRoomViewController.h" #import "MSRoomGameWebVC.h" -#import "XPRoomAnimationView.h" +#import "RoomAnimationView.h" #import "XPRoomMoreItemModel.h" #import "GuildSuperAdminInfoModel.h" #import "XPRoomPKViewController.h" @@ -306,9 +306,9 @@ vc.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); XPRoomViewController *roomVC = (XPRoomViewController *)self.hostDelegate; [roomVC addChildViewController:vc]; - XPRoomAnimationView *animationView; + RoomAnimationView *animationView; for (id obj in self.hostDelegate.getSuperView.subviews) { - if ([obj isKindOfClass:[XPRoomAnimationView class]]){ + if ([obj isKindOfClass:[RoomAnimationView class]]){ animationView = obj; break; } @@ -318,24 +318,6 @@ } } -//-(void)clickLeaderccGameVC:(ActivityInfoModel *)model{ -// if ([self.hostDelegate isKindOfClass:[XPRoomViewController class]]){ -// MSRoomGameWebVC *vc = [[MSRoomGameWebVC alloc]initWithDelegate:self.hostDelegate gameModel:model]; -// 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]; -// vc.view.tag = 913; -// } -//} - - (void)lookLoveTapRecognizer { if ([self.hostDelegate isKindOfClass:[XPRoomViewController class]]){ XPCandyTreeViewController * candyTreeVC = [[XPCandyTreeViewController alloc] initWithDelegate:self.hostDelegate]; diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m index 0bcf8ff0..33ec82e6 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m @@ -17,6 +17,7 @@ #import "XCCurrentVCStackManager.h" #import "UIImage+Utils.h" ///Model +#import "UserInfoModel.h" #import "XPRoomMenuItem.h" #import "MicroQueueModel.h" #import "UserInfoModel.h" @@ -58,16 +59,12 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; @property (nonatomic,strong) UIButton *messageButton; ///更多 @property (nonatomic,strong) UIButton *moreButton; -/// PK 入口 -@property (nonatomic,strong) UIButton *pkButton; + ///礼物 @property (nonatomic,strong) UIButton *giftButton; ///排麦 @property (nonatomic,strong) UIButton *arrangeMicButton; -///游戏、活动 -@property(nonatomic,strong) UIButton *baiShunGameButton; - ///输入框 @property (nonatomic,strong) XPRoomSendTextView *inputTextView; @property (nonatomic,strong) XPRoomMessageBubbleView *miniMessageView; @@ -432,7 +429,9 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; - (void)initSubViewConstraints { [self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.size.mas_equalTo(CGSizeMake(110, 36)); +// make.size.mas_equalTo(CGSizeMake(110, 36)); + make.width.mas_greaterThanOrEqualTo(50); + make.height.mas_equalTo(36); }]; [self.faceButton mas_makeConstraints:^(MASConstraintMaker *make) { @@ -581,23 +580,28 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; [self onRoomUpdate]; } -- (void)onRoomUpdate { - RoomInfoModel * roomInfo = self.delegate.getRoomInfo; +- (void)superAdminLayout { + [self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; + [self.stackView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; + [self addSubview:self.stackView]; + [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { + make.bottom.mas_equalTo(self).offset(-kSafeAreaBottomHeight); + make.centerX.mas_equalTo(self); + make.top.mas_equalTo(self); + }]; + self.stackView.distribution = UIStackViewDistributionFillEqually; + self.stackView.alignment = UIStackViewAlignmentCenter; + [self.stackView addArrangedSubview:self.voiceButton]; + [self.stackView addArrangedSubview:self.messageButton]; + [self.stackView addArrangedSubview:self.moreButton]; +} - // MARK: 房主 or 超管可以看到按钮 - self.baiShunGameButton.hidden = YES; - self.pkButton.hidden = YES; - if ([AccountInfoStorage instance].getUid.integerValue == roomInfo.uid) { - self.baiShunGameButton.hidden = NO; - self.pkButton.hidden = roomInfo.type == RoomType_Anchor; - } else { - for (GuildSuperAdminInfoModel *managerInfo in self.delegate.getRoomSuperAdminList) { - if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { - self.baiShunGameButton.hidden = NO; - self.pkButton.hidden = NO; - break; - } - } +- (void)onRoomUpdate { + RoomInfoModel *roomInfo = self.delegate.getRoomInfo; + UserInfoModel *userInfo = self.delegate.getUserInfo; + if (userInfo.platformRole == 1) { + [self superAdminLayout]; + return; } self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode; @@ -829,18 +833,6 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; return _moreButton; } -- (UIButton *)pkButton { - if (!_pkButton) { - _pkButton = [UIButton buttonWithType:UIButtonTypeCustom]; - _pkButton.imageView.contentMode = UIViewContentModeScaleAspectFit; - _pkButton.tag = XPRoomMenuItemType_PK; - [_pkButton setImage:[UIImage imageNamed:@"ms_room_menu_game"] forState:UIControlStateNormal]; - [_pkButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _pkButton; -} - - - (UIButton *)giftButton { if (!_giftButton) { _giftButton = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -881,16 +873,7 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; } return _miniMessageView; } -- (UIButton *)baiShunGameButton{ - if(!_baiShunGameButton){ - _baiShunGameButton = [UIButton new]; - [_baiShunGameButton setImage:[UIImage imageNamed:@"room_menu_play"] forState:UIControlStateNormal]; - [_baiShunGameButton setImage:[UIImage imageNamed:@"room_menu_play"] forState:UIControlStateSelected]; - _baiShunGameButton.tag = MSRoomMenuItemType_BAISHUN_GAME; - [_baiShunGameButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; - } - return _baiShunGameButton; -} + - (UIButton *)closeMicControlButton { if (!_closeMicControlButton) { diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m index eecbd8e5..84072dda 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m @@ -85,6 +85,7 @@ extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl; extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + extModel.platformRole = userInfo.platformRole; extModel.nick = userInfo.nick; if([self.delegate getPublicScreenType]==1){ diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m index 3a3e2c5c..a2fb287c 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m @@ -176,9 +176,6 @@ return [self createTarotAttribute:attachment messageInfo:messageInfo]; } else if (first == CustomMessageType_Anchor_FansTeam) {//粉丝团 return [self createAnchorFansTeamAttribute:attachment messageInfo:messageInfo]; - } else if(first == CustomMessageType_Hall_Super_Admin) {///超管踢人出房间 - XPKickUserModel * kickModel = [XPKickUserModel modelWithJSON:attachment.data]; - return [self createKickUserAttribute:attachment info:kickModel messageInfo:messageInfo]; } else if (first == CustomMessageType_Room_PK) {///房内PK return [self createRoomPKAttribute:attachment messageInfo:messageInfo]; } else if (first == CustomMessageType_LuckyBag) {///幸运礼物 @@ -219,6 +216,79 @@ return [self createGeneralPublicScreenAttribute:attachment messageInfo:messageInfo]; }else if(first == CustomMessageType_Super_Gift){ return [self createGeneralPublicScreenAttribute:attachment messageInfo:messageInfo]; + } else if (first == CustomMessageType_Hall_Super_Admin) { + messageInfo.bubbleImageUrl = @""; + NSString *content = @""; + NSDictionary *dic = attachment.data; + NSString *highLightContent = @""; + + switch (attachment.second) { + case Custom_Message_Sub_Hall_Super_Admin_Lock_Mic: { + NSNumber *micNum = [dic objectForKey:@"micNumber"]; + if (micNum) { + content = [NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_8"), @(micNum.integerValue + 2)]; + } + } + break; + case Custom_Message_Sub_Hall_Super_Admin_Mute_Mic: { + NSNumber *micNum = [dic objectForKey:@"micNumber"]; + if (micNum) { + content = [NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_9"), @(micNum.integerValue + 2)]; + } + } + break; + case Custom_Message_Sub_Hall_Super_Admin_Kick_Down_Mic: { + NSString *targetNick = [dic objectForKey:@"targetNick"]; + if (targetNick) { + content = [NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_10"), targetNick]; + highLightContent = targetNick; + } + } + break; + case Custom_Message_Sub_Hall_Super_Admin_Kick_Out_Room: { + NSString *targetNick = [dic objectForKey:@"targetNick"]; + if (targetNick) { + content = [NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_11"), targetNick]; + highLightContent = targetNick; + } + } + break; + case Custom_Message_Sub_Hall_Super_Admin_Mark_Black: { + NSString *targetNick = [dic objectForKey:@"targetNick"]; + if (targetNick) { + content = [NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_12"), targetNick]; + highLightContent = targetNick; + } + } + break; + case Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room: { + XPKickUserModel * kickModel = [XPKickUserModel modelWithJSON:attachment.data]; + return [self createKickUserAttribute:attachment info:kickModel messageInfo:messageInfo]; + } + break; + + default: + break; + } + + if ([NSString isEmpty:content]) { + return nil; + } else { + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] initWithString:content + attributes:@{ + NSFontAttributeName: kFontSemibold(14), + NSForegroundColorAttributeName: [UIColor lightTextColor] + }]; + NSRange range = [content rangeOfString:highLightContent]; + if (range.location != NSNotFound) { + // 设置目标文本颜色为红色 + [attribute addAttribute:NSForegroundColorAttributeName value:[DJDKMIMOMColor messageNickColor] range:range]; + } + messageInfo.content = attribute; + messageInfo.first = attachment.first; + return messageInfo; + } + } return nil; @@ -1290,7 +1360,7 @@ NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; //offical if (levelType == UserLevelType_Offical) { - [attribute appendAttributedString: [self createLocalImageAttribute:@"common_offical"]]; + [attribute appendAttributedString: [self createLocalImageAttribute:@"app_admin_icon"]]; [attribute appendAttributedString:[self createSapceAttribute:2]]; } if (newUser) { @@ -1349,11 +1419,14 @@ RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; NSString * targetUid = [NSString stringWithFormat:@"%ld", uid]; XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + __block MicroQueueModel *micModel = nil; [[self.hostDelegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if (uid == obj.userInfo.uid) { model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; model.posState = obj.microState.posState; model.micState = obj.microState.micState; + model.platformRole = obj.userInfo.platformRole; + micModel = obj; *stop = YES; } }]; @@ -1363,8 +1436,8 @@ model.roomInfo = roomInfo; model.delegate = self.hostDelegate; model.superMangerList = self.hostDelegate.getRoomSuperAdminList; - - UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model]; + model.platformRole = micModel.userInfo.platformRole; + UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model controlUser:self.hostDelegate.getUserInfo]; [self.hostDelegate.getCurrentNav presentViewController:vc animated:YES completion:nil]; } diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.m b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.m index ca1f7038..d5312a68 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.m @@ -138,6 +138,9 @@ } - (void)updateLayoutWithoutBubble:(BOOL)hasBubble layoutSize:(CGSize)size { + if (self.isLeftBigImage) { + return; + } [self.contentLabel mas_remakeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.messageInfo.contentTopMargin); make.bottom.mas_equalTo(-self.messageInfo.cellBottomMargin); diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m index b7642d6a..131f42d4 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m @@ -224,127 +224,6 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; // 6. 滚动到指定位置或底部 [self scrollToFirstLocationOrBottom]; - -// if (self.incomingMessages.count < 1) { -// NSInteger rows = self.datasource.count; -// if (!self.locationArray.count) { -// [self.messageTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(rows-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; -// self.messageTipsBtn.hidden = YES; -// self.isPending = NO; -// self.atCount = 0; -// self.atTipBtn.hidden = YES; -// return; -// } -// int index = [self.locationArray[0] intValue]; -// NSIndexPath *indexPath = [NSIndexPath indexPathForRow:index inSection:0]; -// if (rows > indexPath.row) { -// [self.messageTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; -// if (rows == indexPath.row + 1) { -// self.messageTipsBtn.hidden = YES; -// self.isPending = NO; -// } -// } else { -// [self.messageTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(rows-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; -// //滚动到底部时隐藏@提示 -// self.messageTipsBtn.hidden = YES; -// } -// if (self.locationArray.count) { -// [self.locationArray removeObjectAtIndex:0]; -// self.atCount -= 1; -// [self.atTipBtn setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageContainerView0"), (unsigned long)self.locationArray.count] forState:UIControlStateNormal]; -// if (self.locationArray.count == 0) { -// self.atTipBtn.hidden = YES; -// } -// } else { -// self.atTipBtn.hidden = YES; -// } -// } else { -// if (self.datasource.count > kRoomMessageMaxLength) { -// NSIndexSet *set = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, kRoomMessageMaxLength/2)]; -// NSArray *needRemoveMsgArray = [self.datasource objectsAtIndexes:set]; -// [self.datasource removeObjectsInArray:needRemoveMsgArray]; -// [self updateAllDataSource:nil]; -// NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet]; -// for (int i = 0; i indexPath.row) { -// [self.messageTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; -// if (rows == indexPath.row + 1) { -// self.messageTipsBtn.hidden = YES; -// self.isPending = NO; -// } -// } else { -// [self.messageTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(rows-1) inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; -// //滚动到底部时隐藏@提示 -// self.messageTipsBtn.hidden = YES; -// } -// if (self.locationArray.count) { -// [self.locationArray removeObjectAtIndex:0]; -// self.atCount -= 1; -// [self.atTipBtn setTitle:[NSString stringWithFormat:YMLocalizedString(@"XPRoomMessageContainerView1"), (unsigned long)self.locationArray.count] forState:UIControlStateNormal]; -// if (self.locationArray.count == 0) { -// self.atTipBtn.hidden = YES; -// } -// } else { -// self.atTipBtn.hidden = YES; -// } -// } } - (void)scrollToBottomWithTipsHidden:(BOOL)hidden { @@ -573,19 +452,6 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; } if (self.isPending) { -// switch (self.displayType) { -// case 1: -// self.messageTipsBtn.hidden = self.datasource.count == messageCount; -// break; -// case 2: -// self.messageTipsBtn.hidden = self.datasource_chat.count == messageCount; -// break; -// case 3: -// self.messageTipsBtn.hidden = self.datasource_gift.count == messageCount; -// break; -// default: -// break; -// } self.messageTipsBtn.hidden = NO; [self findAtMeNumber]; } else { @@ -999,6 +865,32 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; } }]; return; + } else if (attachment.first == CustomMessageType_Hall_Super_Admin) { + [self addRoomMessage:message]; +// switch (attachment.second) { +// +// case Custom_Message_Sub_Hall_Super_Admin_Lock_Mic: { +// [self addRoomMessage:message]; +// } +// break; +// case Custom_Message_Sub_Hall_Super_Admin_Mute_Mic: +// [self addRoomMessage:message]; +// break; +// case Custom_Message_Sub_Hall_Super_Admin_Kick_Down_Mic: +// +// break; +// case Custom_Message_Sub_Hall_Super_Admin_Mark_Black: +// +// break; +// case Custom_Message_Sub_Hall_Super_Admin_Kick_Out_Room: +// +// break; +// case Custom_Message_Sub_Hall_Super_Admin_Kick_Manager_Out_Room: +// +// break; +// default: +// break; +// } } } if (self.hostDelegate.getRoomInfo.isCloseScreen) { @@ -1068,7 +960,7 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; } } }]; - } + }// else if (roomInfo) } } @@ -1514,6 +1406,7 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl; extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + extModel.platformRole = userInfo.platformRole; NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]]; message.remoteExt = remoteExt; NIMSessionType sessionType = NIMSessionTypeChatroom; diff --git a/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h b/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h index 387c8155..b6554423 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h +++ b/YuMi/Modules/YMRoom/View/MoreView/Model/XPRoomMoreItemModel.h @@ -64,6 +64,8 @@ typedef NS_ENUM(NSInteger, RoomMoreMenuType) { RoomMoreMenuType_Room_Type_Background = 26, RoomMoreMenuType_Room_Music_Panel = 27, + + RoomMoreMenuType_App_Manager = 28, }; @interface XPRoomMoreItemModel : PIBaseModel @@ -78,6 +80,8 @@ typedef NS_ENUM(NSInteger, RoomMoreMenuType) { ///类型 @property (nonatomic,assign) RoomMoreMenuType type; +@property(nonatomic, strong) UIColor *imageTintColor; + +(XPRoomMoreItemModel *)initWithTitle:(NSString *)title imageName:(NSString *)imageName type:(RoomMoreMenuType)type titleColor:(UIColor *)titleColor; @end diff --git a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.h b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.h index 4be71216..19af4bb2 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.h +++ b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.h @@ -12,7 +12,7 @@ NS_ASSUME_NONNULL_BEGIN @interface XPMoreMenuPresenter : BaseMvpPresenter ///获取更多菜单 -- (void)getMoreMenuDataSource:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin isOnMic:(BOOL)isOnMic; +- (void)getMoreMenuDataSource:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin isOnMic:(BOOL)isOnMic isAppSuperAdmin:(BOOL)isAppSuperAdmin; /// 开启房间礼物值 /// @param roomUid 房间的uid diff --git a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m index 872f4158..0f84b28d 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m +++ b/YuMi/Modules/YMRoom/View/MoreView/Presenter/XPMoreMenuPresenter.m @@ -25,7 +25,7 @@ @implementation XPMoreMenuPresenter -- (void)getMoreMenuDataSource:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin isOnMic:(BOOL)isOnMic { +- (void)getMoreMenuDataSource:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin isOnMic:(BOOL)isOnMic isAppSuperAdmin:(BOOL)isAppSuperAdmin{ XPRoomMoreItemModel * roomPK = [[XPRoomMoreItemModel alloc] init]; roomPK.title = roomInfo.roomModeType == RoomModeType_Open_PK_Mode ?YMLocalizedString(@"XPMoreMenuPresenter26") : YMLocalizedString(@"XPMoreMenuPresenter1"); roomPK.imageName= @"room_pk_menu_icon"; @@ -141,6 +141,12 @@ musicPanel.imageName = @"menu_music"; musicPanel.type = RoomMoreMenuType_Room_Music_Panel; musicPanel.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; + + XPRoomMoreItemModel *appManager = [[XPRoomMoreItemModel alloc] init]; + appManager.type = RoomMoreMenuType_App_Manager; + appManager.title = YMLocalizedString(@"1.0.34_text_1"); + appManager.imageName = @"app_admin_icon"; + appManager.titleColor = [UIColor orangeColor]; NSString * uid = [AccountInfoStorage instance].getUid; if (uid.length <= 0) { @@ -150,6 +156,16 @@ NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; request.roomId = roomId; request.userIds = @[uid]; + + if (isAppSuperAdmin) { + NSMutableArray * array = [NSMutableArray array]; + [array addObject:trumpet]; + [array addObject:giftEffect]; + [array addObject:appManager]; + [array addObject:report]; + [[self getView] getMoreMenuDataSuccess:array]; + return; + } [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { NSMutableArray * array = [NSMutableArray array]; diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/AppOfficalManagerActionsViewController.h b/YuMi/Modules/YMRoom/View/MoreView/View/AppOfficalManagerActionsViewController.h new file mode 100644 index 00000000..44936b4b --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/View/AppOfficalManagerActionsViewController.h @@ -0,0 +1,23 @@ +// +// AppOfficalManagerActionsViewController.h +// YuMi +// +// Created by P on 2025/1/17. +// + +#import "MvpViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface AppOfficalManagerActionsViewController : MvpViewController + +@property(nonatomic, assign) BOOL isRoomHide; + +@property(nonatomic, copy) NSString *controlUid; +@property(nonatomic, copy) NSString *targetUid; +@property(nonatomic, copy) NSString *roomUid; +@property(nonatomic, copy) NSString *roomID; + +@end + +NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/AppOfficalManagerActionsViewController.m b/YuMi/Modules/YMRoom/View/MoreView/View/AppOfficalManagerActionsViewController.m new file mode 100644 index 00000000..9506fc20 --- /dev/null +++ b/YuMi/Modules/YMRoom/View/MoreView/View/AppOfficalManagerActionsViewController.m @@ -0,0 +1,251 @@ +// +// AppOfficalManagerActionsViewController.m +// YuMi +// +// Created by P on 2025/1/17. +// + +#import "AppOfficalManagerActionsViewController.h" + +#import "Api+Room.h" +#import "Api+SuperAdmin.h" +#import "XPRoomRoleViewController.h" + +@interface AppOfficalManagerActionsViewController () + +@property(nonatomic, strong) UIView *hideRoom; +@property(nonatomic, strong) UILabel *hideRoomTitle; +@property(nonatomic, strong) UISwitch *hideRoomSwitch; + +@property(nonatomic, strong) UIView *blackList; +@property(nonatomic, strong) UILabel *blackListTitle; +@property(nonatomic, strong) UIImageView *blackListArrow; + +@property(nonatomic, strong) UIView *closeRoom; +@property(nonatomic, strong) UILabel *closeRoomTitle; +@property(nonatomic, strong) UIImageView *closeRoomMark; + +@end + +@implementation AppOfficalManagerActionsViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.title = YMLocalizedString(@"1.0.34_text_1"); + +// [self.view addSubview:self.hideRoom]; + [self.view addSubview:self.blackList]; + [self.view addSubview:self.closeRoom]; + +// [self.hideRoom mas_makeConstraints:^(MASConstraintMaker *make) { +// make.leading.trailing.mas_equalTo(self.view).inset(15); +// make.top.mas_equalTo(16); +// make.height.mas_equalTo(64); +// }]; + + [self.blackList mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.mas_equalTo(self.view).inset(15); +// make.top.mas_equalTo(self.hideRoom.mas_bottom).offset(8); + make.top.mas_equalTo(16); + make.height.mas_equalTo(64); + }]; + + [self.closeRoom mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.trailing.mas_equalTo(self.view).inset(15); + make.top.mas_equalTo(self.blackList.mas_bottom).offset(8); + make.height.mas_equalTo(64); + }]; + +// [self.hideRoom addSubview:self.hideRoomTitle]; +// [self.hideRoom addSubview:self.hideRoomSwitch]; +// [self.hideRoomTitle mas_makeConstraints:^(MASConstraintMaker *make) { +// make.centerY.mas_equalTo(self.hideRoom); +// make.leading.mas_equalTo(15); +// make.height.mas_equalTo(18); +// }]; +// [self.hideRoomSwitch mas_makeConstraints:^(MASConstraintMaker *make) { +// make.centerY.mas_equalTo(self.hideRoom); +// make.trailing.mas_equalTo(-15); +// }]; + + [self.blackList addSubview:self.blackListTitle]; + [self.blackList addSubview:self.blackListArrow]; + [self.blackListTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.blackList); + make.leading.mas_equalTo(15); + make.height.mas_equalTo(18); + }]; + [self.blackListArrow mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.blackList); + make.trailing.mas_equalTo(-15); + make.size.mas_equalTo(CGSizeMake(18, 18)); + }]; + + [self.closeRoom addSubview:self.closeRoomTitle]; + [self.closeRoom addSubview:self.closeRoomMark]; + [self.closeRoomTitle mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.closeRoom); + make.leading.mas_equalTo(15); + make.height.mas_equalTo(18); + }]; + [self.closeRoomMark mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.mas_equalTo(self.closeRoom); + make.trailing.mas_equalTo(-15); + make.size.mas_equalTo(CGSizeMake(18, 18)); + }]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + self.hideRoomSwitch.on = self.isRoomHide; +} + +#pragma mark - +- (void)switchDidChange:(UISwitch *)sender { + BOOL newState = sender.isOn; // 用户意图改变的状态 + sender.on = !newState; // 立即恢复到原来的状态,等待用户确认后改变 + + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"1.0.18_20"); + config.message = YMLocalizedString(@"1.0.34_text_4"); + config.actionStyle = TTAlertActionBothStyle; + @kWeakify(self); + [TTPopup alertWithConfig:config confirmHandler:^{ + @kStrongify(self); + [XNDJTDDLoadingTool showLoading]; + [Api superAdminOperateRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [XNDJTDDLoadingTool hideHUD]; + if (code == 200) { + sender.on = newState; + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:self.roomUid type:sender.isOn ? @1 : @0]; + } cancelHandler:^{ + + }]; +} + +- (void)handleCloseRoom { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = YMLocalizedString(@"1.0.18_20"); + config.message = YMLocalizedString(@"1.0.34_text_5"); + config.actionStyle = TTAlertActionBothStyle; + @kWeakify(self); + [TTPopup alertWithConfig:config confirmHandler:^{ + [XNDJTDDLoadingTool showLoading]; + @kStrongify(self); + [Api closeRoom:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + [Api superAdminOperate:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + [XNDJTDDLoadingTool hideHUD]; + + } uid:self.controlUid roomUid:self.roomUid targetUid:self.targetUid operateType:@7]; + }else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } uid:self.roomUid ticket:[[AccountInfoStorage instance] getTicket]]; + } cancelHandler:^{ + + }]; +} + +- (void)handleBlackList { + XPRoomRoleViewController * managerVC = [[XPRoomRoleViewController alloc] init]; + managerVC.roomId = self.roomID; + managerVC.type = RoomRoleListType_Black; + managerVC.isAppAdmin = YES; + [self.navigationController pushViewController:managerVC animated:YES]; +} + +#pragma mark - +- (UIView *)hideRoom { + if (!_hideRoom) { + _hideRoom = [[UIView alloc] init]; + _hideRoom.backgroundColor = [UIColor whiteColor]; + [_hideRoom setCornerRadius:8]; + } + return _hideRoom; +} + +- (UILabel *)hideRoomTitle { + if (!_hideRoomTitle) { + _hideRoomTitle = [UILabel labelInitWithText:YMLocalizedString(@"1.0.34_text_2") + font:kFontSemibold(14) + textColor:UIColorFromRGB(0x313131)]; + } + return _hideRoomTitle; +} + +- (UISwitch *)hideRoomSwitch { + if (!_hideRoomSwitch) { + _hideRoomSwitch = [[UISwitch alloc] init]; + _hideRoomSwitch.onTintColor = [DJDKMIMOMColor appEmphasizeColor]; + _hideRoomSwitch.tintColor = [DJDKMIMOMColor appMainColor]; + _hideRoomSwitch.backgroundColor = [UIColor clearColor]; + [_hideRoomSwitch addTarget:self action:@selector(switchDidChange:) forControlEvents:UIControlEventValueChanged]; + } + return _hideRoomSwitch; +} + +- (UIView *)blackList { + if (!_blackList) { + _blackList = [[UIView alloc] init]; + _blackList.backgroundColor = [UIColor whiteColor]; + [_blackList setCornerRadius:8]; + + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleBlackList)]; + [_blackList addGestureRecognizer:tap]; + } + return _blackList; +} + +- (UILabel *)blackListTitle { + if (!_blackListTitle) { + _blackListTitle = [UILabel labelInitWithText:YMLocalizedString(@"XPMineSettingPresent20") + font:kFontSemibold(14) + textColor:UIColorFromRGB(0x313131)]; + } + return _blackListTitle; +} + +- (UIImageView *)blackListArrow { + if (!_blackListArrow) { + _blackListArrow = [[UIImageView alloc] initWithImage:kImage(@"pi_room_photo_album_choose_photo_gift_arrow")]; + } + return _blackListArrow; +} + + +- (UIView *)closeRoom { + if (!_closeRoom) { + _closeRoom = [[UIView alloc] init]; + _closeRoom.backgroundColor = [UIColor whiteColor]; + [_closeRoom setCornerRadius:8]; + + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleCloseRoom)]; + [_closeRoom addGestureRecognizer:tap]; + } + return _closeRoom; +} + +- (UILabel *)closeRoomTitle { + if (!_closeRoomTitle) { + _closeRoomTitle = [UILabel labelInitWithText:YMLocalizedString(@"1.0.34_text_3") + font:kFontSemibold(14) + textColor:UIColorFromRGB(0x313131)]; + _closeRoomTitle.userInteractionEnabled = NO; + } + return _closeRoomTitle; +} + +- (UIImageView *)closeRoomMark { + if (!_closeRoomMark) { + _closeRoomMark = [[UIImageView alloc] initWithImage:kImage(@"room_across_pk_invite_result_close")]; + _closeRoomMark.userInteractionEnabled = NO; + } + return _closeRoomMark; +} + +@end diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m index 6fce10e0..d834e1b0 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m +++ b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m @@ -53,9 +53,14 @@ - (void)setItemModel:(XPRoomMoreItemModel *)itemModel { _itemModel = itemModel; if (_itemModel) { - self.logoImageView.image = [UIImage getLanguageImage:_itemModel.imageName]; self.titleLabel.text = _itemModel.title; self.titleLabel.textColor = _itemModel.titleColor ? _itemModel.titleColor : [DJDKMIMOMColor mainTextColor]; + if (itemModel.imageTintColor) { + self.logoImageView.image = [[UIImage getLanguageImage:_itemModel.imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; + self.logoImageView.tintColor = itemModel.imageTintColor; + } else { + self.logoImageView.image = [UIImage getLanguageImage:_itemModel.imageName]; + } } } diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m index 06f97307..457cf22f 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m +++ b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m @@ -24,7 +24,9 @@ #import "GuildSuperAdminInfoModel.h" #import "AccountInfoStorage.h" #import "NSArray+Safe.h" +#import "UserInfoModel.h" ///View +#import "AppOfficalManagerActionsViewController.h" #import "XPRoomMoreMenuCollectionViewCell.h" #import "XPRoomInviteFansView.h" #import "XPAcrossRoomPKViewController.h" @@ -97,7 +99,10 @@ UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey; break; } } - [self.presenter getMoreMenuDataSource:self.roomInfo isSuperAdmin:meIsSuperAdmin isOnMic:self.isOnMic]; + [self.presenter getMoreMenuDataSource:self.roomInfo + isSuperAdmin:meIsSuperAdmin + isOnMic:self.isOnMic + isAppSuperAdmin:[self.hostDelegate.getUserInfo platformRole]==1]; } #pragma mark - Private Method @@ -530,6 +535,17 @@ UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey; @kStrongify(self); [self.hostDelegate displayMusicPanel]; }]; + } + break; + case RoomMoreMenuType_App_Manager:{ + [self dismissViewControllerAnimated:NO completion:nil]; + AppOfficalManagerActionsViewController *vc = [[AppOfficalManagerActionsViewController alloc] init]; + vc.roomID = @(self.roomInfo.roomId).stringValue; + vc.roomUid = roomUid; + vc.targetUid = roomUid; + vc.controlUid = @(self.hostDelegate.getUserInfo.uid).stringValue; + vc.isRoomHide = self.roomInfo.hideFlag; + [self.hostDelegate.getCurrentNav pushViewController:vc animated:YES]; } break; default: diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m index e7de88c8..d8d6cb6d 100644 --- a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m +++ b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m @@ -124,6 +124,7 @@ extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl; extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + extModel.platformRole = userInfo.platformRole; extModel.nick = userInfo.nick; NIMMessage * message = [[NIMMessage alloc] init]; diff --git a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameMsgView.m b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameMsgView.m index 3608a782..43c46723 100644 --- a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameMsgView.m +++ b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameMsgView.m @@ -263,6 +263,7 @@ extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl; extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + extModel.platformRole = userInfo.platformRole; NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]]; message.remoteExt = remoteExt; NIMSessionType sessionType = NIMSessionTypeChatroom; diff --git a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameSendTextView.m b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameSendTextView.m index 0aba36f6..4f06c787 100644 --- a/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameSendTextView.m +++ b/YuMi/Modules/YMRoom/View/RoomGame/View/SubView/MSRoomGameSendTextView.m @@ -71,6 +71,7 @@ extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl; extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + extModel.platformRole = userInfo.platformRole; extModel.nick = userInfo.nick; NIMMessage * message = [[NIMMessage alloc] init]; diff --git a/YuMi/Modules/YMRoom/View/RoomSideMenu/RoomSideMenu.m b/YuMi/Modules/YMRoom/View/RoomSideMenu/RoomSideMenu.m index a3cf24e5..42b74214 100644 --- a/YuMi/Modules/YMRoom/View/RoomSideMenu/RoomSideMenu.m +++ b/YuMi/Modules/YMRoom/View/RoomSideMenu/RoomSideMenu.m @@ -24,7 +24,7 @@ #import "MSRoomGameWebVC.h" #import "MSRoomMenuGameVC.h" -#import "XPRoomAnimationView.h" +#import "RoomAnimationView.h" #import "XPWebViewController.h" #import "XPRoomViewController.h" #import "PIRoomActivityWebView.h" @@ -425,9 +425,9 @@ static CGFloat const kNormalHeight = 160.0f; vc.view.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); XPRoomViewController *roomVC = (XPRoomViewController *)self.hostDelegate; [roomVC addChildViewController:vc]; - XPRoomAnimationView *animationView; + RoomAnimationView *animationView; for (id obj in self.hostDelegate.getSuperView.subviews) { - if ([obj isKindOfClass:[XPRoomAnimationView class]]){ + if ([obj isKindOfClass:[RoomAnimationView class]]){ animationView = obj; break; } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m b/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m index a30cc2a1..70fd9187 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m @@ -514,6 +514,7 @@ extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl; extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + extModel.platformRole = userInfo.platformRole; NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]]; message.remoteExt = remoteExt; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.m index cddf3ab3..b854cd3d 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/Cell/XPGiftUserCollectionViewCell.m @@ -16,6 +16,7 @@ #import "XPGiftUserInfoModel.h" ///View #import "NetImageView.h" +#import "XPSkillCardPlayerManager.h" @interface XPGiftUserCollectionViewCell () ///头像 @@ -30,6 +31,8 @@ - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { + self.clipsToBounds = NO; + self.contentView.clipsToBounds = NO; [self initSubViews]; [self initSubViewConstraints]; } @@ -56,7 +59,7 @@ [self.positionLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(10); make.centerY.mas_equalTo(self.avatarImageView.mas_bottom); - make.width.mas_equalTo(10); + make.width.mas_equalTo(10); make.centerX.mas_equalTo(self.avatarImageView); }]; } @@ -72,17 +75,26 @@ make.width.mas_equalTo(28); }]; } else { - if (_userInfo.position.integerValue == -1) { - self.positionLabel.text = YMLocalizedString(@"XPGiftUserCollectionViewCell0"); - [self.positionLabel mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(28); - }]; - } else { - self.positionLabel.text = [NSString stringWithFormat:@"%ld", _userInfo.position.integerValue + 1]; - [self.positionLabel mas_updateConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(10); - }]; - } + if ([XPSkillCardPlayerManager shareInstance].is9Mic) { + if (_userInfo.position.integerValue == -1) { + self.positionLabel.text = YMLocalizedString(@"XPGiftUserCollectionViewCell0"); + [self.positionLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(28); + }]; + } else { + NSInteger count = _userInfo.position.integerValue + 2; + self.positionLabel.text = [NSString stringWithFormat:@"%ld", count]; + [self.positionLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(count >= 10 ? 14 : 10); + }]; + } + } else { + NSInteger count = _userInfo.position.integerValue + 2; + self.positionLabel.text = [NSString stringWithFormat:@"%ld", count]; + [self.positionLabel mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(count >= 10 ? 14 : 10); + }]; + } } } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m index c07462bc..497a42a3 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/XPSendGiftView.m @@ -286,6 +286,12 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; attachment.data = dic; [self sendCustomMessage:attachment]; } + + if (self.segmentType == GiftSegmentType_Graffiti) { + NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPSendGiftView3"),self.giftInfoView.lastSelectGift.giftName]; + [self showSuccessToast:title]; + [self dismissViewControllerAnimated:YES completion:nil]; + } } - (void)sendCustomMessage:(GiftReceiveInfoModel *)receiveModel @@ -439,6 +445,8 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; [attachment.data setObject:@([[GiftComboManager sharedManager] loadComboCountFromSendGiftView]) forKey:@"comboCount"]; + attachment.data = [self removeNSNullValuesAndEmptyStringsRecursively:attachment.data]; + object.attachment = attachment; message.messageObject = object; @@ -447,12 +455,52 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl; extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; + extModel.platformRole = userInfo.platformRole; NSMutableDictionary *remoteExt = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]]; message.remoteExt = remoteExt; NIMSessionType sessionType = self.usingplaceType == SendGiftType_Room ? NIMSessionTypeChatroom : NIMSessionTypeP2P; //构造会话 NIMSession *session = [NIMSession session:sessionID type:sessionType]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { + if (error) { + NSLog(@"%@",error); + } + }]; +} + +- (id)removeNSNullValuesAndEmptyStringsRecursively:(id)object { + if ([object isKindOfClass:[NSDictionary class]]) { + NSMutableDictionary *cleanedDictionary = [NSMutableDictionary dictionary]; + [(NSDictionary *)object enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { + // 检查是否需要移除当前键 + if ([key isKindOfClass:[NSString class]] && + ([key isEqualToString:@"userPurse"] || [key isEqualToString:@"hasSvga"] || [key isEqualToString:@"currentTime"])) { + return; // 跳过 key 为 "userPurse" 或 "hasSvga" 或 "currentTime" 的键值对 + } + + // 递归清理子对象 + id cleanedValue = [self removeNSNullValuesAndEmptyStringsRecursively:obj]; + if (cleanedValue) { + cleanedDictionary[key] = cleanedValue; + } + }]; + return [cleanedDictionary copy]; + } else if ([object isKindOfClass:[NSArray class]]) { + NSMutableArray *cleanedArray = [NSMutableArray array]; + for (id obj in (NSArray *)object) { + id cleanedValue = [self removeNSNullValuesAndEmptyStringsRecursively:obj]; + if (cleanedValue) { + [cleanedArray addObject:cleanedValue]; + } + } + return [cleanedArray copy]; + } else if ([object isKindOfClass:[NSNull class]] || ([object isKindOfClass:[NSString class]] && [(NSString *)object length] == 0)) { + // 移除 NSNull 和空字符串 + return nil; + } else { + // 保留其他类型 + return object; + } } #pragma mark - Deal Send Gift Data @@ -942,7 +990,6 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; dispatch_after(delayTime, dispatch_get_main_queue(), ^{ @kStrongify(self); if (self) { - if ([GiftComboManager sharedManager].enableCombo) { [[GiftComboManager sharedManager] resetCombo]; [self sendCustomMessage:receiveInfo oringinDic:originDic]; @@ -960,11 +1007,6 @@ UIKIT_EXTERN NSString * kShowFirstRechargeView; ///发送涂鸦礼物消息 [self sendGraffitiGiftMessage]; - if (self.segmentType == GiftSegmentType_Graffiti) { - NSString * title = [NSString stringWithFormat:YMLocalizedString(@"XPSendGiftView3"),self.giftInfoView.lastSelectGift.giftName]; - [self showSuccessToast:title]; - [self dismissViewControllerAnimated:YES completion:nil]; - } } ///送礼物失败 diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.h index 323d5907..836c2d1e 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.h +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.h @@ -23,6 +23,9 @@ NS_ASSUME_NONNULL_BEGIN @property (strong, nonatomic) NIMChatroomMember *member; ///代理 @property (nonatomic,weak) id delegate; + +- (void)hideRemoveButton; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.m index e392ac09..3d0b01af 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomRoleTableViewCell.m @@ -81,6 +81,10 @@ }]; } +- (void)hideRemoveButton { + self.removeButton.hidden = YES; +} + #pragma mark - Event Response - (void)removeButtonAction:(UIButton *)sender { if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomRoleTableViewCell:didClickMember:)]) { diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m index f858dd45..c52c9e02 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m @@ -127,7 +127,14 @@ //获取房间在线用户成功 -(void)getRoomOnlineUserListSuccess:(NSArray *)list{ - self.datasource = [NSMutableArray arrayWithArray:list]; + NSMutableArray *temp = @[].mutableCopy; + for (XPMessageRemoteExtModel *model in list) { + if (model.platformRole == 0) { + [temp addObject:model]; + } + } + self.datasource = temp; + [self.tableView reloadData]; } @@ -216,11 +223,13 @@ RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; NSString * targetUid = userInfo.uid; XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init]; + __block MicroQueueModel *micModel = nil; [[self.hostDelegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if (targetUid.integerValue == obj.userInfo.uid) { model.position = [NSString stringWithFormat:@"%d", obj.microState.position]; model.posState = obj.microState.posState; model.micState = obj.microState.micState; + micModel = obj; *stop = YES; } }]; @@ -231,7 +240,8 @@ model.superMangerList = self.hostDelegate.getRoomSuperAdminList; model.micQueue = self.hostDelegate.getMicroQueue; model.hideSendGiftItem = YES; - UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model]; + model.platformRole = micModel.userInfo.platformRole; + UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model controlUser:self.hostDelegate.getUserInfo]; vc.modalPresentationStyle = UIModalPresentationOverFullScreen; [self.hostDelegate.getCurrentNav presentViewController:vc animated:NO completion:nil]; diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.h index 447b662f..94d158f4 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.h +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.h @@ -22,6 +22,9 @@ typedef NS_ENUM(NSInteger, RoomRoleListType) { @property (nonatomic,assign) RoomRoleListType type; ///超管列表 @property (nonatomic,strong) NSArray *superAdmminList; + +@property(nonatomic, assign) BOOL isAppAdmin; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.m index 1a732cb0..eb6e2cf8 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomRoleViewController.m @@ -51,7 +51,9 @@ request.type = NIMChatroomFetchMemberTypeRegular; request.lastMember = self.lastMember; request.limit = 200; + @kWeakify(self); [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { + @kStrongify(self); if (error == nil) { self.lastMember = members.lastObject; [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { @@ -105,6 +107,11 @@ } else { cell.lineView.hidden = NO; } + + if (self.isAppAdmin) { + [cell hideRemoveButton]; + } + return cell; } diff --git a/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.m b/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.m index 37accd25..27a9d0e2 100644 --- a/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.m +++ b/YuMi/Modules/YMRoom/View/StageView/AnchorPKStageView.m @@ -263,8 +263,9 @@ model.roomInfo = roomInfo; model.micQueue = self.getMicroQueue; model.delegate = self.hostDelegate; - model.superMangerList = self.hostDelegate.getRoomSuperAdminList; - UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model]; + model.superMangerList = self.hostDelegate.getRoomSuperAdminList; + model.platformRole = micModel.userInfo.platformRole; + UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model controlUser:self.hostDelegate.getUserInfo]; vc.modalPresentationStyle = UIModalPresentationOverFullScreen; [self.hostDelegate.getCurrentNav presentViewController:vc animated:NO completion:nil]; diff --git a/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.m b/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.m index eefbeb8e..dc8fdbd8 100644 --- a/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.m +++ b/YuMi/Modules/YMRoom/View/StageView/AnchorStageView.m @@ -144,8 +144,8 @@ model.micQueue = self.getMicroQueue; model.delegate = self.hostDelegate; model.superMangerList = self.hostDelegate.getRoomSuperAdminList; - - UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model]; + model.platformRole = micModel.userInfo.platformRole; + UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model controlUser:self.hostDelegate.getUserInfo]; vc.modalPresentationStyle = UIModalPresentationOverFullScreen; [self.hostDelegate.getCurrentNav presentViewController:vc animated:NO completion:nil]; diff --git a/YuMi/Modules/YMRoom/View/StageView/StageView.m b/YuMi/Modules/YMRoom/View/StageView/StageView.m index 6322a036..cdb4fea3 100644 --- a/YuMi/Modules/YMRoom/View/StageView/StageView.m +++ b/YuMi/Modules/YMRoom/View/StageView/StageView.m @@ -840,7 +840,8 @@ model.micQueue = self.micQueue; model.delegate = self.hostDelegate; model.superMangerList = self.hostDelegate.getRoomSuperAdminList; - UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model]; + model.platformRole = micModel.userInfo.platformRole; + UserRoomCardViewController *vc = [[UserRoomCardViewController alloc] initWithUser:model controlUser:self.hostDelegate.getUserInfo]; vc.modalPresentationStyle = UIModalPresentationOverFullScreen; [self.hostDelegate.getCurrentNav presentViewController:vc animated:NO completion:nil]; return; @@ -907,8 +908,8 @@ }; /** - * @param firstDown 先下麦 - * @param nextUp 下麦成功后再上的麦位,为nil的时候代表不需要上麦 + * firstDown 先下麦 + * nextUp 下麦成功后再上的麦位,为nil的时候代表不需要上麦 */ void(^nimDownQueue)(NSString*, NSString*) = ^ (NSString* firstDown, NSString* nextUp){ NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; @@ -923,77 +924,39 @@ }]; }; + // 2.0 + if (userInfo.platformRole == 1) { + // 超级管理不上mic + // 2.0.1 锁麦/解锁 + TTActionSheetConfig *lockMic = [self lockMicAction:position + room:roomInfo + mic:micModel + isAppAdmin:YES]; + // 2.0.2 闭麦/开麦 + TTActionSheetConfig *muteMic = [self muteMicAction:position room:roomInfo mic:micModel isAppAdmin:YES]; + [TTPopup actionSheetWithItems:@[lockMic, muteMic]]; + return; + } + // 2.1 管理员点击了空麦位 if (member.type == NIMTeamMemberTypeOwner || member.type == NIMTeamMemberTypeManager) { // 2.1.1 上麦 - NSString * upTitle = YMLocalizedString(@"StageView5"); - TTActionSheetConfig *upMic = [TTActionSheetConfig normalTitle:upTitle clickAction:^{ - NSString* selfUid = [NSString stringWithFormat:@"%ld", (long)self.hostDelegate.getUserInfo.uid]; - UIView* microView = [self findMicroViewByUid:selfUid]; - - if (roomInfo.type == RoomType_19Mic && micModel.microState.position == 6 ) { - @kWeakify(self); - [Api requestBossMicUp:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { - if (code == 200) { - if (microView) { - nimDownQueue([self indexToPosition:microView.tag], position); - } else { - nimUpQueue(position, NO); - } - } else { - [XNDJTDDLoadingTool showErrorWithMessage:msg]; - } - } roomUid:@(roomInfo.uid).stringValue uid:uid]; - } else { - if (microView) { - nimDownQueue([self indexToPosition:microView.tag], position); - } else { - nimUpQueue(position, NO); - } - } + TTActionSheetConfig *upMic = [self upMicAction:position room:roomInfo mic:micModel blockUp:^(NSString *up, BOOL isFromDownMic) { + nimUpQueue(position, NO); + } blockDown:^(NSString *firstDown, NSString *nextUp) { + nimDownQueue(firstDown, nextUp); }]; // 2.1.2 锁麦/解锁 - NSString * lockTitle; - if (roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { - lockTitle = micModel.microState.posState == MicroPosStateType_Free ? YMLocalizedString(@"StageView22") : YMLocalizedString(@"StageView8"); - }else { - lockTitle = micModel.microState.posState == MicroPosStateType_Free ? YMLocalizedString(@"StageView23") : YMLocalizedString(@"StageView10"); - } - TTActionSheetConfig *lockMic = [TTActionSheetConfig normalTitle:lockTitle clickAction:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; - NSString * state = micModel.microState.posState == MicroPosStateType_Free ? @"1" : @"0"; - NSString * ticket = [[AccountInfoStorage instance] getTicket]; - NSString * uid = [[AccountInfoStorage instance] getUid]; - [Api microLockCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; - }]; - + TTActionSheetConfig *lockMic = [self lockMicAction:position + room:roomInfo + mic:micModel + isAppAdmin:NO]; // 2.1.3 闭麦/开麦 - NSString * muteTitle = micModel.microState.micState == MicroMicStateType_Open ? YMLocalizedString(@"StageView25") : YMLocalizedString(@"StageView14"); - TTActionSheetConfig *muteMic = [TTActionSheetConfig normalTitle:muteTitle clickAction:^{ - NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; - NSString * state = micModel.microState.micState == MicroMicStateType_Open ? @"1" : @"0"; - NSString * ticket = [[AccountInfoStorage instance] getTicket]; - NSString * uid = [[AccountInfoStorage instance] getUid]; - [Api microMuteCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { - - } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; - }]; + TTActionSheetConfig *muteMic = [self muteMicAction:position room:roomInfo mic:micModel isAppAdmin:NO]; // 抱Ta上麦 - NSString * inviteTitle = ([position isEqualToString:@"-1"] && roomInfo.roomModeType == RoomModeType_Open_Blind) ? YMLocalizedString(@"StageView27") : YMLocalizedString(@"StageView18"); - TTActionSheetConfig *inviteMic = [TTActionSheetConfig normalTitle:inviteTitle clickAction:^{ - XPRoomInviteUserViewController * inviteUserMicVC = [[XPRoomInviteUserViewController alloc] init]; - inviteUserMicVC.isManagerOrOwner = ([position isEqualToString:@"-1"] && roomInfo.roomModeType == RoomModeType_Open_Blind); - inviteUserMicVC.roomId = roomId; - inviteUserMicVC.roomType = self.hostDelegate.getRoomInfo.type; - inviteUserMicVC.position = position; - inviteUserMicVC.roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; - inviteUserMicVC.blindDateVipUid = roomInfo.blindDateVipUid; - [self.hostDelegate.getCurrentNav pushViewController:inviteUserMicVC animated:YES]; - }]; + TTActionSheetConfig *inviteMic = [self inviteMicAction:position room:roomInfo mic:micModel]; [TTPopup actionSheetWithItems:@[upMic, inviteMic, lockMic, muteMic]]; } else { // 2.2 非管理员点击了空麦位 @@ -1024,6 +987,140 @@ }]; } +- (TTActionSheetConfig *)upMicAction:(NSString *)position + room:(RoomInfoModel *)roomInfo + mic:(MicroQueueModel *)micInfo + blockUp:(void(^)(NSString* up, BOOL isFromDownMic))blockUp + blockDown:(void(^)(NSString* firstDown, NSString* nextUp))blockDown { + NSString * upTitle = YMLocalizedString(@"StageView5"); + TTActionSheetConfig *upMic = [TTActionSheetConfig normalTitle:upTitle clickAction:^{ + NSString* selfUid = [NSString stringWithFormat:@"%ld", (long)self.hostDelegate.getUserInfo.uid]; + UIView* microView = [self findMicroViewByUid:selfUid]; + + if (roomInfo.type == RoomType_19Mic && micInfo.microState.position == 6 ) { + @kWeakify(self); + [Api requestBossMicUp:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200) { + if (microView) { + if (blockDown) { + blockDown([self indexToPosition:microView.tag], position); + } + } else { + if (blockUp) { + blockUp(position, NO); + } + } + } else { + [XNDJTDDLoadingTool showErrorWithMessage:msg]; + } + } roomUid:@(roomInfo.uid).stringValue + uid:[NSString stringWithFormat:@"%ld", self.hostDelegate.getUserInfo.uid]]; + } else { + if (microView) { + if (blockDown) { + blockUp([self indexToPosition:microView.tag], position); + } + } else { + if (blockUp) { + blockUp(position, NO); + } + } + } + }]; + return upMic; +} + +- (TTActionSheetConfig *)lockMicAction:(NSString *)position + room:(RoomInfoModel *)roomInfo + mic:(MicroQueueModel *)micInfo + isAppAdmin:(BOOL)isAppAdmin { + NSString * lockTitle; + if (roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { + lockTitle = micInfo.microState.posState == MicroPosStateType_Free ? YMLocalizedString(@"StageView22") : YMLocalizedString(@"StageView8"); + }else { + lockTitle = micInfo.microState.posState == MicroPosStateType_Free ? YMLocalizedString(@"StageView23") : YMLocalizedString(@"StageView10"); + } + TTActionSheetConfig *lockMic = [TTActionSheetConfig normalTitle:lockTitle clickAction:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + NSString * state = micInfo.microState.posState == MicroPosStateType_Free ? @"1" : @"0"; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api microLockCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200 && isAppAdmin && state.integerValue == 1) { + NIMMessage * message = [[NIMMessage alloc] init]; + AttachmentModel * attachMent = [[AttachmentModel alloc] init]; + attachMent.first = CustomMessageType_Hall_Super_Admin; + attachMent.second = Custom_Message_Sub_Hall_Super_Admin_Lock_Mic; + attachMent.data = @{@"micNumber":@(micInfo.microState.position).stringValue}; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachMent; + message.messageObject = object; + + //构造会话 + NSString * sessionId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { + + }]; + } + } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; + }]; + + return lockMic; +} + +- (TTActionSheetConfig *)muteMicAction:(NSString *)position + room:(RoomInfoModel *)roomInfo + mic:(MicroQueueModel *)micInfo + isAppAdmin:(BOOL)isAppAdmin { + NSString * muteTitle = micInfo.microState.micState == MicroMicStateType_Open ? YMLocalizedString(@"StageView25") : YMLocalizedString(@"StageView14"); + TTActionSheetConfig *muteMic = [TTActionSheetConfig normalTitle:muteTitle clickAction:^{ + NSString * roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; + NSString * state = micInfo.microState.micState == MicroMicStateType_Open ? @"1" : @"0"; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + NSString * uid = [[AccountInfoStorage instance] getUid]; + [Api microMuteCompletion:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if (code == 200 && isAppAdmin && state.integerValue == 1) { + NIMMessage * message = [[NIMMessage alloc] init]; + AttachmentModel * attachMent = [[AttachmentModel alloc] init]; + attachMent.first = CustomMessageType_Hall_Super_Admin; + attachMent.second = Custom_Message_Sub_Hall_Super_Admin_Mute_Mic; + attachMent.data = @{@"micNumber":@(micInfo.microState.position).stringValue}; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachMent; + message.messageObject = object; + + //构造会话 + NSString * sessionId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { + + }]; + } + } roomUid:roomUid state:state position:position ticket:ticket uid:uid]; + }]; + return muteMic; +} + +- (TTActionSheetConfig *)inviteMicAction:(NSString *)position + room:(RoomInfoModel *)roomInfo + mic:(MicroQueueModel *)micInfo { + NSString * inviteTitle = ([position isEqualToString:@"-1"] && roomInfo.roomModeType == RoomModeType_Open_Blind) ? YMLocalizedString(@"StageView27") : YMLocalizedString(@"StageView18"); + NSString * roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + TTActionSheetConfig *inviteMic = [TTActionSheetConfig normalTitle:inviteTitle clickAction:^{ + XPRoomInviteUserViewController * inviteUserMicVC = [[XPRoomInviteUserViewController alloc] init]; + inviteUserMicVC.isManagerOrOwner = ([position isEqualToString:@"-1"] && roomInfo.roomModeType == RoomModeType_Open_Blind); + inviteUserMicVC.roomId = roomId; + inviteUserMicVC.roomType = self.hostDelegate.getRoomInfo.type; + inviteUserMicVC.position = position; + inviteUserMicVC.roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; + inviteUserMicVC.blindDateVipUid = roomInfo.blindDateVipUid; + [self.hostDelegate.getCurrentNav pushViewController:inviteUserMicVC animated:YES]; + }]; + return inviteMic; +} + + - (NSInteger)countOfMicroView { return 0; } diff --git a/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.h b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.h index 38bf8916..694fecb9 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.h +++ b/YuMi/Modules/YMRoom/View/UserCard/Model/XPUserCardInfoModel.h @@ -35,6 +35,8 @@ NS_ASSUME_NONNULL_BEGIN ///协议 @property (nonatomic,weak) id delegate; +@property(nonatomic, assign) NSInteger platformRole; // 目标用户是否超管: 0 - 1 + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h index 1b671233..0f82c853 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h +++ b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h @@ -16,11 +16,11 @@ NS_ASSUME_NONNULL_BEGIN /// 获取用户卡片中中间操作按钮的数据源 /// @param userInfo 目标用户 -- (void)getFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo; +- (void)getFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo me:(UserInfoModel *)myInfo; /// 用户卡片底部的操作按钮 /// @param userInfo 目标用户的信息 -- (void)getMicroFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo; +- (void)getMicroFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo me:(UserInfoModel *)myInfo; ///抱她上麦的 数据 /// @param micCount 当前麦序的个数 @@ -50,7 +50,7 @@ NS_ASSUME_NONNULL_BEGIN /// 超管踢管理员 /// @param targetNick 目标用户的昵称 /// @param cardInfo 用户信息 -- (void)superAdminKickUser:(NSString *)targetNick cardInfo:(XPUserCardInfoModel *)cardInfo; +- (void)superAdminKickUser:(NSString *)targetNick cardInfo:(XPUserCardInfoModel *)cardInfo appAdmin:( UserInfoModel * _Nullable )appAdmin; // 锁麦 开锁 /// @param roomUid 房间的uid /// @param state YES 锁坑位,NO取消锁 diff --git a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m index b4e96e2f..c51dd271 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m +++ b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m @@ -73,96 +73,107 @@ /// 获取用户卡片中中间操作按钮的数据源 /// @param userInfo 目标用户 -- (void)getFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo{ +- (void)getFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo me:(nonnull UserInfoModel *)myInfo{ NSString * uid = [[AccountInfoStorage instance] getUid]; NSString * targetUid = userInfo.uid; NSString * roomId = [NSString stringWithFormat:@"%ld", userInfo.roomInfo.roomId]; if ([uid isEqualToString:targetUid]) { ///查看自己的话 没有中间的数据 [[self getView] onGetFunctionArraySccess:@[]]; return; - } else { - [self.functionArray removeAllObjects]; - if (!userInfo.hideSendGiftItem) { - [self.functionArray addObject:self.giftItem]; + } + + ///自己是公会超管 + BOOL meIsSuperAdmin = NO; + ///用户卡片的那个人事公会超管 + BOOL heIsSuperAdmin = NO; + for (GuildSuperAdminInfoModel *managerInfo in userInfo.superMangerList) { + if ([managerInfo.uid isEqualToString:userInfo.uid]) { + heIsSuperAdmin = YES; } - [self.functionArray addObject:self.chatItem]; + if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { + meIsSuperAdmin = YES; + } + } + + BOOL meIsAppSuperAdmin = myInfo.platformRole == 1; + + [self.functionArray removeAllObjects]; + if (!userInfo.hideSendGiftItem && !meIsAppSuperAdmin) { + [self.functionArray addObject:self.giftItem]; + } + if (!meIsAppSuperAdmin) { [self.functionArray addObject:self.atItem]; - [self.functionArray addObject:self.attentionItem]; - ///获取一下关注的状态 - [self userAttentionStatus:uid targetUid:targetUid]; - ///自己是公会超管 - BOOL meIsSuperAdmin = NO; - ///用户卡片的那个人事公会超管 - BOOL heIsSuperAdmin = NO; - for (GuildSuperAdminInfoModel *managerInfo in userInfo.superMangerList) { - if ([managerInfo.uid isEqualToString:userInfo.uid]) { - heIsSuperAdmin = YES; - } - if ([managerInfo.uid isEqualToString:[AccountInfoStorage instance].getUid]) { - meIsSuperAdmin = YES; - } + } + [self.functionArray addObject:self.chatItem]; + [self.functionArray addObject:self.attentionItem]; + ///获取一下关注的状态 + [self userAttentionStatus:uid targetUid:targetUid]; + + @kWeakify(self); + if (meIsSuperAdmin || meIsAppSuperAdmin) { + if (heIsSuperAdmin) { + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } else { + ///查看 目标用户是否是管理员 + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + @kStrongify(self); + NIMChatroomMember * targetMember = x; + if (targetMember == nil) {return;} + if (targetMember.type == NIMChatroomMemberTypeCreator) { ///目标是房主的话 + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } else { + if (targetMember && targetMember.type == NIMChatroomMemberTypeManager) { + self.managerItem.isSelect = YES; + } + if (!meIsAppSuperAdmin) { + [self.functionArray addObject:self.managerItem]; + } + [self.functionArray addObject:self.kikoutItem]; + [self.functionArray addObject:self.blackItem]; + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } + }]; } - @weakify(self); - if (meIsSuperAdmin) { - if (heIsSuperAdmin) { - [[self getView] onGetFunctionArraySccess:self.functionArray]; - } else { - ///查看 目标用户是否是管理员 - [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { - NIMChatroomMember * targetMember = x; - if (targetMember == nil) {return;} - if (targetMember.type == NIMChatroomMemberTypeCreator) { ///目标是房主的话 - [[self getView] onGetFunctionArraySccess:self.functionArray]; - } else { + } else { + [[self rac_queryChatRoomMember:uid roomId:roomId] subscribeNext:^(id _Nullable x) { + @kStrongify(self); + NIMChatroomMember * member = x; + if (member == nil) {return;} + if (member.type == NIMChatroomMemberTypeCreator) {///房主 踢出房间 设置管理员 拉黑 + if (heIsSuperAdmin) { + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } else { + [self.functionArray addObject:self.kikoutItem]; + [self.functionArray addObject:self.managerItem]; + [self.functionArray addObject:self.blackItem]; + ///查看 目标用户是否是管理员 + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + NIMChatroomMember * targetMember = x; if (targetMember && targetMember.type == NIMChatroomMemberTypeManager) { self.managerItem.isSelect = YES; } - [self.functionArray addObject:self.managerItem]; + [[self getView] onGetFunctionArraySccess:self.functionArray]; + }]; + } + } else if(member.type == NIMChatroomMemberTypeManager) {///操作者是 管理员 踢出房间 拉黑 + ///查看 目标用户是否是管理员 + @kWeakify(self); + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + @kStrongify(self); + NIMChatroomMember * targetMember = x; + if (targetMember == nil) {return;} + if (targetMember.type == NIMChatroomMemberTypeManager || targetMember.type == NIMChatroomMemberTypeCreator || heIsSuperAdmin) { ///目标是管理员 + [[self getView] onGetFunctionArraySccess:self.functionArray]; + } else { [self.functionArray addObject:self.kikoutItem]; [self.functionArray addObject:self.blackItem]; [[self getView] onGetFunctionArraySccess:self.functionArray]; } }]; + } else { + [[self getView] onGetFunctionArraySccess:self.functionArray]; } - } else { - [[self rac_queryChatRoomMember:uid roomId:roomId] subscribeNext:^(id _Nullable x) { - @strongify(self); - NIMChatroomMember * member = x; - if (member == nil) {return;} - if (member.type == NIMChatroomMemberTypeCreator) {///房主 踢出房间 设置管理员 拉黑 - if (heIsSuperAdmin) { - [[self getView] onGetFunctionArraySccess:self.functionArray]; - } else { - [self.functionArray addObject:self.kikoutItem]; - [self.functionArray addObject:self.managerItem]; - [self.functionArray addObject:self.blackItem]; - ///查看 目标用户是否是管理员 - [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { - NIMChatroomMember * targetMember = x; - if (targetMember && targetMember.type == NIMChatroomMemberTypeManager) { - self.managerItem.isSelect = YES; - } - [[self getView] onGetFunctionArraySccess:self.functionArray]; - }]; - } - } else if(member.type == NIMChatroomMemberTypeManager) {///操作者是 管理员 踢出房间 拉黑 - ///查看 目标用户是否是管理员 - [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { - NIMChatroomMember * targetMember = x; - if (targetMember == nil) {return;} - if (targetMember.type == NIMChatroomMemberTypeManager || targetMember.type == NIMChatroomMemberTypeCreator || heIsSuperAdmin) { ///目标是管理员 - [[self getView] onGetFunctionArraySccess:self.functionArray]; - } else { - [self.functionArray addObject:self.kikoutItem]; - [self.functionArray addObject:self.blackItem]; - [[self getView] onGetFunctionArraySccess:self.functionArray]; - } - }]; - } else { - [[self getView] onGetFunctionArraySccess:self.functionArray]; - } - }]; - } + }]; } } @@ -224,36 +235,14 @@ /// 用户卡片底部的操作按钮 /// @param userInfo 目标用户的信息 -- (void)getMicroFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo { +- (void)getMicroFunctionItemsByUserInfo:(XPUserCardInfoModel *)userInfo me:(UserInfoModel *)myInfo{ NSString * uid = [[AccountInfoStorage instance] getUid]; NSString * targetUid = userInfo.uid; RoomInfoModel * roomInfo = userInfo.roomInfo; NSString * roomId = [NSString stringWithFormat:@"%ld", userInfo.roomInfo.roomId]; MicroQueueModel * micQueue = [userInfo.micQueue objectForKey:userInfo.position]; NSMutableArray * array = [NSMutableArray array]; - XPUserCardMicroItemModel * muteItem = [[XPUserCardMicroItemModel alloc] init]; - muteItem.title = userInfo.micState == MicroMicStateType_Open ? YMLocalizedString(@"XPUserCardPresenter5") : YMLocalizedString(@"XPUserCardPresenter6"); - muteItem.iconImage = userInfo.micState == MicroMicStateType_Open ? @"room_user_card_close_mic" : @"room_user_card_open_mic"; - muteItem.status = userInfo.micState == MicroMicStateType_Open; - muteItem.type = UserCardMicroType_Mute; - XPUserCardMicroItemModel * upDownItem = [[XPUserCardMicroItemModel alloc] init]; - upDownItem.title = userInfo.position.length <= 0 ? YMLocalizedString(@"XPUserCardPresenter7") : [uid isEqualToString:targetUid] ? YMLocalizedString(@"XPUserCardPresenter8") : YMLocalizedString(@"XPUserCardPresenter9"); - upDownItem.status = userInfo.position.length > 0 ? YES : NO; - upDownItem.type = UserCardMicroType_UpDown; - upDownItem.uid = userInfo.uid; - upDownItem.iconImage = @"room_user_card_up_mic"; - - XPUserCardMicroItemModel * lockItem = [[XPUserCardMicroItemModel alloc] init]; - lockItem.title = userInfo.posState == MicroPosStateType_Free ? YMLocalizedString(@"XPUserCardPresenter10") : YMLocalizedString(@"XPUserCardPresenter11"); - lockItem.iconImage = userInfo.posState == MicroPosStateType_Free ? @"room_user_card_lock" : @"room_user_card_unlock"; - lockItem.status = userInfo.posState == MicroPosStateType_Free; - lockItem.type = UserCardMicroType_Lock; - - XPUserCardMicroItemModel * giftValueItem = [[XPUserCardMicroItemModel alloc] init]; - giftValueItem.title = YMLocalizedString(@"XPUserCardPresenter12"); - giftValueItem.iconImage = @"room_user_card_clean_gift_value"; - giftValueItem.type = UserCardMicroType_Clean_Gift_Value; ///自己是公会超管 BOOL meIsSuperAdmin = NO; ///用户卡片的那个人事公会超管 @@ -266,6 +255,37 @@ meIsSuperAdmin = YES; } } + + BOOL meIsAppSuperAdmin = myInfo.platformRole == 1; + BOOL heIsAppSuperAdmin = userInfo.platformRole == 1; + + BOOL isOnMic = userInfo.position.length > 0; + + XPUserCardMicroItemModel * muteItem = [[XPUserCardMicroItemModel alloc] init]; + muteItem.title = userInfo.micState == MicroMicStateType_Open ? YMLocalizedString(@"XPUserCardPresenter5") : YMLocalizedString(@"XPUserCardPresenter6"); + muteItem.iconImage = userInfo.micState == MicroMicStateType_Open ? @"room_user_card_close_mic" : @"room_user_card_open_mic"; + muteItem.status = userInfo.micState == MicroMicStateType_Open; + muteItem.type = UserCardMicroType_Mute; + + XPUserCardMicroItemModel * upDownItem = [[XPUserCardMicroItemModel alloc] init]; + + upDownItem.title = isOnMic ? ([uid isEqualToString:targetUid] ? YMLocalizedString(@"XPUserCardPresenter8") : YMLocalizedString(@"XPUserCardPresenter9")) : YMLocalizedString(@"XPUserCardPresenter7"); + upDownItem.status = isOnMic ? YES : NO; + upDownItem.type = UserCardMicroType_UpDown; + upDownItem.uid = userInfo.uid; + upDownItem.iconImage = isOnMic ? @"room_user_card_out_mic" : @"room_user_card_up_mic"; + + XPUserCardMicroItemModel * lockItem = [[XPUserCardMicroItemModel alloc] init]; + lockItem.title = userInfo.posState == MicroPosStateType_Free ? YMLocalizedString(@"XPUserCardPresenter10") : YMLocalizedString(@"XPUserCardPresenter11"); + lockItem.iconImage = userInfo.posState == MicroPosStateType_Free ? @"room_user_card_lock" : @"room_user_card_unlock"; + lockItem.status = userInfo.posState == MicroPosStateType_Free; + lockItem.type = UserCardMicroType_Lock; + + XPUserCardMicroItemModel *giftValueItem = [[XPUserCardMicroItemModel alloc] init]; + giftValueItem.title = YMLocalizedString(@"XPUserCardPresenter12"); + giftValueItem.iconImage = @"room_user_card_clean_gift_value"; + giftValueItem.type = UserCardMicroType_Clean_Gift_Value; + if ([targetUid isEqualToString:uid]) {///自己看自己 @weakify(self); [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { @@ -280,7 +300,7 @@ } } else if(member.type == NIMTeamMemberTypeManager || meIsSuperAdmin) { [array addObject:muteItem]; - if (userInfo.position.length > 0) { + if (isOnMic) { [array addObject:upDownItem]; } [array addObject:lockItem]; @@ -288,7 +308,7 @@ [array removeAllObjects]; } } else { - if (userInfo.position.length > 0) { + if (isOnMic) { [array addObject:upDownItem]; } if (userInfo.roomInfo.type == RoomType_Anchor && userInfo.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) {//个播PK中不显示上麦 @@ -299,13 +319,15 @@ if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager || meIsSuperAdmin) { if (userInfo.roomInfo.leaveMode && userInfo.uid.integerValue == userInfo.roomInfo.uid && [userInfo.position isEqualToString:@"-1"]) { [array addObject:muteItem]; - [array addObject:upDownItem]; + if (!heIsAppSuperAdmin) { + [array addObject:upDownItem]; + } [array addObject:lockItem]; if (roomInfo.showGiftValue) { [array addObject:giftValueItem]; } } else { - if (userInfo.position.length > 0) { + if (isOnMic) { [array addObject:muteItem]; [array addObject:upDownItem]; if (![userInfo.position isEqualToString:@"999"]) { @@ -315,11 +337,11 @@ [array addObject:giftValueItem]; } } else { - [array addObject:upDownItem]; +// [array addObject:upDownItem]; } } } else { - if (userInfo.position.length > 0) { + if (isOnMic) { [array addObject:upDownItem]; } } @@ -327,13 +349,63 @@ [[self getView] onGetMicroFunctionArraySuccess:array]; }]; } else {///不是自己看自己 + if (meIsAppSuperAdmin) { /// APP 超管 + [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + NIMChatroomMember * targetMember = x; + if (targetMember == nil) {return;} + if (userInfo.roomInfo.type == RoomType_Anchor) { + if (isOnMic) { + if (targetMember.type != NIMChatroomMemberTypeManager && targetMember.type != NIMChatroomMemberTypeCreator) { + [array addObject:muteItem]; + } + if (targetMember.type != NIMChatroomMemberTypeCreator) { + [array addObject:upDownItem]; + } + [array addObject:lockItem]; + }else{ + if (targetMember.type != NIMChatroomMemberTypeCreator) { + [array addObject:upDownItem]; + } + } + + if (userInfo.uid.integerValue == userInfo.roomInfo.uid && [userInfo.position isEqualToString:@"-1"]) { + [array addObject:giftValueItem]; + } + } else { + if (targetMember.type == NIMChatroomMemberTypeCreator) { + if (isOnMic){ + [array addObject:upDownItem]; + [array addObject:muteItem]; + [array addObject:lockItem]; + } else { + [array addObject:upDownItem]; + } + } else if (heIsAppSuperAdmin) { + [array addObject:self.kikoutItem]; + [array addObject:self.blackItem]; + } else {///目标者是普通用户 + if (isOnMic) { + if (targetMember.type != NIMChatroomMemberTypeManager) { + [array addObject:muteItem]; + } + if (!micQueue.userInfo.vipMic) { + [array addObject:upDownItem]; + [array addObject:lockItem]; + } + } + } + } + [[self getView] onGetMicroFunctionArraySuccess:array]; + }]; + return; + } @weakify(self); [[self rac_queryChatRoomMember:uid roomId:roomId] subscribeNext:^(id _Nullable x) { @strongify(self); NIMChatroomMember * member = x; if (member == nil) {return;} if (member.type == NIMChatroomMemberTypeCreator) { - if (userInfo.position.length > 0) { + if (isOnMic) { if (micQueue.userInfo.vipMic) { [array addObject:muteItem]; if (roomInfo.showGiftValue) { @@ -361,7 +433,7 @@ NIMChatroomMember * targetMember = x; if (targetMember == nil) {return;} if (userInfo.roomInfo.type == RoomType_Anchor) {//个播模式 - if (userInfo.position.length > 0) { + if (isOnMic) { if (targetMember.type != NIMChatroomMemberTypeManager && targetMember.type != NIMChatroomMemberTypeCreator) { [array addObject:muteItem]; } @@ -378,21 +450,21 @@ if (userInfo.uid.integerValue == userInfo.roomInfo.uid && [userInfo.position isEqualToString:@"-1"]) { [array addObject:giftValueItem]; } - } else { if (targetMember.type == NIMChatroomMemberTypeCreator) { - if (userInfo.position.length > 0) { + if (isOnMic) { if (!micQueue.userInfo.vipMic) { [array addObject:lockItem]; } } else { [array addObject:upDownItem]; } + if (roomInfo.showGiftValue) { [array addObject:giftValueItem]; } } else {///目标者是普通用户 - if (userInfo.position.length > 0) { + if (isOnMic) { if (targetMember.type != NIMChatroomMemberTypeManager) { [array addObject:muteItem]; } @@ -408,12 +480,13 @@ } } } - if (userInfo.roomInfo.type == RoomType_Anchor && userInfo.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { + if (userInfo.roomInfo.type == RoomType_Anchor && + userInfo.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode) { [array removeAllObjects]; } [[self getView] onGetMicroFunctionArraySuccess:array]; }]; - }else { + } else { [[self getView] onGetMicroFunctionArraySuccess:@[]]; } }]; @@ -457,7 +530,9 @@ request.roomId = roomId; request.userId = targetUid; request.enable = enable; + @kWeakify(self); [[NIMSDK sharedSDK].chatroomManager markMemberManager:request completion:^(NSError * _Nullable error) { + @kStrongify(self); if (error == nil) { self.managerItem.isSelect = enable; } @@ -475,7 +550,9 @@ request.roomId = roomId; request.userId = targetUid; request.notifyExt = [@{@"reason":@"kick",@"account":targetUid,@"handleUid":uid} toJSONString]; + @kWeakify(self); [[NIMSDK sharedSDK].chatroomManager kickMember:request completion:^(NSError * _Nullable error) { + @kStrongify(self); [[self getView] makeKickUserFinish:error]; }]; } @@ -483,10 +560,50 @@ /// 超管踢管理员 /// @param targetNick 目标用户的昵称 /// @param cardInfo 用户信息 -- (void)superAdminKickUser:(NSString *)targetNick cardInfo:(XPUserCardInfoModel *)cardInfo { +- (void)superAdminKickUser:(NSString *)targetNick cardInfo:(XPUserCardInfoModel *)cardInfo appAdmin:(UserInfoModel *)appAdmin { NSString * targetUid = cardInfo.uid; NSString * roomId = [NSString stringWithFormat:@"%ld", cardInfo.roomInfo.roomId]; + if (appAdmin) { + for (GuildSuperAdminInfoModel *manager in cardInfo.superMangerList) { + if ([manager.uid isEqualToString:@(appAdmin.uid).stringValue]) { + [self superAdminKickUser:targetNick cardInfo:cardInfo appAdmin:nil]; + return; + } + } + + @kWeakify(self); + [Api superAdminHandleUser:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + @kStrongify(self); + [self superAdminKickUser:targetNick cardInfo:cardInfo appAdmin:nil]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + @kStrongify(self); + [[self getView] makeKickUserFinish:[NSError errorWithDomain:msg code:code userInfo:nil]]; + }] roomUid:@(cardInfo.roomInfo.uid).stringValue targetUid:@(appAdmin.uid).stringValue opt:@"1" isSet:@(YES)]; + +// [self superAdminHandleUser:@"" opt:@"1" roomUid:@(cardInfo.roomInfo.uid).stringValue isSet:YES]; + + +// NSString * uid = [[AccountInfoStorage instance] getUid]; +// NIMChatroomMemberUpdateRequest *request = [[NIMChatroomMemberUpdateRequest alloc]init]; +// request.roomId = roomId; +// request.userId = @(appAdmin.uid).stringValue; +// request.enable = YES; +// @kWeakify(self); +// [[NIMSDK sharedSDK].chatroomManager markMemberManager:request completion:^(NSError * _Nullable error) { +// @kStrongify(self); +// if (error == nil) { +//// self.managerItem.isSelect = enable; +// [self superAdminKickUser:targetNick cardInfo:cardInfo appAdmin:nil]; +// } else { +// [[self getView] makeKickUserFinish:error]; +// } +// }]; + return; + } + + @kWeakify(self); [[self rac_queryChatRoomMember:targetUid roomId:roomId] subscribeNext:^(id _Nullable x) { + @kStrongify(self); NIMChatroomMember * member = x; if (member == nil) {return;} if (member.type == NIMChatroomMemberTypeManager) { @@ -601,8 +718,10 @@ /// @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户 /// @param roomUid 房主的uid - (void)superAdminHandleUser:(NSString *)targetUid opt:(NSString *)opt roomUid:(NSString *)roomUid isSet:(BOOL)isSet{ + @kWeakify(self); [Api superAdminHandleUser:[self createHttpCompletion:^(BaseModel * _Nonnull data) { - [[self getView] superAdminHandleUserSuccess:opt]; + @kStrongify(self); + [[self getView] superAdminHandleUserSuccess:opt isSet:isSet]; }] roomUid:roomUid targetUid:targetUid opt:opt isSet:@(isSet)]; } diff --git a/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h b/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h index 13ed20d5..4669a26e 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h +++ b/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h @@ -42,7 +42,7 @@ NS_ASSUME_NONNULL_BEGIN ///选择心动成功 - (void)roomDatingPickHeartUserSuccess; ///超管处理用户操作成功 -- (void)superAdminHandleUserSuccess:(NSString *)opt; +- (void)superAdminHandleUserSuccess:(NSString *)opt isSet:(BOOL)isset; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/UserRoomCardViewController.h b/YuMi/Modules/YMRoom/View/UserCard/View/UserRoomCardViewController.h index bab5a67b..86a7b91f 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/View/UserRoomCardViewController.h +++ b/YuMi/Modules/YMRoom/View/UserCard/View/UserRoomCardViewController.h @@ -12,7 +12,10 @@ NS_ASSUME_NONNULL_BEGIN @interface UserRoomCardViewController : MvpViewController -- (instancetype)initWithUser:(XPUserCardInfoModel *)cardInfo; +@property(nonatomic, copy) NSArray *roomSuperAdminList; + +- (instancetype)initWithUser:(XPUserCardInfoModel *)cardInfo controlUser:(UserInfoModel *)meInfo; + @end diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/UserRoomCardViewController.m b/YuMi/Modules/YMRoom/View/UserCard/View/UserRoomCardViewController.m index 5354f9be..82b46ede 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/View/UserRoomCardViewController.m +++ b/YuMi/Modules/YMRoom/View/UserCard/View/UserRoomCardViewController.m @@ -29,9 +29,6 @@ #import "SuperBlockViewController.h" #import "XPSkillCardPlayerManager.h" -// TODO: 移除房主位 | 19 mic Boss 位判断 | 全麦位 svga 压力测试 - - @interface Custom19MicLayout : UICollectionViewLayout @property (nonatomic, strong) NSMutableArray *attributesArray; @@ -1060,6 +1057,8 @@ @property(nonatomic, strong) UIActivityIndicatorView *loading; +@property(nonatomic, strong) UserInfoModel *controlUserInfo; + @end @implementation UserRoomCardViewController @@ -1068,10 +1067,11 @@ return [[XPUserCardPresenter alloc] init]; } -- (instancetype)initWithUser:(XPUserCardInfoModel *)cardInfo { +- (instancetype)initWithUser:(XPUserCardInfoModel *)cardInfo controlUser:(nonnull UserInfoModel *)meInfo { if (self = [super init]) { self.modalPresentationStyle = UIModalPresentationOverFullScreen; self.cardInfo = cardInfo; + self.controlUserInfo = meInfo; } return self; } @@ -1106,7 +1106,8 @@ [self.view insertSubview:self.vipBGImageView atIndex:0]; [self.vipBGImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.leading.trailing.mas_equalTo(self.collectionView); + make.top.mas_equalTo(self.collectionView).offset(0); + make.leading.trailing.mas_equalTo(self.collectionView).offset(0); make.height.mas_equalTo(self.collectionView.mas_height); }]; @@ -1132,7 +1133,7 @@ } - (void)loadFunctionsItem { - [self.presenter getFunctionItemsByUserInfo:self.cardInfo]; + [self.presenter getFunctionItemsByUserInfo:self.cardInfo me:self.controlUserInfo]; } - (BOOL)configRoomDatingPickHeart { @@ -1165,13 +1166,7 @@ [self dismissViewControllerAnimated:YES completion:nil]; } -- (void)handleTapItem:(XPUserCardItemModel *)item { - -#if DEBUG - [TTPopup popupView:[self managerLimitToast] style:TTPopupStyleAlert]; - return; -#endif - +- (void)handleTapItem:(XPUserCardItemModel *)item { NSString * roomId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId]; NSString * roomUid = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.uid]; @@ -1400,9 +1395,10 @@ if (self.userInfoModel.userVipInfoVO.preventKick && self.userInfoModel.uid != [AccountInfoStorage instance].getUid.integerValue) { NSString *message = [NSString stringWithFormat:YMLocalizedString(@"UserCard_1.0.17_0"), @(self.userInfoModel.userVipInfoVO.vipLevel)]; - [TTPopup alertWithMessage:message confirmHandler:^{ - } cancelHandler:^{ - }]; + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.message = message; + config.actionStyle = TTAlertActionConfirmStyle; + [TTPopup alertWithConfig:config confirmHandler:^{} cancelHandler:^{}]; } else { NSString * roomId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId]; if ([self isInSudGame:self.cardInfo.uid]) { @@ -1414,7 +1410,7 @@ [TTPopup alertWithConfig:config confirmHandler:^{ @kStrongify(self); if ([self isSuperUser]) { - [self.presenter superAdminKickUser:self.userInfoModel.nick cardInfo:self.cardInfo]; + [self.presenter superAdminKickUser:self.userInfoModel.nick cardInfo:self.cardInfo appAdmin:self.controlUserInfo]; } else { [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; } @@ -1429,7 +1425,7 @@ [TTPopup alertWithConfig:config confirmHandler:^{ @kStrongify(self); if ([self isSuperUser]) { - [self.presenter superAdminKickUser:self.userInfoModel.nick cardInfo:self.cardInfo]; + [self.presenter superAdminKickUser:self.userInfoModel.nick cardInfo:self.cardInfo appAdmin:self.controlUserInfo]; } else { [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; } @@ -1568,6 +1564,9 @@ meIsSuperAdmin = YES; } } + if (!meIsSuperAdmin) { + meIsSuperAdmin = self.controlUserInfo.platformRole == 1; + } return meIsSuperAdmin; } @@ -1651,7 +1650,6 @@ #pragma mark - - (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { self.userInfoModel = userInfo; - self.avatar.userInfo = userInfo; @kWeakify(self); [self.avatar setHandleTapAvatar:^{ @@ -1688,6 +1686,9 @@ if (videoUrl.length) { [self.topMP4View setMute:YES]; [self.topMP4View playHWDMP4:videoUrl repeatCount:-1 delegate:nil]; + [self.vipBGImageView mas_updateConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(self.collectionView).offset(20); + }]; } } failureBlock:^(NSError * _Nullable error) { }]; @@ -1708,7 +1709,6 @@ NSMutableArray *temp_1 = @[].mutableCopy; if (self.upMicFlag) { - CGRect r_1 = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight - kGetScaleWidth(376)); CGRect r_2 = CGRectMake(0, kGetScaleWidth(376), KScreenWidth, KScreenHeight - kGetScaleWidth(376)); UserRoomMicPositionView *view = [[UserRoomMicPositionView alloc] initWithFrame:r_1]; @@ -1739,7 +1739,7 @@ [temp_1 insertObject:cardModel atIndex:0]; } self.datasource = temp_1.copy; - [self.presenter getMicroFunctionItemsByUserInfo:self.cardInfo]; + [self.presenter getMicroFunctionItemsByUserInfo:self.cardInfo me:self.controlUserInfo]; } else { NSMutableArray *temp_2 = @[].mutableCopy; for (XPUserCardItemModel *model in array) { @@ -1754,7 +1754,7 @@ } self.datasource = temp_1.copy; self.micActions = temp_2.copy; - [self.presenter getMicroFunctionItemsByUserInfo:self.cardInfo]; + [self.presenter getMicroFunctionItemsByUserInfo:self.cardInfo me:self.controlUserInfo]; } [self.collectionView reloadData]; } @@ -1804,6 +1804,12 @@ - (void)markUserManagerFinish:(XPUserCardItemModel *)item error:(NSError *)error { if (error == nil) { + if (item.isSelect) { + [XNDJTDDLoadingTool showSuccessWithMessage:[NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_6"), self.userInfoModel.nick]]; + } else { + [XNDJTDDLoadingTool showSuccessWithMessage:[NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_7"), self.userInfoModel.nick]]; + } + [self.micActions enumerateObjectsUsingBlock:^(XPUserCardItemModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if (item.type == obj.type) { obj.isSelect = item.isSelect; @@ -1817,9 +1823,36 @@ - (void)makeKickUserFinish:(NSError *)error { if (error == nil && self.userInfoModel) { [self dismissViewControllerAnimated:YES completion:nil]; - [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BeKicked]; + if (self.controlUserInfo.platformRole == 1) { + // 超管操作 + NIMMessage * message = [[NIMMessage alloc] init]; + AttachmentModel * attachMent = [[AttachmentModel alloc] init]; + attachMent.first = CustomMessageType_Hall_Super_Admin; + attachMent.second = Custom_Message_Sub_Hall_Super_Admin_Kick_Out_Room; + attachMent.data = @{ + @"micNumber": self.cardInfo.position, + @"handleUid": @(self.controlUserInfo.uid).stringValue, + @"handleNick": self.controlUserInfo.nick, + @"targetUid": @(self.userInfoModel.uid).stringValue, + @"targetNick": self.userInfoModel.nick, + }; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachMent; + message.messageObject = object; + + //构造会话 + NSString * sessionId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId]; + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { + + }]; + } else { + [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BeKicked]; + } } else if (error.code == 404) { [self showErrorToast:YMLocalizedString(@"XPUserCardViewController1")]; + } else { + [self showErrorToast:error.domain]; } } @@ -1836,9 +1869,34 @@ } - (void)kickDownMicroSuccess { - if (self.cardInfo.uid.integerValue != [AccountInfoStorage instance].getUid.integerValue) { + if (self.controlUserInfo.platformRole == 1) { + // 超管操作 + NIMMessage * message = [[NIMMessage alloc] init]; + AttachmentModel * attachMent = [[AttachmentModel alloc] init]; + attachMent.first = CustomMessageType_Hall_Super_Admin; + attachMent.second = Custom_Message_Sub_Hall_Super_Admin_Kick_Down_Mic; + attachMent.data = @{ + @"micNumber": self.cardInfo.position, + @"handleUid": @(self.controlUserInfo.uid).stringValue, + @"handleNick": self.controlUserInfo.nick, + @"targetUid": @(self.userInfoModel.uid).stringValue, + @"targetNick": self.userInfoModel.nick, + }; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachMent; + message.messageObject = object; + + //构造会话 + NSString * sessionId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId]; + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { + + }]; + } + else if (self.cardInfo.uid.integerValue != [AccountInfoStorage instance].getUid.integerValue) { [self sendCustomMessageKickOrBlackUser:CustomMessageType_Queue second:Custom_Message_Sub_Queue_Kick]; } + [self dismissViewControllerAnimated:YES completion:nil]; } @@ -1879,16 +1937,26 @@ } }]; } - [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BlackList]; + if (self.controlUserInfo.platformRole == 1) { + [self sendCustomMessageKickOrBlackUser:CustomMessageType_Hall_Super_Admin second:Custom_Message_Sub_Hall_Super_Admin_Mark_Black]; + } else { + [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BlackList]; + } } else if (error.code == 417) { [self showErrorToast:YMLocalizedString(@"XPUserCardViewController2")]; } } -- (void)superAdminHandleUserSuccess:(NSString *)opt { - [self showSuccessToast:YMLocalizedString(@"XPUserCardViewController4")]; +- (void)superAdminHandleUserSuccess:(NSString *)opt isSet:(BOOL)isset{ [self dismissViewControllerAnimated:YES completion:nil]; - if ([opt isEqualToString:@"-1"]) {///拉黑 + + if ([opt isEqualToString:@"1"]) { + if (isset) { + [XNDJTDDLoadingTool showSuccessWithMessage:[NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_6"), self.userInfoModel.nick]]; + } else { + [XNDJTDDLoadingTool showSuccessWithMessage:[NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_7"), self.userInfoModel.nick]]; + } + }else if ([opt isEqualToString:@"-1"]) {///拉黑 if (self.cardInfo.position.length > 0) { NIMChatroomQueueRemoveRequest *request = [[NIMChatroomQueueRemoveRequest alloc]init]; request.key = self.cardInfo.position; @@ -1898,32 +1966,63 @@ } }]; } - [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BlackList]; + + if (self.controlUserInfo.platformRole == 1) { + [self sendCustomMessageKickOrBlackUser:CustomMessageType_Hall_Super_Admin second:Custom_Message_Sub_Hall_Super_Admin_Mark_Black]; + } else { + [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BlackList]; + } + [XNDJTDDLoadingTool showSuccessWithMessage:[NSString stringWithFormat:YMLocalizedString(@"1.0.34_text_7"), self.userInfoModel.nick]]; } } ///拉黑/踢出房间 发送自定义消息 - (void)sendCustomMessageKickOrBlackUser:(int)first second:(int)second { - RoomInfoModel * roomInfo = self.cardInfo.roomInfo; - XPKickUserModel *notifyModel = [[XPKickUserModel alloc] init]; - notifyModel.handleNick = self.cardInfo.nick; - notifyModel.handleUid = [AccountInfoStorage instance].getUid.integerValue; - notifyModel.targetUid = self.cardInfo.uid.integerValue; - notifyModel.targetNick = self.userInfoModel.nick; - notifyModel.uid = self.cardInfo.uid.integerValue; - AttachmentModel *attachment = [[AttachmentModel alloc] init]; - attachment.first = first; - attachment.second = second; - attachment.data = [notifyModel model2dictionary]; - NSString * sessionId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; + if (self.controlUserInfo.platformRole == 1 && first == CustomMessageType_Hall_Super_Admin) { + // 超管操作 + NIMMessage * message = [[NIMMessage alloc] init]; + AttachmentModel * attachMent = [[AttachmentModel alloc] init]; + attachMent.first = CustomMessageType_Hall_Super_Admin; + attachMent.second = second; + attachMent.data = @{ + @"micNumber": self.cardInfo.position, + @"handleUid": @(self.controlUserInfo.uid).stringValue, + @"handleNick": self.controlUserInfo.nick, + @"targetUid": @(self.userInfoModel.uid).stringValue, + @"targetNick": self.userInfoModel.nick, + }; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachMent; + message.messageObject = object; + + //构造会话 + NSString * sessionId = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.roomId]; + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { + + }]; + } else { + RoomInfoModel * roomInfo = self.cardInfo.roomInfo; + XPKickUserModel *notifyModel = [[XPKickUserModel alloc] init]; + notifyModel.handleNick = self.cardInfo.nick; + notifyModel.handleUid = [AccountInfoStorage instance].getUid.integerValue; + notifyModel.targetUid = self.cardInfo.uid.integerValue; + notifyModel.targetNick = self.userInfoModel.nick; + notifyModel.uid = self.cardInfo.uid.integerValue; + AttachmentModel *attachment = [[AttachmentModel alloc] init]; + attachment.first = first; + attachment.second = second; + attachment.data = [notifyModel model2dictionary]; + NSString * sessionId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; - NIMMessage *message = [[NIMMessage alloc]init]; - NIMCustomObject *object = [[NIMCustomObject alloc] init]; - object.attachment = attachment; - message.messageObject = object; - //构造会话 - NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; - [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + NIMMessage *message = [[NIMMessage alloc]init]; + NIMCustomObject *object = [[NIMCustomObject alloc] init]; + object.attachment = attachment; + message.messageObject = object; + //构造会话 + NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; + [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil]; + } } //加入黑名单 diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m index dfed3fcd..4c9986a6 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m +++ b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m @@ -557,7 +557,7 @@ [self initSubViewConstraints]; [self initEvent]; - [self.presenter getFunctionItemsByUserInfo:self.cardInfo]; +// [self.presenter getFunctionItemsByUserInfo:self.cardInfo]; self.avatarImageView.imageUrl = userInfo.avatar; // self.nobleImageView.imageUrl = userInfo.userInfoCardPic; @@ -719,12 +719,12 @@ } - (void)onGetFunctionArraySccess:(NSArray *)array { - if (array.count <= 0) { - [self.presenter getMicroFunctionItemsByUserInfo:self.cardInfo]; - return; - } - self.datasource = array; - [self.presenter getMicroFunctionItemsByUserInfo:self.cardInfo]; +// if (array.count <= 0) { +// [self.presenter getMicroFunctionItemsByUserInfo:self.cardInfo me:self.control]; +// return; +// } +// self.datasource = array; +// [self.presenter getMicroFunctionItemsByUserInfo:self.cardInfo]; } -(void)onGetFollowDataSccess{ @@ -1009,33 +1009,11 @@ if (self.targetUserInfo.userVipInfoVO.preventKick && self.targetUserInfo.uid != [AccountInfoStorage instance].getUid.integerValue) { //2、判断是否为管理员操作 -// if (self.cardInfo.roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue) { -// [self showErrorToast:[NSString stringWithFormat:YMLocalizedString(@"XPUserCardViewController5"), self.targetUserInfo.userVipInfoVO.vipName]]; -// } else {//房主操作 NSString *message = [NSString stringWithFormat:YMLocalizedString(@"UserCard_1.0.17_0"), @(self.targetUserInfo.userVipInfoVO.vipLevel)]; [TTPopup alertWithMessage:message confirmHandler:^{ } cancelHandler:^{ }]; -// TTAlertConfig *config = [[TTAlertConfig alloc] init]; -// config.title = @""; -// config.message = message; -// [TTPopup alertWithConfig:config confirmHandler:^{ -// if ([self isInSudGame:self.cardInfo.uid]) { -// NSString *message = YMLocalizedString(@"XPUserCardViewController7"); -// TTAlertConfig *config = [[TTAlertConfig alloc] init]; -// config.title = @""; -// config.message = message; -// [TTPopup alertWithConfig:config confirmHandler:^{ -// [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; -// } cancelHandler:^{ -// }]; -// } else { -// [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; -// } -// } cancelHandler:^{ -// }]; -// } return; } if ([self isInSudGame:self.cardInfo.uid]) { @@ -1045,7 +1023,7 @@ config.message = message; [TTPopup alertWithConfig:config confirmHandler:^{ if (meIsSuperAdmin) { - [self.presenter superAdminKickUser:self.targetUserInfo.nick cardInfo:self.cardInfo]; +// [self.presenter superAdminKickUser:self.targetUserInfo.nick cardInfo:self.cardInfo isAppAdmin:NO]; } else { [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; } @@ -1058,7 +1036,7 @@ config.message = message; [TTPopup alertWithConfig:config confirmHandler:^{ if (meIsSuperAdmin) { - [self.presenter superAdminKickUser:self.targetUserInfo.nick cardInfo:self.cardInfo]; +// [self.presenter superAdminKickUser:self.targetUserInfo.nick cardInfo:self.cardInfo isAppAdmin:NO]; } else { [self.presenter makeKickUser:self.cardInfo.uid roomId:roomId]; } @@ -1529,7 +1507,7 @@ if (!_officialImageView) { _officialImageView = [[UIImageView alloc] init]; _officialImageView.userInteractionEnabled = YES; - _officialImageView.image = [UIImage imageNamed:@"common_offical"]; + _officialImageView.image = [UIImage imageNamed:@"app_admin_icon"]; _officialImageView.hidden = YES; } return _officialImageView; diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.m b/YuMi/Modules/YMRoom/View/XPRoomViewController.m index dcfa1d27..4ef61312 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomViewController.m +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.m @@ -79,7 +79,6 @@ #import "LittleGameStageView.h" #import "LittleGameScrollStageView.h" #import "XPRoomLittleGameContainerView.h" -#import "XPUserCardViewController.h" #import "PIRoomEnterRedPacketView.h" #import "XPIAPRechargeViewController.h" #import "XPCandyTreeInsufficientBalanceView.h" @@ -96,6 +95,9 @@ #import "RoomSideMenu.h" #import "RoomResourceManager.h" + +//#import "XPMineHallAnchorIncomeStatisViewController.h" + UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey; UIKIT_EXTERN NSString * const kRoomMiniNotificationKey; UIKIT_EXTERN NSString * kNewUserRechargeKey; @@ -120,12 +122,9 @@ CountDownHelperDelegate, PIRoomEnterRedPacketViewDelegate, XPReceiveRedPacketViewDelegate, XPCandyTreeInsufficientBalanceViewDelegate> -{ - NSTimer * timer; -} + ///背景 @property (nonatomic,strong) XPRoomBackContainerView *backContainerView; - ///个播上下切换view @property (nonatomic, strong) AnchorRoomScrollView *anchorScrollView; ///房间信息 @@ -291,10 +290,6 @@ XPCandyTreeInsufficientBalanceViewDelegate> - (void)dealloc { NSLog(@"房间销毁了"); - if(timer != nil){ - [timer fire]; - timer = nil; - } [[RoomBoomManager sharedManager] leaveRoom]; @@ -353,7 +348,6 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self.presenter getRoomSuperAdmin:self.roomUid]; [XPSkillCardPlayerManager shareInstance].isInRoom = YES; - [self startCheckOnlineCountTimer]; [CountDownHelper shareHelper].delegate = self; @@ -367,9 +361,10 @@ XPCandyTreeInsufficientBalanceViewDelegate> // [b addTarget:self action:@selector(test) forControlEvents:UIControlEventTouchUpInside]; //#endif } -- (void)test { - -} +//- (void)test { +// XPMineHallAnchorIncomeStatisViewController *vc = [[XPMineHallAnchorIncomeStatisViewController alloc] init]; +// [self.navigationController pushViewController:vc animated:YES]; +//} - (void)handleGiftComboCallBack { @kWeakify(self); @@ -465,14 +460,6 @@ XPCandyTreeInsufficientBalanceViewDelegate> } } -- (void)startCheckOnlineCountTimer { - @kWeakify(self); - timer = [XPWeakTimer scheduledTimerWithTimeInterval:30 block:^(id userInfo) { - @kStrongify(self); - [self getOnlineCount]; - } userInfo:nil repeats:YES]; -} - #pragma mark - MSSessionReleaseHeadlinesViewDelegate -(void)releaseHeadlinesWithText:(NSString *)text{ XPCandyTreeInsufficientBalanceView *balanceView = [[XPCandyTreeInsufficientBalanceView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; @@ -801,6 +788,9 @@ XPCandyTreeInsufficientBalanceViewDelegate> if (self.userInfo.userVipInfoVO.enterHide) {///VIP隐身进房,不发座驾消息 return; } + if (self.userInfo.platformRole == 1) { + return; + } if (self.userInfo.viewUrl.length > 0) { [att safeSetObject:self.userInfo.nick forKey:@"nick"]; [att safeSetObject:self.userInfo.viewUrl forKey:@"viewUrl"]; @@ -1204,6 +1194,11 @@ XPCandyTreeInsufficientBalanceViewDelegate> *stop = YES; } }]; + + if (!isSuperAdmin) { + isSuperAdmin = self.userInfo.platformRole == 1; + } + if (!isSuperAdmin) { XPRoomSettingInputView * titleView = [[XPRoomSettingInputView alloc] init]; titleView.maxCount = 15; @@ -1250,6 +1245,9 @@ XPCandyTreeInsufficientBalanceViewDelegate> *stop = YES; } }]; + if (!isSuperAdmin) { + isSuperAdmin = self.userInfo.platformRole == 1; + } if (!isSuperAdmin) { XPRoomSettingInputView * titleView = [[XPRoomSettingInputView alloc] init]; titleView.maxCount = 15; @@ -1394,7 +1392,7 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self.functionView onRoomMiniEntered]; [self.functionView onRoomEntered]; -// [self.menuContainerView onRoomMiniEntered]; + [self.menuContainerView onRoomMiniEntered]; // PK 状态下,从最小化进房需要模仿初始化房间,丢 2 次 roominfo 进去 functionView if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode || self.roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { @@ -1453,6 +1451,7 @@ XPCandyTreeInsufficientBalanceViewDelegate> self.userInfo = userInfo; [self requestBoomData]; + [self getOnlineCount]; @kWeakify(self); dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_global_queue(0, 0), ^{ @@ -1495,7 +1494,8 @@ XPCandyTreeInsufficientBalanceViewDelegate> [XNDJTDDLoadingTool hideHUDInView:self.navigationController.view]; self.roomInfo = roomInfo; - + [XPSkillCardPlayerManager shareInstance].is9Mic = roomInfo.type == RoomType_Game; + if (roomInfo.type == RoomType_Anchor) { [self handleInitAnchorRoom]; [self showAnchorScrollTipView]; @@ -1518,8 +1518,7 @@ XPCandyTreeInsufficientBalanceViewDelegate> - (void)enterRoomSuccess:(NIMChatroom *)chatRoom { [XNDJTDDLoadingTool hideHUDInView:self.navigationController.view]; - // room/get中的房间在线人数 是定时更新的 不是及时刷新 - [self getOnlineCount]; + [self.stageView onRoomEntered]; [self.functionView onRoomEntered]; @@ -1549,10 +1548,24 @@ XPCandyTreeInsufficientBalanceViewDelegate> [Api requestRoomOnlineUserList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { @kStrongify(self); if(code == 200){ + NSMutableArray *temp = @[].mutableCopy; NSArray *list = [XPMessageRemoteExtModel modelsWithArray:data.data]; - self.roomInfo.onlineNum = list.count; - [self.functionView updateOnlineCount:[NSString stringWithFormat:@"%ld",list.count] countList:list isUpdateCount:NO]; + for (XPMessageRemoteExtModel *model in list) { + if (model.platformRole != 1) { + [temp addObject:model]; + } + } + self.roomInfo.onlineNum = temp.count; + [self.functionView updateOnlineCount:[NSString stringWithFormat:@"%ld",temp.count] countList:temp.copy isUpdateCount:NO]; } + // 更安全的輪詢 + @kWeakify(self); + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(60 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + @kStrongify(self); + if (self) { + [self getOnlineCount]; + } + }); } roomUid:self.roomUid]; } ///请求房间超管成功 @@ -1648,7 +1661,9 @@ XPCandyTreeInsufficientBalanceViewDelegate> ///个播房初始化一些操作 - (void)handleInitAnchorRoom { 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.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) { @@ -1897,16 +1912,16 @@ XPCandyTreeInsufficientBalanceViewDelegate> newRoomInfo.hadChangeRoomType = self.roomInfo.type != newRoomInfo.type; BOOL anchorToOther = newRoomInfo.type != RoomType_Anchor && self.roomInfo.type == RoomType_Anchor;//个播变其他房 self.roomInfo = newRoomInfo; - + [self.backContainerView onRoomUpdate]; - + self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate; if (self.roomInfo.type == RoomType_Anchor && self.roomInfo.hadChangeRoomType) {///从其他房变为个播房 [self handleInitAnchorRoom]; [self showAnchorScrollTipView]; } else if (anchorToOther) { [self __removeAllViews]; - + [self.view addSubview:self.backContainerView]; [self.view addSubview:self.stageView]; [self.view addSubview:self.messageContainerView]; @@ -1917,7 +1932,7 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self.view bringSubviewToFront:self.menuContainerView]; [self.view addSubview:self.functionView]; [self.view bringSubviewToFront:self.animationView]; - + [self initSubViewConstraints]; [self changeStageViewOnRoomUpdate]; [self.stageView onRoomUpdate]; @@ -1994,6 +2009,21 @@ XPCandyTreeInsufficientBalanceViewDelegate> } } break; + case NIMChatroomEventTypeAddManager: { + NIMChatroomNotificationMember *targets = [content.targets firstObject]; + if (targets.userId.integerValue == self.userInfo.uid) { + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"1.0.34_text_15")]; + } + + } + break; + case NIMChatroomEventTypeRemoveManager: { + NIMChatroomNotificationMember *targets = [content.targets firstObject]; + if (targets.userId.integerValue == self.userInfo.uid) { + [XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"1.0.34_text_16")]; + } + } + break; default: break; } @@ -2257,7 +2287,10 @@ XPCandyTreeInsufficientBalanceViewDelegate> return; } - if (error) return; + if (error) { + NSLog(@"%@", error); + return; + }; if (message.messageType == NIMMessageTypeCustom) { NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { diff --git a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.h b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.h deleted file mode 100644 index ad017475..00000000 --- a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// PIFullScreenBannerAnimation.h -// YuMi -// -// Created by duoban on 2023/7/12. -// - -#import -#import "PIBaseAnimationViewModel.h" -NS_ASSUME_NONNULL_BEGIN - -@interface PIFullScreenBannerAnimation : NSObject -- (void)receiveGift:(GiftReceiveInfoModel *)receiveInfo; -- (void)receiveCandyTreeGiftHighLevel:(AttachmentModel *)attatchment; -- (void)receiveLuckyGiftBigPrize:(AttachmentModel *)attachment; --(void)receiveRoomGraffitiStarKitchen:(AttachmentModel *)attacment; -- (void)receiveTreasureFairyGiftHighLevel:(AttachmentModel *)attatchment ; --(void)receiveTarotBanner:(AttachmentModel *)attachment; --(void)receiveCommonH5Banner:(AttachmentModel *)attachment; -- (void)receiveAnchorHourRank:(AttachmentModel *)attachment; -- (void)receiveNobleLevelUp:(AttachmentModel *)attachment; --(void)receiveRoomGeneralFloatingScreen:(AttachmentModel *)attacment; -@end - -NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m b/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m deleted file mode 100644 index 5a18c686..00000000 --- a/YuMi/Modules/YMTabbar/View/PIFullScreenBannerAnimation.m +++ /dev/null @@ -1,894 +0,0 @@ -// -// PIFullScreenBannerAnimation.m -// YuMi -// -// Created by duoban on 2023/7/12. -// -#import "XPRoomAnimationView.h" -///Third -#import -#import -#import -#import -#import "QGVAPConfigModel.h" -#import "UIView+VAP.h" - -#import -///Tool -#import "XPGiftStorage.h" -#import "YUMIMacroUitls.h" -#import "ThemeColor+Room.h" -#import "NetImageView.h" -#import "XPRoomGiftAnimationParser.h" -#import "XCCurrentVCStackManager.h" -#import "AccountInfoStorage.h" -#import "ClientConfig.h" -///Model -#import "MicroQueueModel.h" -#import "MicroStateModel.h" -#import "UserInfoModel.h" -#import "GiftReceiveInfoModel.h" -#import "GiftInfoModel.h" -#import "RoomInfoModel.h" -#import "AttachmentModel.h" -#import "XPGiftBigPrizeModel.h" -#import "XPGiftBannerUserInfoModel.h" -#import "GiftReceiveInfoModel.h" -#import "XPMessageRemoteExtModel.h" -#import "DatingInfoModel.h" -#import "AcrossRoomPKPrizeModel.h" -#import "RoomHalfHourRankModel.h" -#import "ClientConfig.h" -///View - -#import "XPRoomGiftBroadcastView.h" -#import "XPRoomCandyGiftView.h" -#import "XPRoomDatingAnimationView.h" -#import "XPRoomNobleLevelUpView.h" -#import "QGVAPWrapView.h" -#import "XPAcrossRoomPKPrizeView.h" -#import "XPRoomViewController.h" -#import "XPRoomAnchorRankBannerView.h" -#import "XPRoomEnterHideTipView.h" -#import "XPRoomLuckyBigPrizeView.h" -#import "XPRoomGiftCompoundView.h" -#import "XPSailingAnimationView.h" -#import "XPRoomGraffitiGiftAnimationView.h" -#import "XPRoomStarKitchenBannerView.h" -#import "XPWebViewController.h" -#import "PIBaseAnimationViewModel.h" -#import "PIFullScreenBannerAnimation.h" -#import "XPSkillCardPlayerManager.h" -#import "XPTreasureFairyGiftView.h" -#import "XPRoomTarrowBannerView.h" -#import "PIRoomGiftBroadcastWindow.h" -#import "PIUniversalBannerModel.h" -#import "PIUniversalBannerView.h" -@interface PIFullScreenBannerAnimation() -///礼物飘屏 PresentAchieveAbstractMatrix -@property(nonatomic,strong) NSMutableArray *animationListA; -///玩法飘屏 YUMIPresentBigCaptureMatrix -@property(nonatomic,strong) NSMutableArray *animationListB; -///礼物飘屏正在播放中 -@property(nonatomic,assign) BOOL isPlayOfA; -///玩法飘屏正在播放中 -@property(nonatomic,assign) BOOL isPlayOfB; -///animationListA播放完后,如果有animationListB,那么要在animationListA的位置上播放animationListB,只播放一次 -//@property(nonatomic,assign) BOOL isAnimationListAFinish; -@property(nonatomic,assign) CGFloat broadCastHieght; - -@property (nonatomic, strong) NetImageView *imageLoader; - -@end -@implementation PIFullScreenBannerAnimation - - -- (void)createGiftBroadcastViewAnimation:(GiftReceiveInfoModel *)giftModel { - self.isPlayOfA = YES; - XPRoomGiftBroadcastView * view = [[XPRoomGiftBroadcastView alloc] init]; - view.delegate = self; - view.frame = CGRectMake(KScreenWidth, 35 + statusbarHeight, KScreenWidth, kGetScaleWidth(69)); - view.broadcastModel = giftModel; - [kWindow addSubview:view]; - [self beginGiftBraodcastViewAnimation:view notifyStaySecond:giftModel.notifyStaySecond]; -} - -- (void)beginGiftBraodcastViewAnimation:(XPRoomGiftBroadcastView *)view notifyStaySecond:(int)notifyStaySecond{ - CGFloat startTime = notifyStaySecond > 0 ? notifyStaySecond : 3.0; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0 + view.frame.size.width / 2, view.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - [self removeGiftBroadcastOutAnimation:view stayTime:startTime]; - } - }]; - [view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"]; -} - -- (void)removeGiftBroadcastOutAnimation:(XPRoomGiftBroadcastView *)view stayTime:(CGFloat)stayTime{ - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, view.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + stayTime; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [view removeFromSuperview]; - self.isPlayOfA = NO; - if (self.animationListA.count > 0) { - [self.animationListA removeObjectAtIndex:0]; - } - if(self.animationListB.count > 0){ -// self.isAnimationListAFinish = YES; - [self playAnimationWithModel]; - return; - } - if (self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { - [self createGiftBroadcastViewAnimation:self.animationListA.firstObject]; - } - } - }]; - - [view pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; -} - - -///点击了进入房间 -- (void)xPRoomGiftBroadcastView:(XPRoomGiftBroadcastView *)view enterRoom:(NSString *)roomUid roomName:(NSString *)roomName{ - id isShowBroadcastView = [[NSUserDefaults standardUserDefaults]valueForKey:@"kSaveBrooadcastSelectState"]; - if(isShowBroadcastView == nil){ - PIRoomGiftBroadcastWindow *broadcastView = [[PIRoomGiftBroadcastWindow alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - broadcastView.roodUid = roomUid; - broadcastView.roomName = roomName; - broadcastView.delegate = self; - [kWindow addSubview:broadcastView]; - return; - } - if (roomUid.length > 0) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; - }); - } -} -#pragma mark -PIRoomGiftBroadcastWindowDelegate --(void)confirmLeaveForTheRoom:(NSString *_Nonnull)roomUid{ - if (roomUid.length > 0) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; - }); - } -} -///收到了礼物 -- (void)receiveGift:(GiftReceiveInfoModel *)receiveInfo { - ///CPU警告的时候 需要停止接收动画 - GiftReceiveInfoModel *giftNotifyInfo = receiveInfo; - if (self.animationListA.count == 0 && self.isPlayOfB == NO && self.isPlayOfA == NO) { - [self createGiftBroadcastViewAnimation:giftNotifyInfo]; - } - [self.animationListA addObject:giftNotifyInfo]; - -} - --(void)playAnimationACompletion{ - PIBaseAnimationViewModel *model = self.animationListB.firstObject; - if(model.type == GiftBannerType_Lucky){ - [self createBigPrizeAnimation:model]; - }else if (model.type == GiftBannerType_Love){ - [self createCandyTreeBannerAnimation:model]; - }else if(model.type == GiftBannerType_Nobleman){ - [self createNobleLevelUpBannerAnimation:model]; - }else if(model.type == GiftBannerType_kitchen){ - [self createStarKitchenBannerAnimation:model]; - }else if(model.type == GiftBannerType_AnchorHour){ - [self createAnchorHourRankAnimation:model]; - }else if(model.type == GiftBannerType_LicneseHour){ - [self createAnchorHourRankAnimation:model]; - }else if(model.type == GiftBannerType_Fairy){ - [self createTreasureFairyBannerAnimation:model]; - }else if(model.type == GiftBannerType_Tarrow){ - [self createBigPrizeAnimation:model]; - }else if(model.type == GiftBannerType_Common_H5){ - [self createCommonH5BannerAnimation:model]; - } -} - --(void)playAnimationWithModel{ -// if(self.isAnimationListAFinish == YES)return; - if(self.animationListB.count <= 0){ - if(self.animationListA.count > 0 && self.isPlayOfB == NO && self.isPlayOfA == NO){ - [self createGiftBroadcastViewAnimation:self.animationListA.firstObject]; - } - return; - } - if(self.isPlayOfB == YES)return; - PIBaseAnimationViewModel *model = self.animationListB.firstObject; - if(model.type == GiftBannerType_Lucky){ - [self createBigPrizeAnimation:model]; - }else if (model.type == GiftBannerType_Love){ - [self createCandyTreeBannerAnimation:model]; - }else if(model.type == GiftBannerType_Nobleman){ - [self createNobleLevelUpBannerAnimation:model]; - }else if(model.type == GiftBannerType_kitchen){ - [self createStarKitchenBannerAnimation:model]; - }else if(model.type == GiftBannerType_AnchorHour){ - [self createAnchorHourRankAnimation:model]; - }else if(model.type == GiftBannerType_LicneseHour){ - [self createAnchorHourRankAnimation:model]; - }else if(model.type == GiftBannerType_Fairy){ - [self createTreasureFairyBannerAnimation:model]; - }else if(model.type == GiftBannerType_Tarrow){ - [self createBigPrizeAnimation:model]; - }else if(model.type == GiftBannerType_Common_H5){ - [self createCommonH5BannerAnimation:model]; - }else if (model.type == GiftBannerType_General_Floating_Screen){ - [self createGeneralFloatingScreenAnimation:model]; - } -} -#pragma mark - 通用飘屏 --(void)receiveRoomGeneralFloatingScreen:(AttachmentModel *)attacment{ - PIBaseAnimationViewModel *roomGraffiti = [PIBaseAnimationViewModel new]; - roomGraffiti.data = attacment.data; - roomGraffiti.type = GiftBannerType_General_Floating_Screen; - roomGraffiti.first = attacment.first; - roomGraffiti.second = attacment.second; - if(self.animationListB.count == 0 && self.isPlayOfB == NO){ - [self createGeneralFloatingScreenAnimation:roomGraffiti]; - } - [self.animationListB addObject:roomGraffiti]; -} -- (void)createGeneralFloatingScreenAnimation:(PIBaseAnimationViewModel *)attacment{ - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15); - - PIUniversalBannerModel *model = [PIUniversalBannerModel modelWithDictionary:attacment.data]; - BOOL isSvga = [model.resourceType isEqualToString:@"SVGA"]; - __block PIUniversalBannerView *bannerView; - @kWeakify(self); - if (isSvga == YES) { - SVGAParser *parser = [SVGAParser new]; - [parser parseWithURL:[NSURL URLWithString:[model.resourceContent stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) { - @kStrongify(self); - model.videoItem = videoItem; - CGFloat height = kGetScaleWidth(60); - if(videoItem.videoSize.width > 0){ - height = KScreenWidth * videoItem.videoSize.height / videoItem.videoSize.width; - } - bannerView = [[PIUniversalBannerView alloc]initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth, height)]; - [self showGeneralFloatingScreenView:bannerView model:model]; - } failureBlock:^(NSError * _Nonnull error) { - @kStrongify(self); - [bannerView removeFromSuperview]; - self.isPlayOfB = NO; - if(self.animationListB.count > 0){ - [self.animationListB removeObjectAtIndex:0]; - } - [self playAnimationWithModel]; - }]; - }else{ - if (!_imageLoader) { - _imageLoader = [[NetImageView alloc] init]; - } - [self.imageLoader loadImageWithUrl:model.resourceContent completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - @kStrongify(self); - model.image = image; - CGFloat width = image.size.width <= 0 ? kGetScaleWidth(60) : image.size.width; - CGFloat height = image.size.height ; - CGFloat getHeigth = KScreenWidth * height / width; - bannerView = [[PIUniversalBannerView alloc]initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth, getHeigth) ]; - [self showGeneralFloatingScreenView:bannerView model:model]; - } fail:^(NSError * _Nonnull error) { - @kStrongify(self); - self.isPlayOfB = NO; - if(self.animationListB.count > 0){ - [self.animationListB removeObjectAtIndex:0]; - } - [self playAnimationWithModel]; - }]; - } -} --(void)showGeneralFloatingScreenView:(PIUniversalBannerView *)bannerView model:(PIUniversalBannerModel *)model{ - BOOL isSvga = [model.resourceType isEqualToString:@"SVGA"]; - bannerView.isSvga = isSvga; - bannerView.model = model; - bannerView.delegate = self; - [kWindow addSubview:bannerView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:bannerView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(bannerView.frame.size.width / 2, bannerView.center.y)]; - @kWeakify(self); - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, bannerView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, bannerView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [bannerView removeFromSuperview]; - self.isPlayOfB = NO; - if(self.animationListB.count > 0){ - [self.animationListB removeObjectAtIndex:0]; - } - [self playAnimationWithModel]; - } - }]; - [bannerView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [bannerView pop_addAnimation:springAnimation forKey:@"starKitchenOutAnimation"]; -} -#pragma mark - PIUniversalBannerViewDelegate -- (void)pIUniversalBannerView:(PIUniversalBannerView *)view didClick:(PIUniversalBannerModel *)model{ - if (model.skipType == 2){ - [XPRoomViewController openRoom:model.skipContent viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; - }else if (model.skipType == 3){ - XPWebViewController * webVC = [[XPWebViewController alloc] initWithRoomUID:nil]; - webVC.isPush = YES; - webVC.url = model.skipContent; - [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; - } else if (model.skipType == 7) { - // 跳转到指定游戏 - } -} -#pragma mark - 收到h5通用飘屏 --(void)receiveCommonH5Banner:(AttachmentModel *)attachment{ - - PIBaseAnimationViewModel *giftNotifyInfo = [PIBaseAnimationViewModel modelWithJSON:attachment.data]; - giftNotifyInfo.type = GiftBannerType_Common_H5; - giftNotifyInfo.second = attachment.second; - if (self.animationListB.count == 0 && self.isPlayOfB == NO) { - [self createCommonH5BannerAnimation:giftNotifyInfo]; - } - [self.animationListB addObject:giftNotifyInfo]; -} -- (void)createCommonH5BannerAnimation:(PIBaseAnimationViewModel *)attatchment { - - CGFloat kscale = (CGFloat)55 / (CGFloat)375; - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15); - - - XPRoomTarrowBannerView *tarrowVeiw = [[XPRoomTarrowBannerView alloc]initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth , KScreenWidth * kscale)isH5:YES]; - tarrowVeiw.isBig = attatchment.second == Custom_Message_Sub_Common_H5_Advanced; - tarrowVeiw.giftH5Info = attatchment; - [kWindow addSubview:tarrowVeiw]; - - - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:tarrowVeiw.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(tarrowVeiw.frame.size.width / 2, tarrowVeiw.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, tarrowVeiw.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2,tarrowVeiw.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [tarrowVeiw removeFromSuperview]; - self.isPlayOfB = NO; - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; - } -// if(self. isAnimationListAFinish == YES){ -// -// [self playAnimationWithModel]; -// self.isAnimationListAFinish = NO; -// return; -// } - [self playAnimationWithModel]; - } - }]; - [tarrowVeiw pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [tarrowVeiw pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; - - -} -#pragma mark - 收到塔罗飘屏 --(void)receiveTarotBanner:(AttachmentModel *)attachment{ - PIBaseAnimationViewModel *giftNotifyInfo = [PIBaseAnimationViewModel modelWithJSON:attachment.data]; - giftNotifyInfo.type = GiftBannerType_Tarrow; - giftNotifyInfo.second = attachment.second; - if (self.animationListB.count == 0 && self.isPlayOfB == NO) { - [self createTarotBannerAnimation:giftNotifyInfo]; - } - [self.animationListB addObject:giftNotifyInfo]; -} -- (void)createTarotBannerAnimation:(PIBaseAnimationViewModel *)attatchment { - - CGFloat kscale = (CGFloat)55 / (CGFloat)375; - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15); - XPRoomTarrowBannerView *tarrowVeiw = [[XPRoomTarrowBannerView alloc]initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth , KScreenWidth * kscale) isH5:NO]; - tarrowVeiw.isBig = attatchment.second == Custom_Message_Sub_Tarot_Advanced; - tarrowVeiw.giftInfo = attatchment; - [kWindow addSubview:tarrowVeiw]; - - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:tarrowVeiw.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(tarrowVeiw.frame.size.width / 2, tarrowVeiw.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, tarrowVeiw.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2,tarrowVeiw.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [tarrowVeiw removeFromSuperview]; - self.isPlayOfB = NO; - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; - } -// if(self. isAnimationListAFinish == YES){ -// -// [self playAnimationWithModel]; -// self.isAnimationListAFinish = NO; -// return; -// } - [self playAnimationWithModel]; - } - }]; - [tarrowVeiw pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [tarrowVeiw pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; - - -} -#pragma mark - 夺宝精灵横幅 -- (void)receiveTreasureFairyGiftHighLevel:(AttachmentModel *)attatchment { - PIBaseAnimationViewModel *giftModel = [PIBaseAnimationViewModel new]; - giftModel.data = attatchment.data; - giftModel.second = attatchment.second; - giftModel.first = attatchment.first; - giftModel.type = GiftBannerType_Fairy; - if (self.animationListB.count == 0 && self.isPlayOfB == NO) { - [self createTreasureFairyBannerAnimation:giftModel]; - } - [self.animationListB addObject:giftModel]; - -} -- (void)createTreasureFairyBannerAnimation:(PIBaseAnimationViewModel *)attatchment { - CGFloat kscale = (CGFloat)60 / (CGFloat)375; - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15); - XPTreasureFairyGiftView *treasureView = [[XPTreasureFairyGiftView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth , KScreenWidth * kscale)]; - //最大礼物 - if ((attatchment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5) || (attatchment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L3)) { - treasureView.isMaxLargeGift = YES; - }else{ - treasureView.isMaxLargeGift = NO; - } - if ((attatchment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L4) || (attatchment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5)) { - treasureView.isDrawGift = YES; //抽奖 - }else{ - treasureView.isDrawGift = NO; //召唤 - } - treasureView.treasureInfo = attatchment.data; - [kWindow addSubview:treasureView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:treasureView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(treasureView.frame.size.width / 2, treasureView.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, treasureView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, treasureView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [treasureView removeFromSuperview]; - self.isPlayOfB = NO; - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; - } -// if(self. isAnimationListAFinish == YES){ -// -// [self playAnimationWithModel]; -// self.isAnimationListAFinish = NO; -// return; -// } - [self playAnimationWithModel]; - } - }]; - [treasureView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [treasureView pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; -} - -#pragma mark - 福袋中 四级奖品 -- (void)receiveLuckyGiftBigPrize:(AttachmentModel *)attachment { - if ( attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_FullScree) { - PIBaseAnimationViewModel * prizeModel = [PIBaseAnimationViewModel modelWithDictionary:attachment.data]; - prizeModel.type = GiftBannerType_Lucky; - prizeModel.isInRoomVisable = attachment.second == Custom_Message_Sub_Room_Gift_LuckBag; - - if(self.animationListB.count == 0 && self.isPlayOfB == NO){ - [self createBigPrizeAnimation:prizeModel]; - } - [self.animationListB addObject:prizeModel]; - } -} - -- (void)createBigPrizeAnimation:(PIBaseAnimationViewModel *)prizeModel { - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15); - XPRoomLuckyBigPrizeView * luckyGiftEffectView = [[XPRoomLuckyBigPrizeView alloc] initWithFrame:CGRectMake(KScreenWidth, top, 375, 71)]; - luckyGiftEffectView.delegate = self; - [kWindow addSubview:luckyGiftEffectView]; - - luckyGiftEffectView.giftInfo = prizeModel; - - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:luckyGiftEffectView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(KScreenWidth / 2, luckyGiftEffectView.center.y)]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 7 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, luckyGiftEffectView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, luckyGiftEffectView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime(); - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [luckyGiftEffectView removeFromSuperview]; - - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; - } - self.isPlayOfB = NO; - // if(self.isAnimationListAFinish == YES){ - // self.isAnimationListAFinish = NO; - // [self playAnimationWithModel]; - // return; - // } - [self playAnimationWithModel]; - } - }]; - [luckyGiftEffectView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - - - }); - [luckyGiftEffectView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; -} -#pragma mark - XPRoomLuckyBigPrizeViewDelegate -- (void)xPRoomLuckyBigPrizeView:(XPRoomLuckyBigPrizeView *)view luckyGiftInfo:(PIBaseAnimationViewModel *)giftInfo { - - id isShowBroadcastView = [[NSUserDefaults standardUserDefaults]valueForKey:@"kSaveLuckSelectState"]; - if(isShowBroadcastView == nil){ - PIRoomGiftBroadcastWindow *broadcastView = [[PIRoomGiftBroadcastWindow alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; - broadcastView.isLuck = YES; - broadcastView.roodUid = giftInfo.roomUid; - broadcastView.roomName = giftInfo.roomTitle; - broadcastView.delegate = self; - [kWindow addSubview:broadcastView]; - return; - } - if (!giftInfo.isInRoomVisable && giftInfo.roomUid.length > 0 ) { - [XPRoomViewController openRoom:giftInfo.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; - } -} -#pragma mark - 糖果树横幅动画 -- (void)receiveCandyTreeGiftHighLevel:(AttachmentModel *)attatchment { - PIBaseAnimationViewModel *giftModel = [PIBaseAnimationViewModel new]; - giftModel.data = attatchment.data; - giftModel.second = attatchment.second; - giftModel.first = attatchment.first; - giftModel.type = GiftBannerType_Love; - if (self.animationListB.count == 0 && self.isPlayOfB == NO) { - [self createCandyTreeBannerAnimation:giftModel]; - } - [self.animationListB addObject:giftModel]; -} - -- (void)createCandyTreeBannerAnimation:(PIBaseAnimationViewModel *)attatchment { - CGFloat kscale = (CGFloat)60 / (CGFloat)375; - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15); - - - XPRoomCandyGiftView *candyTreeView = [[XPRoomCandyGiftView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth , KScreenWidth * kscale)]; - candyTreeView.isMaxLargeGift = attatchment.second == Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend; - candyTreeView.candyInfo = attatchment.data; - [kWindow addSubview:candyTreeView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:candyTreeView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(candyTreeView.frame.size.width / 2, candyTreeView.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, candyTreeView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, candyTreeView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [candyTreeView removeFromSuperview]; - self.isPlayOfB = NO; - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; - } -// if(self. isAnimationListAFinish == YES){ -// -// [self playAnimationWithModel]; -// self.isAnimationListAFinish = NO; -// return; -// } - [self playAnimationWithModel]; - } - }]; - [candyTreeView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [candyTreeView pop_addAnimation:springAnimation forKey:@"candyTreespingOutAnimation"]; -} -#pragma mark - VIP升级 -- (void)receiveNobleLevelUp:(AttachmentModel *)attachment { - @kWeakify(self); - [[NetImageView new]loadImageWithUrl:attachment.data[@"avatar"] completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) { - @kStrongify(self); - PIBaseAnimationViewModel *nobleModel = [PIBaseAnimationViewModel new]; - nobleModel.data = attachment.data; - nobleModel.type = GiftBannerType_Nobleman; - - if (self.animationListB.count == 0 && self.isPlayOfB == NO) { - [self createNobleLevelUpBannerAnimation:nobleModel]; - } - [self.animationListB addObject:nobleModel]; - }]; -} - -- (void)createNobleLevelUpBannerAnimation:(PIBaseAnimationViewModel *)model { - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15); - - XPRoomNobleLevelUpView *nobleLevelUpView = [[XPRoomNobleLevelUpView alloc] initWithFrame:CGRectMake(KScreenWidth, top, KScreenWidth, 90)]; - nobleLevelUpView.nobleInfo = model.data; - [kWindow addSubview:nobleLevelUpView]; - @kWeakify(self); - @kWeakify(nobleLevelUpView); - nobleLevelUpView.completionBlock = ^{ - @kStrongify(self); - @kStrongify(nobleLevelUpView); - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:nobleLevelUpView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(nobleLevelUpView.frame.size.width / 2, nobleLevelUpView.center.y)]; - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(6.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, nobleLevelUpView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, nobleLevelUpView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - self.isPlayOfB = NO; - [nobleLevelUpView removeFromSuperview]; - if (self.animationListB.count > 0) { - [self.animationListB removeObjectAtIndex:0]; - } - // if(self.isAnimationListAFinish == YES){ - // - // [self playAnimationWithModel]; - // self.isAnimationListAFinish = NO; - // return; - // } - [self playAnimationWithModel]; - } - }]; - [nobleLevelUpView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - }); - - [nobleLevelUpView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; - }; - -} -#pragma mark - 收到星级厨房飘屏 --(void)receiveRoomGraffitiStarKitchen:(AttachmentModel *)attacment{ - PIBaseAnimationViewModel *roomGraffiti = [PIBaseAnimationViewModel new]; - roomGraffiti.data = attacment.data; - roomGraffiti.type = GiftBannerType_kitchen; - roomGraffiti.first = attacment.first; - roomGraffiti.second = attacment.second; - if(self.animationListB.count == 0 && self.isPlayOfB == NO){ - [self createStarKitchenBannerAnimation:roomGraffiti]; - } - [self.animationListB addObject:roomGraffiti]; -} - -- (void)createStarKitchenBannerAnimation:(PIBaseAnimationViewModel *)attacment{ - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15); - XPRoomStarKitchenBannerView *starKitchenView = [[XPRoomStarKitchenBannerView alloc]initWithFrame:CGRectMake(0, top, KScreenWidth, kGetScaleWidth(60))]; - starKitchenView.isSvga = attacment.second == Custom_Message_Sub_Star_Kitchen_FullScreen; - XPRoomStarKitchenModel *starModel = [XPRoomStarKitchenModel modelWithDictionary:attacment.data]; - starKitchenView.delegate = self; - starKitchenView.starModel = starModel; - [kWindow addSubview:starKitchenView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:starKitchenView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(starKitchenView.frame.size.width / 2, starKitchenView.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, starKitchenView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, starKitchenView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [starKitchenView removeFromSuperview]; - self.isPlayOfB = NO; - - if(self.animationListB.count > 0){ - [self.animationListB removeObjectAtIndex:0]; - } -// if(self. isAnimationListAFinish == YES){ -// -// [self playAnimationWithModel]; -// self.isAnimationListAFinish = NO; -// return; -// } - [self playAnimationWithModel]; - } - }]; - [starKitchenView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [starKitchenView pop_addAnimation:springAnimation forKey:@"starKitchenOutAnimation"]; -} -#pragma mark - XPRoomStarKitchenBannerViewDelegate -- (void)xPRoomStarKitchenBannerView:(XPRoomStarKitchenBannerView *)view didClick:(XPRoomStarKitchenModel *)starModel{ - if(starModel.skipUrl == nil || starModel.skipUrl.length == 0)return; - XPWebViewController * webVC = [[XPWebViewController alloc] initWithRoomUID:starModel.roomUid]; - webVC.isPush = YES; - webVC.url = starModel.skipUrl; - [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:webVC animated:YES]; - -} - -#pragma mark - XPRoomAnchorRankBannerViewDelegate -- (void)xPRoomAnchorRankBannerView:(XPRoomAnchorRankBannerView *)view rankInfo:(RoomHalfHourRankModel *)rankInfo{ - [XPRoomViewController openRoom:rankInfo.uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; -} -#pragma mark - 个播小时榜飘屏或牌照房小时榜飘屏 -- (void)receiveAnchorHourRank:(AttachmentModel *)attachment { - PIBaseAnimationViewModel *anchorModel =[PIBaseAnimationViewModel new]; - anchorModel.data = attachment.data; - anchorModel.type = GiftBannerType_AnchorHour; - if(self.animationListB.count == 0 && self.isPlayOfB == NO){ - [self createAnchorHourRankAnimation:anchorModel]; - } - [self.animationListB addObject:anchorModel]; -} -- (void)createAnchorHourRankAnimation:(PIBaseAnimationViewModel *)attachment { - self.isPlayOfB = YES; - CGFloat top = self.isPlayOfA == YES ? (self.broadCastHieght + statusbarHeight) : (kNavigationHeight + 15); - XPRoomAnchorRankBannerView *anchorRankView = [[XPRoomAnchorRankBannerView alloc] initWithFrame:CGRectMake(KScreenWidth,top, KScreenWidth, kGetScaleWidth(55))]; - anchorRankView.anchorRankInfo = [RoomHalfHourRankModel modelWithDictionary:attachment.data]; - anchorRankView.delegate = self; - UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotoTopRankAnchorRoom:)]; - [anchorRankView addGestureRecognizer:tap]; - [kWindow addSubview:anchorRankView]; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:anchorRankView.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(anchorRankView.frame.size.width / 2, anchorRankView.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, anchorRankView.center.y)]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, anchorRankView.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + 3; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - [anchorRankView removeFromSuperview]; - self.isPlayOfB = NO; - if(self.animationListB.count > 0){ - [self.animationListB removeObjectAtIndex:0]; - } -// if(self.isAnimationListAFinish == YES){ -// self.isAnimationListAFinish = NO; -// [self playAnimationWithModel]; -// return; -// } - [self playAnimationWithModel]; - }]; - [anchorRankView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; - } - }]; - [anchorRankView pop_addAnimation:springAnimation forKey:@"nobleLevelUpspingOutAnimation"]; -} -- (void)gotoTopRankAnchorRoom:(UITapGestureRecognizer *)tap { - XPRoomAnchorRankBannerView * view = (XPRoomAnchorRankBannerView *)tap.view; - if (view.anchorRankInfo.uid.integerValue > 0) { - - [XPRoomViewController openRoom:view.anchorRankInfo.uid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; - - } -} -#pragma mark - 懒加载 -- (NSMutableArray *)animationListA{ - if(!_animationListA){ - _animationListA = [NSMutableArray array]; - } - return _animationListA; -} -- (NSMutableArray *)animationListB{ - if(!_animationListB){ - _animationListB = [NSMutableArray array]; - } - return _animationListB; -} -- (CGFloat)broadCastHieght{ - if(_broadCastHieght == 0){ - _broadCastHieght = 190 - 150 + kGetScaleWidth(69); - } - return _broadCastHieght; -} -@end diff --git a/YuMi/Modules/YMTabbar/View/TabbarViewController.m b/YuMi/Modules/YMTabbar/View/TabbarViewController.m index d7fb1dd7..03981005 100644 --- a/YuMi/Modules/YMTabbar/View/TabbarViewController.m +++ b/YuMi/Modules/YMTabbar/View/TabbarViewController.m @@ -83,7 +83,7 @@ #import "MainProtocol.h" #import "RoomHostDelegate.h" #import "XPSkillCardPlayerManager.h" -#import "PIFullScreenBannerAnimation.h" + #import #import "Api+Gift.h" #import "UploadFile.h" @@ -104,7 +104,7 @@ NSString * const kNetworkReachabilityKey = @"kNetworkReachabilityKey"; UIKIT_EXTERN NSString * kNewUserRechargeKey; UIKIT_EXTERN NSString *kTabShowAnchorCardKey; -@interface TabbarViewController () +@interface TabbarViewController () { NSTimer * timer; } @@ -123,8 +123,6 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; @property (nonatomic, strong) XPAnchorCardView *anchorCardView; ///任务完成提示 @property (nonatomic, strong) XPTaskCompleteTipView *taskTipView; -///全服广播 年度飘屏 -@property (nonatomic,strong) NSMutableArray *giftBroadcastQueue; ///是否是的第一次链接网络 @property (nonatomic,assign) BOOL isFirstReachability; ///是否刷新了 @@ -132,8 +130,6 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; ///是否刷新了 @property (nonatomic,assign) BOOL isInitReload; @property(nonatomic,assign) BOOL isReloadTicket; -///房间外的飘屏 -@property(nonatomic,strong) PIFullScreenBannerAnimation *roomAnimation; @property(nonatomic, assign) NSInteger retryCount; @@ -157,8 +153,6 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; [self.presenter autoLogin]; [self initTabs:NO defaultSelectedIndex:0]; -// [[ClientConfig shareConfig] clientInit]; - [[NIMSDK sharedSDK].loginManager addDelegate:self]; [[NIMSDK sharedSDK].chatManager addDelegate:self]; [[NIMSDK sharedSDK].systemNotificationManager addDelegate:self]; @@ -611,49 +605,12 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; // MARK: 要复查这里的 if else 嵌套 if (attachment.first == CustomMessageType_RedPacket) { [self receiveRedPacketDealWithData:attachment]; - } else if (attachment.first == CustomMessageType_Gift && attachment.second == Custom_Message_Sub_Gift_ChannelNotify){///广播 年度飘屏 - // MARK: 房间外不显示 -// [self receiveBroadcastGift:attachment]; - }else if(attachment.first == CustomMessageType_Version_Update && attachment.second == Custom_Message_Version_Update_Value){ + } else if(attachment.first == CustomMessageType_Version_Update && attachment.second == Custom_Message_Version_Update_Value){ NSString *osValue = attachment.data[@"updateOs"]; if([osValue isEqualToString:@"ios"] && [AccountInfoStorage instance].getUid.length > 0){ XPVersionUpdateModel *updateModel = [XPVersionUpdateModel modelWithDictionary:attachment.data]; [self getVersionUpdate:updateModel]; } - }else if(attachment.first == CustomMessageType_LuckyBag && attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_FullScree){ - if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; - [self.roomAnimation receiveLuckyGiftBigPrize:attachment]; - }else if(attachment.first == CustomMessageType_Graffiti_Star_Kitchen && attachment.second == Custom_Message_Sub_Star_Kitchen_FullScreen){ - if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; - [self.roomAnimation receiveRoomGraffitiStarKitchen:attachment]; - }else if(attachment.first == CustomMessageType_Look_Love && attachment.second == Custom_Message_Sub_Look_Love_InRoom_NeedAllMicSend){ - if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; - [self.roomAnimation receiveCandyTreeGiftHighLevel:attachment]; - }else if (attachment.first == CustomMessageType_Treasure_Fairy && (attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L4 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Draw_Gift_L5 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L1 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L2 || attachment.second == Custom_Message_Sub_Treasure_Fairy_Convert_L3)) { //夺宝精灵 - if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; - [self.roomAnimation receiveTreasureFairyGiftHighLevel:attachment]; - }else if (attachment.first == CustomMessageType_Tarot && (attachment.second == Custom_Message_Sub_Tarot_Advanced || attachment.second == Custom_Message_Sub_Tarot_Intermediate)){ - if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; - [self.roomAnimation receiveTarotBanner:attachment]; - }else if(attachment.first == CustomMessageType_Common_H5 && (attachment.second == Custom_Message_Sub_Common_H5_Novice || attachment.second == Custom_Message_Sub_Common_H5_Advanced)){ - if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; - [self.roomAnimation receiveCommonH5Banner:attachment]; - }else if (attachment.first == CustomMessageType_Anchor_Hour_Rank && attachment.second == Custom_Message_Sub_Anchor_Hour_Rank) {///个播小时榜 - if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; - [self.roomAnimation receiveAnchorHourRank:attachment]; - } else if (attachment.first == CustomMessageType_License_Hour_Rank && attachment.second == Custom_Message_Sub_License_Hour_Rank) {///牌照房小时榜 - if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; - [self.roomAnimation receiveAnchorHourRank:attachment]; - }else if (attachment.first == CustomMessageType_Noble_VIP && attachment.second == Custom_Message_Sub_Room_Noble_LevelUp_Suspend) {///VIP升级全服飘屏 -// if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; -// [self.roomAnimation receiveNobleLevelUp:attachment]; - }else if (attachment.first == CustomMessageType_General_Floating_Screen && attachment.second == Custom_Message_Sub_General_Floating_Screen_All_Room){ - return; -// if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES) { -// return; -// } - // 房间会发通知 -// [self.roomAnimation receiveRoomGeneralFloatingScreen:attachment]; } } } @@ -1074,78 +1031,6 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; } } -#pragma mark - 年度礼物飘屏 -- (void)receiveBroadcastGift:(AttachmentModel *)attachment { - GiftReceiveInfoModel *giftNotifyInfo = [GiftReceiveInfoModel modelWithJSON:attachment.data]; - if (!giftNotifyInfo.ceremonyGift && giftNotifyInfo.isHomeShow == YES) { - if([XPSkillCardPlayerManager shareInstance].isInRoomVC == YES)return; - [self.roomAnimation receiveGift:giftNotifyInfo]; - return; - } - if(giftNotifyInfo.isHomeShow == NO)return; - if (self.giftBroadcastQueue.count == 0) { - [self createGiftBroadcastViewAnimation:giftNotifyInfo]; - } - [self.giftBroadcastQueue addObject:giftNotifyInfo]; -} - -- (void)createGiftBroadcastViewAnimation:(GiftReceiveInfoModel *)giftModel { - XPRoomYearActivityView * view = [[XPRoomYearActivityView alloc] init]; - view.delegate = self; - view.frame = CGRectMake(KScreenWidth, 35 + statusbarHeight, KScreenWidth, 150); - view.model = giftModel; - [[XCCurrentVCStackManager shareManager].getCurrentVC.view addSubview:view]; - [self beginGiftBraodcastViewAnimation:view notifyStaySecond:giftModel.notifyStaySecond]; -} - -- (void)beginGiftBraodcastViewAnimation:(XPRoomYearActivityView *)view notifyStaySecond:(int)notifyStaySecond{ - CGFloat startTime = notifyStaySecond > 0 ? notifyStaySecond : 3.0; - POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter]; - springAnimation.springSpeed = 12; - springAnimation.springBounciness = 10.f; - springAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0 + view.frame.size.width / 2, view.center.y)]; - [springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - if (finished) { - [self removeGiftBroadcastOutAnimation:view stayTime:startTime]; - } - }]; - [view pop_addAnimation:springAnimation forKey:@"spingOutAnimation"]; -} - -- (void)removeGiftBroadcastOutAnimation:(XPRoomYearActivityView *)view stayTime:(CGFloat)stayTime{ - POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter]; - moveAnimation.fromValue = [NSValue valueWithCGPoint:view.center]; - moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, view.center.y)]; - moveAnimation.beginTime = CACurrentMediaTime() + stayTime; - moveAnimation.duration = 0.5; - moveAnimation.repeatCount = 1; - moveAnimation.removedOnCompletion = YES; - @kWeakify(self); - [moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) { - @kStrongify(self); - if (finished) { - [view removeFromSuperview]; - if (self.giftBroadcastQueue.count > 0) { - [self.giftBroadcastQueue removeObjectAtIndex:0]; - } - if (self.giftBroadcastQueue.count > 0) { - [self createGiftBroadcastViewAnimation:self.giftBroadcastQueue.firstObject]; - } - } - }]; - - [view pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"]; -} - -#pragma mark - XPRoomGiftBroadcastViewDelegate -- (void)xPRoomYearActivityViewEnterRoom:(NSString *)roomUid{ - if (roomUid.length > 0) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [XPRoomViewController openRoom:roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC]; - }); - } -} #pragma mark - Getters And Setters - (XPMiniRoomView *)roomMineView { @@ -1173,17 +1058,4 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey; return _taskTipView; } -- (NSMutableArray *)giftBroadcastQueue { - if (!_giftBroadcastQueue) { - _giftBroadcastQueue = [NSMutableArray array]; - } - return _giftBroadcastQueue; -} -- (PIFullScreenBannerAnimation *)roomAnimation{ - if(!_roomAnimation){ - _roomAnimation = [[PIFullScreenBannerAnimation alloc]init]; - } - return _roomAnimation; -} - @end diff --git a/YuMi/Structure/MVP/Model/UserInfoModel.h b/YuMi/Structure/MVP/Model/UserInfoModel.h index e5dc77df..be2c2b1e 100644 --- a/YuMi/Structure/MVP/Model/UserInfoModel.h +++ b/YuMi/Structure/MVP/Model/UserInfoModel.h @@ -60,7 +60,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic , assign) BOOL isBindBankCard; @property (nonatomic , assign) BOOL hasRegPacket; @property (nonatomic , assign) GenderType gender; -@property (nonatomic , assign) NSInteger platformRole; +@property (nonatomic , assign) NSInteger platformRole; /// 0 普通 1超管 @property (nonatomic , assign) NSInteger uid; @property (nonatomic , assign) NSInteger defUser; @property (nonatomic , copy) NSString * phone; diff --git a/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h index f47c2247..202c8d93 100644 --- a/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h +++ b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h @@ -42,6 +42,8 @@ typedef enum : NSUInteger { // 作为全局获取当前用户数据的 model,需要在相关 user/get 调用处更新,目前只在 mine tab 更新 @property(nonatomic, strong) UserInfoModel *userInfoModel; +@property(nonatomic, assign) BOOL is9Mic; // 当前房间是否 9 mic + + (instancetype)shareInstance; /** diff --git a/YuMi/Tools/NSString/NSString+Utils.m b/YuMi/Tools/NSString/NSString+Utils.m index 51113243..0d82408b 100644 --- a/YuMi/Tools/NSString/NSString+Utils.m +++ b/YuMi/Tools/NSString/NSString+Utils.m @@ -325,6 +325,9 @@ return day; } +(NSString *)getAgeWithBirth:(long)birth{ + if (birth == 0) { + return @" "; + } NSDateComponents *components1 = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate dateWithTimeIntervalSince1970:birth/1000]]; NSInteger brithDateYear = [components1 year]; NSInteger brithDateDay = [components1 day]; @@ -335,9 +338,8 @@ NSInteger iAge = currentDateYear - brithDateYear - 1; if ((currentDateMonth > brithDateMonth) || (currentDateMonth == brithDateMonth && currentDateDay >= brithDateDay)) { iAge++; - } - return @(iAge).stringValue; + return [NSString stringWithFormat:@" %ld ", iAge]; } ///得到区号 +(NSString *)getCountryCode{ diff --git a/YuMi/ar.lproj/Localizable.strings b/YuMi/ar.lproj/Localizable.strings index 7755f278..d29d8624 100644 --- a/YuMi/ar.lproj/Localizable.strings +++ b/YuMi/ar.lproj/Localizable.strings @@ -4060,3 +4060,22 @@ ineHeadView12" = "الحمل"; \n\٥. جميع حقوق التفسير مملوكة للمسؤول ولا علاقة لها بـ قوقل أو ابل"; "1.0.33_text_18" = "مستوى الغرفة>=%@ يمكن استخدامه"; "1.0.33_text_19" = "عدد المسؤولين المقابلين لمستوى غرفتك الحالي ممتلئ، يرجى الترقية أولاً ثم الإضافة!"; + +"1.0.34_text_1" = "الإدارة الرسمية"; +"1.0.34_text_2" = "غرفة مخفية"; +"1.0.34_text_3" = "إغلاق الغرفة"; +"1.0.34_text_4" = "الغرفة مخفية. لا يمكن للمستخدمين العثور عليها إلا من خلال البحث أو المتابعة. يرجى العمل بحذر."; +"1.0.34_text_5" = "أغلق الغرفة وأخرج جميع المستخدمين في الغرفة. يرجى العمل بحذر."; +"1.0.34_text_6" = "لقد أضفت %@ كمسؤول عن الغرفة."; +"1.0.34_text_7" = "لقد أزلت %@ كمسؤول عن الغرفة."; + +"1.0.34_text_8" = " يتم اكتشاف مخالفة مشتبه فيها من قبل النظام، %@ الموقع تم قفل الكلام "; +"1.0.34_text_9" = " يتم اكتشاف مخالفة مشتبه فيها من قبل النظام، %@ الموقع تم كتم الصوت"; +"1.0.34_text_10" = " يتم اكتشاف مخالفة مشتبه فيها من قبل النظام، %@ الموقع طُلب النزول من المسرح"; +"1.0.34_text_11" = " يتم اكتشاف مخالفة مشتبه فيها من قبل النظام، %@ تم طرده من الغرفة"; +"1.0.34_text_12" = " يتم اكتشاف مخالفة مشتبه فيها من قبل النظام، %@ تم إرساله إلى الغرفة السوداء"; + +"1.0.34_text_13" = "لقد تمت إضافتك كمسؤول بواسطة %@ معرف الغرفة: %@."; +"1.0.34_text_14" = "لقد تمت إزالتك كمسؤول بواسطة %@ معرف الغرفة: %@."; +"1.0.34_text_15" = "لقد تم تعيينك كمدير من قبل المضيف"; +"1.0.34_text_16" = "لقد تمت إزالتك كمدير من قبل المضيف"; diff --git a/YuMi/en.lproj/Localizable.strings b/YuMi/en.lproj/Localizable.strings index 5efefa4e..edb8a269 100644 --- a/YuMi/en.lproj/Localizable.strings +++ b/YuMi/en.lproj/Localizable.strings @@ -3849,3 +3849,21 @@ "1.0.33_text_18" = "Room Lv. >=%@ Can be used"; "1.0.33_text_19" = "The number of admins corresponding to your current room level is full, please upgrade first and then add!"; +"1.0.34_text_1" = "Official Management"; +"1.0.34_text_2" = "Hidden Room"; +"1.0.34_text_3" = "Close Room"; +"1.0.34_text_4" = "The room is hidden. Users can only find it by searching or following. Please operate with caution."; +"1.0.34_text_5" = "Close the room and kick out all users in the room. Please operate with caution."; +"1.0.34_text_6" = "You have added %@ as a room admin."; +"1.0.34_text_7" = "You have been removed %@ as a room admin."; + +"1.0.34_text_8" = "System detects suspected violation, %@ Number Mic Be locked from speaking"; +"1.0.34_text_9" = "System detects suspected violation,, %@ Number Mic Be muted"; +"1.0.34_text_10" = "System detects suspected violation,, %@ Number Mic Be asked to step down from the stage"; +"1.0.34_text_11" = "System detects suspected violation,, %@ Be kicked out of the room"; +"1.0.34_text_12" = "System detects suspected violation, %@ Be sent to the black room"; + +"1.0.34_text_13" = "You have been added as an admin by %@ room ID: %@."; +"1.0.34_text_14" = "You have been removed as an admin by %@ room ID: %@."; +"1.0.34_text_15" = "You have been set as a manager by the host"; +"1.0.34_text_16" = "You have been removed as a manager by the host"; diff --git a/YuMi/tr.lproj/Localizable.strings b/YuMi/tr.lproj/Localizable.strings index 6fa1b1e5..269e9f8b 100644 --- a/YuMi/tr.lproj/Localizable.strings +++ b/YuMi/tr.lproj/Localizable.strings @@ -3635,3 +3635,26 @@ "1.0.33_text_17" = "1. Yıldız derecelendirmesini artırmak için resmi müşteri hizmetleriyle iletişime geçebilir ve ilgili kanıtları sağlayabilirsiniz.\n2. Yıldız derecelendirmesi 1~5 yıldıza bölünmüştür. 5 yıldız en iyi şarj aracıdır.\n3. Yıldız derecelendirmesi, kullanıcı şarj aracısını bulduğunda görüntülenecektir.\n4. Yıldız derecelendirmesi ne kadar yüksekse, transfer listesindeki sıralama da o kadar yüksek olur.\n5. Tüm yorumlama hakları resmiyete aittir ve Google veya Apple ile hiçbir ilgisi yoktur."; "1.0.33_text_18" = "Oda Lv. >=%@ Kullanılabilir"; "1.0.33_text_19" = "Mevcut oda seviyenize karşılık gelen yönetici sayısı doldu, lütfen önce yükseltin ve ardından ekleyin!"; + +"1.0.34_text_1" = "Resmi Yönetim"; +"1.0.34_text_2" = "Gizli Oda"; +"1.0.34_text_3" = "Odayı Kapat"; +"1.0.34_text_4" = "Oda gizlidir. Kullanıcılar yalnızca arayarak veya takip ederek bulabilir. Lütfen dikkatli olun."; +"1.0.34_text_5" = "Odayı kapatın ve odadaki tüm kullanıcıları dışarı atın. Lütfen dikkatli olun."; +"1.0.34_text_6" = "%@'yi oda yöneticisi olarak eklediniz."; +"1.0.34_text_7" = "%@'yi oda yöneticisi olarak kaldırdınız."; + +"1.0.34_text_8" = "Sistem ihlal tespit etti ve sohbet ekranını kapatma uyarısı verdi"; +"1.0.34_text_9" = "The system detects suspected violations and closes the public screen message warning"; +"1.0.34_text_10" = "The system detects suspected violations and closes the public screen message warning"; + +"1.0.34_text_8" = "Sistem ihlal tespit etti, %@ Mikrofon konumu Mikrofon kilidi"; +"1.0.34_text_9" = "Sistem ihlal tespit etti, %@ Mikrofon konumu Mikrofon kapatıldı"; +"1.0.34_text_10" = "Sistem ihlal tespit etti, %@ Mikrofon konumu Mikrofondan çıkarıldı"; +"1.0.34_text_11" = "Sistem ihlal tespit etti, %@ Odadaki kullanıcıdan çıkarıldı"; +"1.0.34_text_12" = "Sistem ihlal tespit etti, %@ Siyah odada kilitli"; + +"1.0.34_text_13" = "%@ oda kimliği: %@ tarafından yönetici olarak eklendiniz."; +"1.0.34_text_14" = "%@ oda kimliği: %@ tarafından yönetici olarak kaldırıldınız."; +"1.0.34_text_15" = "Oda sahibi sizi yönetici olarak ayarladı"; +"1.0.34_text_16" = "Oda sahibi sizi yöneticilikten çıkardı"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index de0f0827..7c736153 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -1017,7 +1017,7 @@ "XPUserCardViewController6" = "該用戶為%@VIP\n確認是否要將其踢出房間?"; "XPUserCardViewController7" = "遊戲模式下默認該玩家退出遊戲是否要將此用戶踢出房間?"; "XPUserCardViewController8" = "遊戲模式下默認該玩家退出遊戲是否要將此用戶踢出房間"; -"XPUserCardViewController9" = "是否需要將%@踢出房間?"; +"XPUserCardViewController9" = "是否需要將 %@ 踢出房間?"; "XPUserCardViewController10" = "操作提醒"; "XPUserCardViewController11" = "該用戶為%@VIP,只有房主才可以踢出哦"; "XPUserCardViewController12" = "該用戶為%@VIP\n確認是否要將其拉黑?"; @@ -3507,3 +3507,24 @@ "1.0.33_text_17" = "1.您可以聯絡官方客服並提供相關證據來提升星級。\n2.星級分為1~5星。5星是最好的儲值代理。\n3.用戶找到儲值代理商時會顯示星級。\n4.星級越高,在轉職榜的排名越高。\n5.所有解釋權歸官方所有,與Google或蘋果無關。"; "1.0.33_text_18" = "房間等級>=%@可以使用"; "1.0.33_text_19" = "您目前房間等級對應的管理員人數已滿,請先升級再新增!"; + +"1.0.34_text_1" = "官方管理"; +"1.0.34_text_2" = "隱藏房間"; +"1.0.34_text_3" = "關閉房間"; +"1.0.34_text_4" = "隱藏房間,用戶只能通過搜索或關注查找到該房間,請謹慎操作。"; +"1.0.34_text_5" = "關閉房間,並將房間內所有用戶踢出,請謹慎操作。"; +"1.0.34_text_6" = "你已经添加 %@ 为房间管理员"; +"1.0.34_text_7" = "你已经取消 %@ 为房间管理员"; + +"1.0.34_text_8" = "系統檢測涉嫌違規, %@ 號麥位被鎖麥"; +"1.0.34_text_9" = "系統檢測涉嫌違規, %@ 號麥位被閉麥"; +"1.0.34_text_10" = "系統檢測涉嫌違規, %@ 被請下麥"; +"1.0.34_text_11" = "系統檢測涉嫌違規, %@ 被請出房間"; +"1.0.34_text_12" = "系統檢測涉嫌違規, %@ 被關進小黑屋"; +"1.0.34_text_13" = "您被%@房間 ID:%@新增為管理員。"; +"1.0.34_text_14" = "你被%@房間 ID:%@取消管理員。"; +"1.0.34_text_15" = "您已被房主設置為管理員"; +"1.0.34_text_16" = "您已被房主移除管理員"; + + +