Compare commits

...

18 Commits

Author SHA1 Message Date
liyuhua
6fbb428b6b 修复bug 2023-10-10 18:37:35 +08:00
liyuhua
ad27327d13 修复bug 2023-10-10 16:34:47 +08:00
liyuhua
1169c38300 优化 2023-10-10 15:47:30 +08:00
liyuhua
c71ad13603 修改版本号 2023-10-10 14:48:12 +08:00
liyuhua
f55efbcbc0 修改夺爱和夺宝 2023-10-10 14:45:53 +08:00
liyuhua
c78366a8ab 修复bug 2023-10-10 14:27:30 +08:00
liyuhua
fbebab9792 修复bug 2023-10-10 14:17:04 +08:00
liyuhua
9f74aef971 修复bug 2023-10-09 10:27:53 +08:00
liyuhua
78765219a2 首页UI优化 2023-10-08 16:46:12 +08:00
liyuhua
4eb2261d2a 登录流程更改 2023-10-08 11:51:16 +08:00
liyuhua
c1de3b4b24 登录优化 2023-10-07 18:42:30 +08:00
liyuhua
7dfc5a6569 优化 2023-10-07 16:21:47 +08:00
liyuhua
9ac6424755 修复bug 2023-10-07 11:08:32 +08:00
liyuhua
890c9dd4d4 修复bug 2023-10-07 09:57:48 +08:00
liyuhua
886ac6f950 优化房间 2023-09-28 18:29:41 +08:00
liyuhua
15c4fc3871 优化项目 2023-09-28 16:48:57 +08:00
liyuhua
1f7d6e472b 夺宝改版 2023-09-28 15:25:01 +08:00
liyuhua
43446b1e50 修复bug 2023-09-28 14:49:27 +08:00
110 changed files with 1776 additions and 1475 deletions

View File

@@ -66,7 +66,6 @@ target 'YuMi' do
pod 'mob_sharesdk/ShareSDKPlatforms/Apple'
pod 'mob_sharesdk/ShareSDKPlatforms/Line'
pod 'mob_sharesdk/ShareSDKExtension'
pod 'mob_sharesdk/ShareSDKPlatforms/Facebook_Lite'
pod 'UMCommon'
pod 'UMDevice'

File diff suppressed because it is too large Load Diff

View File

@@ -47,19 +47,21 @@ UIKIT_EXTERN NSString * adImageName;
- (void) configBugly {
BuglyConfig *config = [[BuglyConfig alloc] init];
config.channel = @"App Enterprise";
config.blockMonitorEnable = YES; //
config.blockMonitorTimeout = 5;
config.unexpectedTerminatingDetectionEnable = YES; // 退
#ifdef DEBUG
config.debugMode = YES; // debug
config.channel = [YYUtility getAppSource];; config.blockMonitorEnable = YES; //
config.reportLogLevel = BuglyLogLevelVerbose; //
[Bugly startWithAppId:@"86cf73b8d5" config:config];
#else
config.debugMode = NO; // release
config.channel = [YYUtility getAppSource];; config.blockMonitorEnable = NO; //
config.reportLogLevel = BuglyLogLevelWarn; //
[Bugly startWithAppId:@"0fcba36f9a" config:config];
NSString *buylyKey = isEnterprise == NO ? @"5334684d86" : @"d65df59a68";
[Bugly startWithAppId:buylyKey config:config];
#endif
}
@@ -67,6 +69,7 @@ UIKIT_EXTERN NSString * adImageName;
// NIMSDK
NSString *appKey = KeyWithType(KeyType_NetEase);
NIMSDKOption *option = [NIMSDKOption optionWithAppKey:appKey];
option.apnsCername = @"newPiko";
[[NIMSDK sharedSDK] registerWithOption:option];
// NIM SDK

View File

@@ -17,6 +17,8 @@
#import <GoogleSignIn/GoogleSignIn.h>
#import "GULAppDelegateSwizzler.h"
#import <GoogleSignIn/GoogleSignIn.h>
#import "XPLoginViewController.h"
#import "AccountModel.h"
@import Firebase;
UIKIT_EXTERN NSString * const kOpenRoomNotification;
@@ -27,10 +29,22 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
TabbarViewController *vc = [[TabbarViewController alloc] init];
BaseNavigationController *bnc = [[BaseNavigationController alloc] initWithRootViewController:vc];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.rootViewController = bnc;
AccountModel *accountModel = [[AccountInfoStorage instance] getCurrentAccountInfo];
if (accountModel == nil || accountModel.uid == nil || accountModel.access_token == nil) {
XPLoginViewController *lvc = [[XPLoginViewController alloc] init];
BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:lvc];
nav.modalPresentationStyle = UIModalPresentationFullScreen;
self.window.rootViewController = nav;
}else{
TabbarViewController *vc = [[TabbarViewController alloc] init];
BaseNavigationController *bnc = [[BaseNavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController = bnc;
}
[self.window makeKeyAndVisible];
///广
[self setupLaunchADView];

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -10,6 +10,7 @@
"scale" : "2x"
},
{
"filename" : "room_menu_face@3x.png",
"idiom" : "universal",
"scale" : "3x"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 859 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -10,6 +10,7 @@
"scale" : "2x"
},
{
"filename" : "room_menu_more@3x.png",
"idiom" : "universal",
"scale" : "3x"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 849 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_send_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_send_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_voice_close@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_voice_close@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_voice_open@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_voice_open@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -23,6 +23,8 @@ NS_ASSUME_NONNULL_BEGIN
///开箱子 大于等级 展示
@property (nonatomic, assign) NSInteger openCandyTreeLimitLevel;
@property (nonatomic,assign) BOOL canOpen;
///是否刷新了
@property (nonatomic,assign) BOOL isLoad;
///房间id用于分享房间跳转到房间
@property (nonatomic, copy) NSString *__nullable roomId;
///用户id用于外部h5跳转到聊天页面

View File

@@ -413,9 +413,9 @@ const int UIInputTextViewMaxHeight = 147;
self.recordButton.selected = YES;
///
if (!self.audioRecordView.superview) {
[[UIApplication sharedApplication].keyWindow addSubview:self.audioRecordView];
[kWindow addSubview:self.audioRecordView];
[self.audioRecordView mas_makeConstraints:^(MASConstraintMaker *make) {
make.center.mas_equalTo(self.audioRecordView.superview);
make.center.mas_equalTo(kWindow);
}];
[self.audioRecordView configAudioRecord:@"message_tool_audio_record_first" title:YMLocalizedString(@"QInputBarView2") isAnimation:YES];
[self.audioRecordView beginAudioRecord];

View File

@@ -16,7 +16,6 @@ UIKIT_EXTERN NSString * const kVisitorUnReadCountNotificationKey;
UIKIT_EXTERN NSString * const kHadShowNewUserGiftKey;
UIKIT_EXTERN NSString * const kRedPacketHistory;
UIKIT_EXTERN NSString * const kTuWenMessageHistory;///图文消息已读记录
UIKIT_EXTERN NSString * const kTeenagerStatusChange;
UIKIT_EXTERN NSString * const kRoomQuickMessageCloseCount;
UIKIT_EXTERN NSString * const kLoginMethod;
typedef NS_ENUM(NSUInteger, Pi_KeyType) {

View File

@@ -17,14 +17,12 @@ NSString * const kRoomBackMusicCaptureVolumeKey = @"9N5Ei+Ch6nkmH1LzZET4ZjYSzXKF
NSString * const kRoomBackMusicAudioMixingVolumeKey = @"JuJZKfNgZQ7s25PjQcGG97za686ecXI1lylS9PSLrayNeY2l1me4NyyYUXHGaJP0";///
NSString * const kRoomBackMusicPlayMusicOrderKey = @"xjtpOpnLgX00F9HgwT1FISMQPkxXj5cpE2vYc2acOR0=";/// 1 0
NSString * const kRoomBackMusicPlayMusicFinishKey = @"xjtpOpnLgX00F9HgwT1FIf5yt3rZb+KP9BT0F9AgD7I8M+2JTSYq+jDIEx1e6qdC";/// key
NSString * const kUserCompleteInfoFinishKey = @"0g1ARAbys7hdfKcXF32WZAASQwkJH//glyiNAZOS5Co=";///
NSString * const kHadShowNewUserGiftKey = @"OHIPXsTBvyt1zwNqr4f6YJkIycUshwhKIpC5Pm2nVVU=";//
NSString * const kNewUserRechargeKey = @"fmslcb104aFPWxdSGkMg6lmyehgB3uCu9V/FqzVpL+8=";//
NSString * const kFromSearchToHomeViewKey = @"pr5yHog50uSsZLKj2nA6Ono3Mq/bLTDyngBNDVRkhgg=";//
NSString * const kTabShowAnchorCardKey = @"MIO0LwD8MCBISnBOps47VF1waAwY+/XFOm2C3luic/k="; //tab
NSString * const kRedPacketHistory = @"nwKkblakw5CH37vvs9YcSjHhVHcOoeZMmE09gg7Ymhk";
NSString * const kTuWenMessageHistory = @"AMRtf6yOWYapbYqqOBK+m5IUPsFN5hfbOpPkrYvOr1E=";//
NSString * const kTeenagerStatusChange = @"Pn5RRk7StcSdlVksgBaunx8mADfiSN1UnkpU7FSBGis=";//
NSString * const kRoomQuickMessageCloseCount = @"bUi7KnisS+mmUMj45e9s4VycnvRvBViGvd/ouRS4SHo=";//
NSString * const kShieldingNotification = @"a1NoaWVsZGluZ05vdGlmaWNhdGlvbg==";///
NSString * const kRoomKickoutTime = @"a1Jvb21LaWNrb3V0VGltZQ==";///
@@ -35,6 +33,7 @@ NSString * const kGiveDiamondDailyNum = @"a0dpdmVEaWFtb25kRGFpbHlOdW0=";
NSString * const kShowFirstRechargeView = @"a1Nob3dGaXJzdFJlY2hhcmdlVmlldw==";
///
NSString * const kInviteMemeberSuccess = @"a0ludml0ZU1lbWViZXJTdWNjZXNz";
NSString * const kUserFirstRegisterKey = @"kUserFirstRegisterKey";
///
NSString * const kLoginMethod = @"a0xvZ2luTWV0aG9k";
NSString * const kRequestRicket = @"a1JlcXVlc3RSaWNrZXQ=";

View File

@@ -49,7 +49,7 @@ isPhoneXSeries = [[UIApplication sharedApplication] delegate].window.safeAreaIns
#define PI_App_Version @"2.0.7"
#define PI_App_Version @"2.0.8"
#ifdef DEBUG
#define API_HOST_URL [NSString stringWithFormat:@"%@%@",@"http://beta.api",@".pekolive.com"]

View File

@@ -96,6 +96,8 @@
</dict>
<key>NSCameraUsageDescription</key>
<string>“Piko”需要您的同意,才可以访问进行拍照并上传您的图片,然后展示在您的个人主页上,便于他人查看</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>“Piko”需要您的同意,才可以进行定位服务,推荐附近好友</string>
<key>NSLocalNetworkUsageDescription</key>
<string>此App将可发现和连接到您所用网络上的设备。</string>
<key>NSMicrophoneUsageDescription</key>

View File

@@ -0,0 +1,20 @@
//
// PILoginManager.h
// YuMi
//
// Created by duoban on 2023/10/7.
//
#import <Foundation/Foundation.h>
#import "MvpViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface PILoginManager : NSObject
///登录是否手机isLoginPhone
+(void)loginWithVC:(MvpViewController *)VC isLoginPhone:(BOOL)isLoginPhone;
///登录成功,回到首页
+(void)jumpToHomeVCWithInviteCode:(NSString *)inviteCode;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,104 @@
//
// PILoginManager.m
// YuMi
//
// Created by duoban on 2023/10/7.
//
#import "PILoginManager.h"
///api
#import "Api+Main.h"
///vc
#import "LoginFullInfoViewController.h"
#import "TabbarViewController.h"
#import "BaseNavigationController.h"
#import "LoginVerifCodeViewController.h"
///Model
#import "ThirdUserInfo.h"
#import "AccountModel.h"
#import "UserInfoModel.h"
#import "XPLoginAuthCodeVC.h"
@implementation PILoginManager
+(void)loginWithVC:(MvpViewController *)VC isLoginPhone:(BOOL)isLoginPhone{
AccountModel *accountModel = [[AccountInfoStorage instance] getCurrentAccountInfo];
HomeUserModel *homeUserModel = [HomeUserModel new];
if (accountModel == nil || accountModel.uid == nil || accountModel.access_token == nil) {
[XNDJTDDLoadingTool hideOnlyView:VC.view];
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"LoginPresenter1")];
return;
}
__block UserInfoModel *userInfo;
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_group_enter(group);
dispatch_async(queue, ^{
[Api requestTicket:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if(code == 200){
NSArray *tickets = [data.data valueForKey:@"tickets"];
NSString *ticket = [tickets[0] valueForKey:@"ticket"];
homeUserModel.ticket = ticket;
[[AccountInfoStorage instance] saveTicket:ticket];
}
dispatch_group_leave(group);
} access_token:accountModel.access_token issue_type:@"multi"];
});
dispatch_group_enter(group);
dispatch_async(queue, ^{
[Api getUserInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if(code == 200){
userInfo = [UserInfoModel modelWithDictionary:data.data];
homeUserModel.nick = userInfo.nick;
homeUserModel.avatar = userInfo.avatar;
homeUserModel.isBindPhone = userInfo.isBindPhone;
}
dispatch_group_leave(group);
} uid:accountModel.uid];
});
__block NSString *isFlag = @"";
if(isLoginPhone == YES){
dispatch_group_enter(group);
dispatch_async(queue, ^{
[Api requestAuthorizationCodeInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
if(code == 200){
isFlag = [data.data boolValue] == YES ? @"1" : @"0" ;
}else{
isFlag = @"2";
}
dispatch_group_leave(group);
}];
});
}
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
[XNDJTDDLoadingTool hideOnlyView:VC.view];
if ([[AccountInfoStorage instance] getTicket].length <= 0 || userInfo == nil || [isFlag isEqualToString:@"2"]) {
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"LoginPresenter1")];
return;
}
[[AccountInfoStorage instance]saveHomeUserInfo:homeUserModel];
if (userInfo.nick == nil || userInfo.avatar == nil) {
if([isFlag isEqualToString:@"0"]){
XPLoginAuthCodeVC *vc = [[XPLoginAuthCodeVC alloc]init];
vc.pi_isPush = YES;
[VC.navigationController pushViewController:vc animated:YES];
}else{
LoginFullInfoViewController * FullVC = [[LoginFullInfoViewController alloc] init];
[VC.navigationController pushViewController:FullVC animated:YES];
}
return;
}
[XNDJTDDLoadingTool showSuccessWithMessage:YMLocalizedString(@"PKIDLoginViewController0")];
[PILoginManager jumpToHomeVCWithInviteCode:@""];
});
}
+(void)jumpToHomeVCWithInviteCode:(NSString *)inviteCode{
TabbarViewController *vc = [[TabbarViewController alloc] init];
vc.isFormLogin = YES;
vc.inviteCode = inviteCode;
BaseNavigationController *bnc = [[BaseNavigationController alloc] initWithRootViewController:vc];
kWindow.rootViewController = bnc;
}
@end

View File

@@ -23,8 +23,8 @@
///P
#import "LoginFullInfoPresenter.h"
#import "LoginFullInfoProtocol.h"
#import "PILoginManager.h"
UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey;
@interface LoginFullInfoViewController ()<LoginFullInfoProtocol>
@@ -261,15 +261,10 @@ UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey;
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventLoginRepariSuccess];
/// ticket tabbaritem
[[AccountInfoStorage instance] saveTicket:nil];
UIViewController *vc = self.presentingViewController;
while (vc.presentingViewController) {
vc = vc.presentingViewController;
}
[vc dismissViewControllerAnimated:YES completion:^{
}];
[XPAdjustEvent registeringEvent];
NSString * inviteCode = self.codeTextField.text.length > 0 ? self.codeTextField.text : @"";
[[NSNotificationCenter defaultCenter] postNotificationName:kUserCompleteInfoFinishKey object:inviteCode];
[PILoginManager jumpToHomeVCWithInviteCode:inviteCode];
}
-(void)complementInfoFail{
[XNDJTDDLoadingTool hideOnlyView:self.view];

View File

@@ -17,6 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface XPLoginAuthCodeVC : MvpViewController
@property(nonatomic,weak) id<XPLoginAuthCodeVCDelegate>delegate;
@property(nonatomic,assign) BOOL pi_isPush;
@end
NS_ASSUME_NONNULL_END

View File

@@ -9,6 +9,7 @@
#import "XPLoginInputView.h"
#import <ReactiveObjC.h>
#import "LoginVerifCodePresent.h"
#import "LoginFullInfoViewController.h"
@interface XPLoginAuthCodeVC ()
///
@property(nonatomic,strong) UIImageView *bgImageView;
@@ -22,6 +23,9 @@
@end
@implementation XPLoginAuthCodeVC
- (BOOL)isHiddenNavBar {
return YES;
}
- (LoginVerifCodePresent *)createPresenter {
return [[LoginVerifCodePresent alloc] init];
}
@@ -89,11 +93,17 @@
- (void)bindAuthorizationCodeSuccess{
[self hideHUD];
[self showSuccessToast:YMLocalizedString(@"XPLoginAuthCodeVC2")];
self.loginBtn.enabled = YES;
if(self.pi_isPush == YES){
LoginFullInfoViewController * FullVC = [[LoginFullInfoViewController alloc] init];
[self.navigationController pushViewController:FullVC animated:YES];
return;
}
[self dismissViewControllerAnimated:YES completion:nil];
if(self.delegate && [self.delegate respondsToSelector:@selector(bindCodeSuccess)]){
[self.delegate bindCodeSuccess];
}
self.loginBtn.enabled = YES;
}
-(void)bindAuthorizationCodeFail{
[self hideHUD];

View File

@@ -11,7 +11,7 @@
#import <ReactiveObjC.h>
#import "XPLoginInputView.h"
#import "PILoginManager.h"
#import "XPLoginPwdViewController.h"
#import "XPLoginAraeViewController.h"
#import "LoginVerifCodePresent.h"
@@ -231,23 +231,13 @@
[[NSUserDefaults standardUserDefaults]setValue:@(ThirdLoginType_Phone) forKey:@"kLoginSuccessType"];
[[NSUserDefaults standardUserDefaults]synchronize];
[self showSuccessToast:YMLocalizedString(@"XPLoginPhoneViewController1")];
UIViewController *vc = self.presentingViewController;
while (vc.presentingViewController) {
vc = vc.presentingViewController;
}
[vc dismissViewControllerAnimated:YES completion:nil];
[self.navigationController popToRootViewControllerAnimated:NO];
[PILoginManager loginWithVC:self isLoginPhone:YES];
}
- (void)loginSuccess {
[XNDJTDDLoadingTool hideOnlyView:self.view];
[[NSUserDefaults standardUserDefaults]removeObjectForKey:@"kLoginSuccessType"];
[self showSuccessToast:YMLocalizedString(@"XPLoginPhoneViewController1")];
UIViewController *vc = self.presentingViewController;
while (vc.presentingViewController) {
vc = vc.presentingViewController;
}
[vc dismissViewControllerAnimated:YES completion:nil];
[self.navigationController popToRootViewControllerAnimated:NO];
[PILoginManager loginWithVC:self isLoginPhone:NO];
}
- (void)loginFailWithMsg:(NSString *)msg{
[self showErrorToast:msg];

View File

@@ -26,7 +26,7 @@
#import "AESUtils.h"
#import "LoginPresenter.h"
#import "LoginProtocol.h"
#import "PILoginManager.h"
UIKIT_EXTERN NSString * const kYouMiNumberCountKey;
NSString * const HadAgreePrivacy = @"HadAgreePrivacy";
@@ -287,7 +287,7 @@ NSString * const HadAgreePrivacy = @"HadAgreePrivacy";
}
#pragma mark - LoginProtocol
- (void)loginSuccess {
[self dismissViewControllerAnimated:YES completion:nil];
[PILoginManager loginWithVC:self isLoginPhone:NO];
[self showSuccessToast:YMLocalizedString(@"XPLoginViewController4")];
}

View File

@@ -72,7 +72,7 @@
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.avatarImageView.mas_right).offset((10));
make.right.mas_lessThanOrEqualTo(self.findButton.mas_left).mas_offset(-(10));
make.right.mas_lessThanOrEqualTo(self.findButton.mas_left).mas_offset(-0);
make.height.mas_equalTo(((20)));
make.top.equalTo(self.avatarImageView.mas_top).mas_offset((3));
}];
@@ -96,7 +96,15 @@
make.right.mas_equalTo(self.contentView).offset(-(15));
}];
CGFloat width = 28 * 20 / 14;
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(20);
make.width.mas_equalTo(width);
}];
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(20);
make.width.mas_equalTo(width);
}];
}
#pragma mark - Event Response
@@ -111,6 +119,9 @@
_fansInfo = fansInfo;
if (_fansInfo) {
self.avatarImageView.imageUrl = _fansInfo.avatar;
if(_fansInfo.nick.length > 5){
_fansInfo.nick = [NSString stringWithFormat:@"%@...",[_fansInfo.nick substringToIndex:5]];
}
self.nickLabel.text = _fansInfo.nick;
self.signLabel.text = _fansInfo.userDesc && _fansInfo.userDesc.length > 0? _fansInfo.userDesc : YMLocalizedString(@"XPMineAttentionTableViewCell0");
if (_fansInfo.useingType != ContactUseingType_In_Room && _fansInfo.useingType != ContactUseingType_Share) {
@@ -131,35 +142,7 @@
self.sexImageView.selected = _fansInfo.gender != GenderType_Male;
self.findButton.hidden = _fansInfo.userInRoomUid.length <= 0;
UIImage* image = self.experImageView.image;
if (image) {
CGFloat scale = image.size.width / image.size.height;
[self.experImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
} else {
NSURL *imgUrl = [NSURL URLWithString:_fansInfo.experUrl];
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]];
CGFloat scale = myImage.size.width / myImage.size.height;
[self.experImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
}
UIImage* charmImage = self.charmImageView.image;
if (charmImage) {
CGFloat scale = charmImage.size.width / charmImage.size.height;
[self.charmImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
} else {
NSURL *imgUrl = [NSURL URLWithString:_fansInfo.charmUrl];
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]];
CGFloat scale = myImage.size.width / myImage.size.height;
[self.charmImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
}
UIImage *nobleImage = self.nobleImageView.image;
if (nobleImage) {
@@ -256,7 +239,7 @@
- (NetImageView *)experImageView {
if (!_experImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_experImageView = [[NetImageView alloc] initWithConfig:config];
_experImageView.layer.maskedCorners = YES;
_experImageView.contentMode = UIViewContentModeScaleAspectFit;
@@ -267,7 +250,7 @@
- (NetImageView *)charmImageView {
if (!_charmImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_charmImageView = [[NetImageView alloc] initWithConfig:config];
_charmImageView.layer.maskedCorners = YES;
_charmImageView.contentMode = UIViewContentModeScaleAspectFit;

View File

@@ -73,7 +73,7 @@
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.avatarImageView.mas_right).offset((10));
make.right.mas_lessThanOrEqualTo(self.attentionButton.mas_left).mas_offset(-(10));
make.right.mas_lessThanOrEqualTo(self.attentionButton.mas_left).mas_offset(-0);
make.height.mas_equalTo(20);
make.top.equalTo(self.avatarImageView.mas_top).mas_offset((3));
}];
@@ -97,7 +97,15 @@
make.right.mas_equalTo(self.contentView).offset(-(15));
}];
CGFloat width = 28 * 20 / 14;
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(20);
make.width.mas_equalTo(width);
}];
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(20);
make.width.mas_equalTo(width);
}];
}
#pragma mark - Event Response
@@ -112,7 +120,9 @@
_fansInfo = fansInfo;
if (_fansInfo) {
self.avatarImageView.imageUrl = _fansInfo.avatar;
if(_fansInfo.nick.length > 5){
_fansInfo.nick = [NSString stringWithFormat:@"%@...",[_fansInfo.nick substringToIndex:5]];
}
self.nickLabel.text = _fansInfo.nick;
self.signLabel.text = _fansInfo.userDesc && _fansInfo.userDesc.length > 0? _fansInfo.userDesc : YMLocalizedString(@"XPMineFansTableViewCell0");
if (_fansInfo.useingType != ContactUseingType_In_Room && _fansInfo.useingType != ContactUseingType_Share) {
@@ -137,35 +147,7 @@
BOOL isMyFriend = [[NIMSDK sharedSDK].userManager isMyFriend:_fansInfo.uid];
self.attentionButton.enabled = !isMyFriend;
self.attentionButton.hidden = NO;
UIImage* image = self.experImageView.image;
if (image) {
CGFloat scale = image.size.width / image.size.height;
[self.experImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
} else {
NSURL *imgUrl = [NSURL URLWithString:_fansInfo.experUrl];
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]];
CGFloat scale = myImage.size.width / myImage.size.height;
[self.experImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
}
UIImage* charmImage = self.charmImageView.image;
if (charmImage) {
CGFloat scale = charmImage.size.width / charmImage.size.height;
[self.charmImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
} else {
NSURL *imgUrl = [NSURL URLWithString:_fansInfo.charmUrl];
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]];
CGFloat scale = myImage.size.width / myImage.size.height;
[self.charmImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
}
UIImage *nobleImage = self.nobleImageView.image;
if (nobleImage) {
@@ -263,7 +245,7 @@
- (NetImageView *)experImageView {
if (!_experImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_experImageView = [[NetImageView alloc] initWithConfig:config];
}
return _experImageView;
@@ -272,7 +254,7 @@
- (NetImageView *)charmImageView {
if (!_charmImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_charmImageView = [[NetImageView alloc] initWithConfig:config];
}
return _charmImageView;

View File

@@ -76,7 +76,15 @@
make.left.mas_equalTo(self.stackView);
make.top.mas_equalTo(self.stackView.mas_bottom).offset(7);
}];
CGFloat width = 28 * 20 / 14;
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(20);
make.width.mas_equalTo(width);
}];
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(20);
make.width.mas_equalTo(width);
}];
}
#pragma mark - Getters And Setters
@@ -95,35 +103,7 @@
self.sexImageView.backgroundColor = _userInfo.gender == GenderType_Male ? UIColorFromRGB(0x6BB3FF) :UIColorFromRGB(0xFF80CC);
self.sexImageView.titleEdgeInsets = _userInfo.gender != GenderType_Male ? UIEdgeInsetsMake(0, 2, 0, 0):UIEdgeInsetsMake(0, -1, 0, 0);
self.sexImageView.selected = _userInfo.gender != GenderType_Male;
UIImage* image = self.experImageView.image;
if (image) {
CGFloat scale = image.size.width / image.size.height;
[self.experImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
} else {
NSURL *imgUrl = [NSURL URLWithString:_userInfo.userLevelVo.experUrl];
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]];
CGFloat scale = myImage.size.width / myImage.size.height;
[self.experImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
}
UIImage* charmImage = self.charmImageView.image;
if (charmImage) {
CGFloat scale = charmImage.size.width / charmImage.size.height;
[self.charmImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
} else {
NSURL *imgUrl = [NSURL URLWithString:_userInfo.userLevelVo.charmUrl];
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]];
CGFloat scale = myImage.size.width / myImage.size.height;
[self.charmImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
}];
}
}
}
@@ -177,7 +157,7 @@
- (NetImageView *)experImageView {
if (!_experImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_experImageView = [[NetImageView alloc] initWithConfig:config];
}
return _experImageView;
@@ -186,7 +166,7 @@
- (NetImageView *)charmImageView {
if (!_charmImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_charmImageView = [[NetImageView alloc] initWithConfig:config];
}
return _charmImageView;

View File

@@ -104,19 +104,19 @@
make.width.mas_equalTo(28);
}];
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(28);
make.height.mas_equalTo(14);
}];
CGFloat width = 28 * 20 / 14;
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(20);
make.width.mas_equalTo(width);
}];
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(28);
make.height.mas_equalTo(14);
make.height.mas_equalTo(20);
make.width.mas_equalTo(width);
}];
[self.nickStackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.avatarImageView.mas_right).offset(6);
make.height.mas_equalTo(14);
make.height.mas_equalTo(20);
make.bottom.mas_equalTo(self.avatarImageView.mas_centerY).offset(-3);
}];
@@ -163,21 +163,13 @@
if (_memberInfo.experUrl) {
if (self.experImageView.state == NetImageStateLoaded) {
self.experImageView.imageUrl = _memberInfo.experUrl;
CGFloat kImageScale = self.experImageView.image.size.width / self.experImageView.image.size.height;
CGFloat imageWidth = 20 * kImageScale;
[self.experImageView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(imageWidth);
}];
} else {
@kWeakify(self);
[self.experImageView loadImageWithUrl:_memberInfo.experUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) {
@kStrongify(self);
self.experImageView.image = image;
CGFloat kImageScale = image.size.width / image.size.height;
CGFloat imageWidth = 20 * kImageScale;
[self.experImageView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(imageWidth);
}];
}];
}
}
@@ -186,21 +178,13 @@
if (_memberInfo.charmUrl) {
if (self.charmImageView.state == NetImageStateLoaded) {
self.charmImageView.imageUrl = _memberInfo.charmUrl;
CGFloat kImageScale = self.charmImageView.image.size.width / self.charmImageView.image.size.height;
CGFloat imageWidth = 20 * kImageScale;
[self.charmImageView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(imageWidth);
}];
} else {
@kWeakify(self);
[self.charmImageView loadImageWithUrl:_memberInfo.charmUrl completion:^(UIImage * _Nonnull image, NSURL * _Nonnull url) {
@kStrongify(self);
self.charmImageView.image = image;
CGFloat kImageScale = image.size.width / image.size.height;
CGFloat imageWidth = 20 * kImageScale;
[self.charmImageView mas_updateConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(imageWidth);
}];
}];
}
}
@@ -391,7 +375,7 @@
_nickStackView = [[UIStackView alloc] init];
_nickStackView.axis = UILayoutConstraintAxisHorizontal;
_nickStackView.distribution = UIStackViewDistributionFill;
_nickStackView.alignment = UIStackViewAlignmentFill;
_nickStackView.alignment = UIStackViewAlignmentCenter;
_nickStackView.spacing = 2;
}
return _nickStackView;
@@ -429,7 +413,7 @@
_experImageView = [[NetImageView alloc] initWithConfig:config];
_experImageView.userInteractionEnabled = YES;
_experImageView.hidden = YES;
_experImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _experImageView;
}
@@ -442,7 +426,7 @@
_charmImageView = [[NetImageView alloc] initWithConfig:config];
_charmImageView.userInteractionEnabled = YES;
_charmImageView.hidden = YES;
_charmImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _charmImageView;
}

View File

@@ -326,17 +326,17 @@
self.orderId = orderId;
if (@available(iOS 15.0, *)) {
PIIAPManagers *iap = [PIIAPManagers shared];
[iap requestBuyProductWithProductId:chargeProdId uuid:uuid completionHandler:^(NSError * _Nullable error) {
PIIAPRegulate *iap = [PIIAPRegulate shared];
[iap demandCommodityThingWithProductId:chargeProdId uuid:uuid completionHandler:^(NSError * _Nullable error) {
}];
@kWeakify(self);
iap.stateBlock = ^(enum StoreStateResult state, NSDictionary<NSString *,id> * _Nullable result) {
iap.ConditionBlock = ^(enum StoreConditionResult state, NSDictionary<NSString *,id> * _Nullable result) {
@kStrongify(self);
[self rechargeNewProcessStatus:state];
switch (state) {
case StoreStateResultVerifiedServer:
case StoreConditionResultVerifiedServer:
{
NSString *transactionId = result[@"transactionId"];
@@ -405,8 +405,8 @@
- (void)checkReceiptSuccess:(NSString *)transcationId {
[XNDJTDDLoadingTool hideOnlyView:kWindow];
if (@available(iOS 15.0, *)) {
PIIAPManagers *iap = [PIIAPManagers shared];
[iap transactionFinishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
PIIAPRegulate *iap = [PIIAPRegulate shared];
[iap verifyBusinessAccomplishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
}];
}
@@ -424,8 +424,8 @@
[XNDJTDDLoadingTool hideOnlyView:kWindow];
if(code == 1444){
if (@available(iOS 15.0, *)) {
PIIAPManagers *iap = [PIIAPManagers shared];
[iap transactionFinishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
PIIAPRegulate *iap = [PIIAPRegulate shared];
[iap verifyBusinessAccomplishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
}];
}
@@ -452,12 +452,12 @@
}
#pragma mark - XPIAPHelperDelegate
///
- (void)rechargeNewProcessStatus:(StoreStateResult)status {
- (void)rechargeNewProcessStatus:(StoreConditionResult)status {
if (status == StoreStateResultPay || status == StoreStateResultStart || status == StoreStateResultVerifiedServer) {
if (status == StoreConditionResultPay || status == StoreConditionResultStart || status == StoreConditionResultVerifiedServer) {
}else if (status == StoreStateResultUnowned) {
}else if (status == StoreConditionResultUnowned) {
[XNDJTDDLoadingTool hideOnlyView:kWindow];
[self showErrorToast:YMLocalizedString(@"XPIAPRechargeViewController1")];
}else{
@@ -479,9 +479,16 @@
NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:transactionIdentifier forKey:@"transcationId"];
[dictionary setObject:encodeStr forKey:@"recipt"];
[dictionary setObject:self.orderId forKey:@"orderId"];
if(transactionIdentifier != nil){
[dictionary setObject:transactionIdentifier forKey:@"transcationId"];
}
if(encodeStr != nil){
[dictionary setObject:encodeStr forKey:@"recipt"];
}
if(self.orderId != nil){
[dictionary setObject:self.orderId forKey:@"orderId"];
}
if(dictionary.allKeys.count == 0)return;
NSString *reciptJson = [dictionary toJSONString];
NSString * uid = [AccountInfoStorage instance].getUid;
BOOL saveSuccess = [RechargeStorage saveTranscationId:transactionIdentifier recipt:reciptJson uid:uid];

View File

@@ -263,7 +263,7 @@
// }
// if(list.count > 0){
// if (@available(iOS 15.0, *)) {
// PIIAPManagers *iap = [PIIAPManagers shared];
// PIIAPRegulate *iap = [PIIAPRegulate shared];
// [iap allTransactionWithList:list completionHandler:^{
//
// }];
@@ -285,9 +285,16 @@
NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:transactionIdentifier forKey:@"transcationId"];
[dictionary setObject:encodeStr forKey:@"recipt"];
[dictionary setObject:self.orderId forKey:@"orderId"];
if(transactionIdentifier != nil){
[dictionary setObject:transactionIdentifier forKey:@"transcationId"];
}
if(encodeStr != nil){
[dictionary setObject:encodeStr forKey:@"recipt"];
}
if(self.orderId != nil){
[dictionary setObject:self.orderId forKey:@"orderId"];
}
if(dictionary.allKeys.count == 0)return;
NSString *reciptJson = [dictionary toJSONString];
NSString * uid = [AccountInfoStorage instance].getUid;
BOOL saveSuccess = [RechargeStorage saveTranscationId:transactionIdentifier recipt:reciptJson uid:uid];
@@ -312,12 +319,12 @@
#pragma mark - XPIAPHelperDelegate
///
- (void)rechargeNewProcessStatus:(StoreStateResult)status {
- (void)rechargeNewProcessStatus:(StoreConditionResult)status {
if (status == StoreStateResultPay || status == StoreStateResultStart || status == StoreStateResultVerifiedServer) {
if (status == StoreConditionResultPay || status == StoreConditionResultStart || status == StoreConditionResultVerifiedServer) {
}else if (status == StoreStateResultUnowned) {
}else if (status == StoreConditionResultUnowned) {
[XNDJTDDLoadingTool hideHUDInView:kWindow];
[self showErrorToast:YMLocalizedString(@"XPIAPRechargeViewController1")];
}else{
@@ -347,17 +354,17 @@
self.orderId = orderId;
if (@available(iOS 15.0, *)) {
PIIAPManagers *iap = [PIIAPManagers shared];
[iap requestBuyProductWithProductId:chargeProdId uuid:uuid completionHandler:^(NSError * _Nullable error) {
PIIAPRegulate *iap = [PIIAPRegulate shared];
[iap demandCommodityThingWithProductId:chargeProdId uuid:uuid completionHandler:^(NSError * _Nullable error) {
}];
@kWeakify(self);
iap.stateBlock = ^(enum StoreStateResult state, NSDictionary<NSString *,id> * _Nullable result) {
iap.ConditionBlock = ^(enum StoreConditionResult state, NSDictionary<NSString *,id> * _Nullable result) {
@kStrongify(self);
[self rechargeNewProcessStatus:state];
switch (state) {
case StoreStateResultVerifiedServer:
case StoreConditionResultVerifiedServer:
{
NSString *transactionId = result[@"transactionId"];
@@ -422,8 +429,8 @@
- (void)checkReceiptSuccess:(NSString *)transcationId {
[XNDJTDDLoadingTool hideHUDInView:kWindow];
if (@available(iOS 15.0, *)) {
PIIAPManagers *iap = [PIIAPManagers shared];
[iap transactionFinishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
PIIAPRegulate *iap = [PIIAPRegulate shared];
[iap verifyBusinessAccomplishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
}];
}
@@ -440,8 +447,8 @@
[XNDJTDDLoadingTool hideHUDInView:kWindow];
if(code == 1444){
if (@available(iOS 15.0, *)) {
PIIAPManagers *iap = [PIIAPManagers shared];
[iap transactionFinishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
PIIAPRegulate *iap = [PIIAPRegulate shared];
[iap verifyBusinessAccomplishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
}];
}

View File

@@ -133,9 +133,16 @@
NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:transactionIdentifier forKey:@"transcationId"];
[dictionary setObject:encodeStr forKey:@"recipt"];
[dictionary setObject:self.orderId forKey:@"orderId"];
if(transactionIdentifier != nil){
[dictionary setObject:transactionIdentifier forKey:@"transcationId"];
}
if(encodeStr != nil){
[dictionary setObject:encodeStr forKey:@"recipt"];
}
if(self.orderId != nil){
[dictionary setObject:self.orderId forKey:@"orderId"];
}
if(dictionary.allKeys.count == 0)return;
NSString *reciptJson = [dictionary toJSONString];
NSString * uid = [AccountInfoStorage instance].getUid;
BOOL saveSuccess = [RechargeStorage saveTranscationId:transactionIdentifier recipt:reciptJson uid:uid];

View File

@@ -183,15 +183,9 @@ UIKIT_EXTERN NSString *kRequestRicket;
if (@available(iOS 15.0, *)) {//iOS1522
self.tableView.sectionHeaderTopPadding = 0;
}
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(requestRicketSuccess:) name:kRequestRicket object:nil];
}
-(void)requestRicketSuccess:(NSNotification *)not{
if([not.object isKindOfClass:[NSDictionary class]])return;
BOOL is = [not.object boolValue];
if(is == YES){
[self.presenter getUserInfo];
}
}
- (void)initSubViewConstraints {
[self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.mas_equalTo(0);

View File

@@ -26,7 +26,7 @@
[[self getView] getMonentsAttentionListSuccess:listInfo state:state];
} fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView] getMonentsAttentionListFail:msg state:state];
} showLoading:YES] dynamicId:dynamicId pageSize:pageSizeStr types:@"0,2"];
} showLoading:NO] dynamicId:dynamicId pageSize:pageSizeStr types:@"0,2"];
}
///

View File

@@ -26,7 +26,7 @@
[[self getView] getMonentsLatestListSuccess:listInfo state:state];
} fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView] getMonentsLatestListFail:msg state:state];
} showLoading:YES] dynamicId:dynamicId pageSize:pageSizeStr types:@"0,2"];
} showLoading:NO] dynamicId:dynamicId pageSize:pageSizeStr types:@"0,2"];
}
///

View File

@@ -26,7 +26,7 @@
[[self getView] getMonentsRecommendListSuccess:array state:state];
} fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView] getMonentsRecommendListFail:msg state:state];
} showLoading:YES] page:pageStr pageSize:pageSizeStr types:@"0,2"];
} showLoading:NO] page:pageStr pageSize:pageSizeStr types:@"0,2"];
}
@@ -40,7 +40,7 @@
[Api monentsTopicList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [MonentsTopicModel modelsWithArray:data.data[@"records"]];
[[self getView] monentsTopicListSuccess:array];
}] uid:uid page:pageStr pageSize:pageSizeStr worldTypeId:@"1"];
}showLoading:NO] uid:uid page:pageStr pageSize:pageSizeStr worldTypeId:@"1"];
}
///

View File

@@ -25,7 +25,7 @@
#import "XPMonentsPublishViewController.h"
@interface XPMonentTopicContainerViewController ()<JXPagerViewDelegate,JXCategoryViewDelegate>
@property (nonatomic,strong) JXCategoryTitleView *categoryView;
@property (nonatomic,strong) JXCategoryTitleView *pi_categoryView;
@property (nonatomic,strong) JXCategoryIndicatorLineView *lineView;
@property (nonatomic,strong) JXPagerListRefreshView *pagerContentView;
@property (nonatomic,strong) NSArray<NSString *> *titles;
@@ -101,7 +101,7 @@
}
- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView {
return self.categoryView;
return self.pi_categoryView;
}
- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView {
@@ -137,27 +137,27 @@
self.latestVC.worldId = _worldId;
}
- (JXCategoryTitleView *)categoryView {
if (!_categoryView) {
_categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 46)];
_categoryView.titles = self.titles;
_categoryView.backgroundColor = [UIColor whiteColor];
_categoryView.delegate = self;
_categoryView.titleSelectedColor = [DJDKMIMOMColor mainTextColor];
_categoryView.titleColor = [DJDKMIMOMColor secondTextColor];
_categoryView.titleSelectedFont = [UIFont boldSystemFontOfSize:18];
_categoryView.titleFont = [UIFont systemFontOfSize:15];
_categoryView.titleColorGradientEnabled = YES;
_categoryView.titleLabelZoomEnabled = NO;
_categoryView.indicators = @[self.lineView];
_categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagerContentView.listContainerView;
_categoryView.averageCellSpacingEnabled = NO;
_categoryView.contentEdgeInsetLeft = 20;
_categoryView.contentEdgeInsetRight = 20;
_categoryView.cellSpacing = 30;
- (JXCategoryTitleView *)pi_categoryView {
if (!_pi_categoryView) {
_pi_categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 46)];
_pi_categoryView.titles = self.titles;
_pi_categoryView.backgroundColor = [UIColor whiteColor];
_pi_categoryView.delegate = self;
_pi_categoryView.titleSelectedColor = [DJDKMIMOMColor mainTextColor];
_pi_categoryView.titleColor = [DJDKMIMOMColor secondTextColor];
_pi_categoryView.titleSelectedFont = [UIFont boldSystemFontOfSize:18];
_pi_categoryView.titleFont = [UIFont systemFontOfSize:15];
_pi_categoryView.titleColorGradientEnabled = YES;
_pi_categoryView.titleLabelZoomEnabled = NO;
_pi_categoryView.indicators = @[self.lineView];
_pi_categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagerContentView.listContainerView;
_pi_categoryView.averageCellSpacingEnabled = NO;
_pi_categoryView.contentEdgeInsetLeft = 20;
_pi_categoryView.contentEdgeInsetRight = 20;
_pi_categoryView.cellSpacing = 30;
}
return _categoryView;
return _pi_categoryView;
}
- (JXCategoryIndicatorLineView *)lineView {

View File

@@ -58,17 +58,11 @@ UIKIT_EXTERN NSString *kRequestRicket;
#pragma mark - Private Method
- (void)initSubViews {
[self.view addSubview:self.tableView];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(requestRicketSuccess:) name:kRequestRicket object:nil];
}
-(void)requestRicketSuccess:(NSNotification *)not{
if([not.object isKindOfClass:[NSDictionary class]])return;
BOOL is = [not.object boolValue];
if(is == YES){
[self headerRefresh];
}
}
- (void)initSubViewConstraints {
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self.view);
@@ -88,7 +82,7 @@ UIKIT_EXTERN NSString *kRequestRicket;
footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor];
footer.stateLabel.font = [UIFont systemFontOfSize:10.0];
self.tableView.mj_footer = footer;
[self.tableView.mj_header beginRefreshing];
[self headerRefresh];
}

View File

@@ -64,16 +64,10 @@ UIKIT_EXTERN NSString *kRequestRicket;
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self.view);
}];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(requestRicketSuccess:) name:kRequestRicket object:nil];
}
-(void)requestRicketSuccess:(NSNotification *)not{
if([not.object isKindOfClass:[NSDictionary class]])return;
BOOL is = [not.object boolValue];
if(is == YES){
[self headerRefresh];
}
}
#pragma mark -
- (void)initHeaderAndFooterRrfresh {
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)];
@@ -87,7 +81,7 @@ UIKIT_EXTERN NSString *kRequestRicket;
footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor];
footer.stateLabel.font = [UIFont systemFontOfSize:10.0];
self.tableView.mj_footer = footer;
[self.tableView.mj_header beginRefreshing];
[self headerRefresh];
}

View File

@@ -71,18 +71,10 @@ UIKIT_EXTERN NSString *kRequestRicket;
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.mas_equalTo(self.view);
}];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(requestRicketSuccess:) name:kRequestRicket object:nil];
}
-(void)requestRicketSuccess:(NSNotification *)not{
if([not.object isKindOfClass:[NSDictionary class]])return;
BOOL is = [not.object boolValue];
if(is == YES){
[self headerRefresh];
}else{
[XNDJTDDLoadingTool hideOnlyView:self.tabBarController.view];
}
}
#pragma mark -
- (void)initHeaderAndFooterRrfresh {
@@ -97,13 +89,13 @@ UIKIT_EXTERN NSString *kRequestRicket;
footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor];
footer.stateLabel.font = [UIFont systemFontOfSize:10.0];
self.tableView.mj_footer = footer;
[self.tableView.mj_header beginRefreshing];
[self headerRefresh];
}
#pragma mark - fangfa
- (void)headerRefresh {
[XNDJTDDLoadingTool showOnlyView:self.tabBarController.view];
if([AccountInfoStorage instance].isRequestRicket == YES){
return;
}
@@ -249,7 +241,6 @@ UIKIT_EXTERN NSString *kRequestRicket;
}
[self.tableView.mj_footer endRefreshing];
}
[XNDJTDDLoadingTool hideOnlyView:self.tabBarController.view];
[self.tableView reloadData];
}

View File

@@ -46,7 +46,6 @@ NS_ASSUME_NONNULL_BEGIN
//是否为周榜top1
@property(nonatomic,assign) BOOL isWeekTop1;
@property(nonatomic,copy) NSString *inRoomUid;
//是否在麦位
@property(nonatomic,assign) BOOL inMic;
///是否在线

View File

@@ -135,8 +135,11 @@
}
///
-(void)getFriendListWithGroup:(dispatch_group_t)group{
if([AccountInfoStorage instance].getUid.length == 0){
[[self getView]getFriendListFailWithGroup:group];
return;
}
[Api requsetFriendListComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
if([AccountInfoStorage instance].getUid.length == 0)return;
NSArray * array = [HomePlayRoomModel modelsWithArray:data.data];
[[self getView]getFriendListSuccess:array withGroup:group];
} fail:^(NSInteger code, NSString * _Nullable msg) {

View File

@@ -161,7 +161,7 @@
NetImageConfig *config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder];
_bgImageView = [[NetImageView alloc]initWithConfig:config];
[_bgImageView setCornerWithLeftTopCorner:kGetScaleWidth(14) rightTopCorner:kGetScaleWidth(14) bottomLeftCorner:kGetScaleWidth(15) bottomRightCorner:kGetScaleWidth(14) size:CGSizeMake(kGetScaleWidth(170), kGetScaleWidth(174))];
[_bgImageView setCornerWithLeftTopCorner:kGetScaleWidth(16) rightTopCorner:kGetScaleWidth(16) bottomLeftCorner:kGetScaleWidth(16) bottomRightCorner:kGetScaleWidth(16) size:CGSizeMake(kGetScaleWidth(170), kGetScaleWidth(174))];
}
return _bgImageView;
}

View File

@@ -24,7 +24,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface XPNewHomePartyTableViewCell : UITableViewCell
@property (nonatomic,strong) HomePlayRoomModel *roomInfo;
@property (nonatomic,strong) HomeRecommendRoomModel *roomInfo1;
@property(nonatomic,weak) id<XPNewHomePartyTableViewCellDelegate>delegate;
///声音卡时svga是否播放动画
-(void)setPlaySoundStatus:(BOOL)isPlay;

View File

@@ -243,14 +243,7 @@
-(void)setPlaySoundTime:(NSInteger)time{
_audioView.voiceDura = @(time).stringValue;
}
- (void)setRoomInfo1:(HomeRecommendRoomModel *)roomInfo1 {
_roomInfo1 = roomInfo1;
if (_roomInfo1) {
}
}
-(void)didSelectItemAction{

View File

@@ -92,6 +92,8 @@
_collectionView.delegate = self;
_collectionView.tag = 9000002;
_collectionView.backgroundColor = [UIColor clearColor];
_collectionView.showsVerticalScrollIndicator = NO;
_collectionView.showsHorizontalScrollIndicator = NO;
[_collectionView registerClass:[XPNewHomePlayItemCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPNewHomePlayItemCollectionViewCell class])];
}
return _collectionView;

View File

@@ -0,0 +1,19 @@
//
// PIPageControl.h
// YuMi
//
// Created by duoban on 2023/10/8.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface PIPageControl : UIView
@property(nonatomic,assign) NSInteger numberOfPages;
@property(nonatomic,assign) NSInteger currentPage;
@property(nonatomic,strong) UIColor *currentPageIndicatorTintColor;
@property(nonatomic,strong) UIColor *pageIndicatorTintColor;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,35 @@
//
// PIPageControl.m
// YuMi
//
// Created by duoban on 2023/10/8.
//
#import "PIPageControl.h"
@implementation PIPageControl
-(void)setNumberOfPages:(NSInteger)numberOfPages{
_numberOfPages = numberOfPages;
for (int i = 0; i < _numberOfPages; i++) {
UIView *dosView = [[UIView alloc]init];
dosView.tag = 100 + i;
[self addSubview:dosView];
CGFloat left = i * kGetScaleWidth(7);
[dosView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(kGetScaleWidth(4));
make.top.equalTo(self);
make.left.mas_equalTo(left);
}];
dosView.layer.cornerRadius = kGetScaleWidth(4)/2;
dosView.layer.masksToBounds = YES;
}
}
- (void)setCurrentPage:(NSInteger)currentPage{
_currentPage = currentPage;
for (int i = 0; i < _numberOfPages; i++) {
UIView *dosView = [self viewWithTag:100 + i];
dosView.backgroundColor = _currentPage == i ? _currentPageIndicatorTintColor : _pageIndicatorTintColor;
}
}
@end

View File

@@ -8,10 +8,12 @@
#import "XPNewHomeHeadView.h"
#import <SDCycleScrollView/SDCycleScrollView.h>
#import "XPNewHomeItemCell.h"
#import "PIPageControl.h"
@interface XPNewHomeHeadView ()<SDCycleScrollViewDelegate,UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
@property(nonatomic,strong) UICollectionView *collectionView;
///
@property (nonatomic, strong) SDCycleScrollView *pi_BannerView;
@property(nonatomic,strong) PIPageControl *pageControl;
@end
@implementation XPNewHomeHeadView
@@ -26,6 +28,7 @@
-(void)installUI{
[self addSubview:self.collectionView];
[self addSubview:self.pi_BannerView];
[self addSubview:self.pageControl];
}
-(void)installConstraints{
@@ -41,6 +44,7 @@
make.height.mas_equalTo(kGetScaleWidth(80));
}];
}
#pragma mark - SDCycleScrollViewDelegate
- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didSelectItemAtIndex:(NSInteger)index {
@@ -50,7 +54,9 @@
}
}
- (void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didScrollToIndex:(NSInteger)index{
self.pageControl.currentPage = index;
}
#pragma mark - Getters And Setters
- (void)setBannerList:(NSArray<HomeBannerInfoModel *> *)bannerList {
_bannerList = bannerList;
@@ -63,6 +69,16 @@
}];
if (array.count > 0) {
self.pi_BannerView.imageURLStringsGroup = array;
CGFloat width = array.count * kGetScaleWidth(7) - kGetScaleWidth(3);
[self.pageControl mas_remakeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(-kGetScaleWidth(4));
make.height.mas_equalTo(kGetScaleWidth(4));
make.centerX.equalTo(self);
make.width.mas_equalTo(width);
}];
self.pageControl.numberOfPages = array.count;
self.pageControl.currentPage = 0;
[self.pi_BannerView autoScroll];
}
_pi_BannerView.hidden = NO;
@@ -120,22 +136,25 @@
- (SDCycleScrollView *)pi_BannerView {
if (!_pi_BannerView) {
_pi_BannerView = [[SDCycleScrollView alloc] init];
_pi_BannerView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectZero delegate:self placeholderImage:[UIImageConstant defalutBannerPlaceholder]];
_pi_BannerView.backgroundColor = [UIColor clearColor];
_pi_BannerView.layer.cornerRadius = 10;
_pi_BannerView.layer.masksToBounds = YES;
_pi_BannerView.delegate = self;
_pi_BannerView.showPageControl = YES;
_pi_BannerView.showPageControl = NO;
_pi_BannerView.autoScrollTimeInterval = 5.0;
_pi_BannerView.currentPageDotColor = UIColorFromRGB(0x9168FA);
_pi_BannerView.pageDotColor = UIColorRGBAlpha(0xB3B3C3, 0.4);
_pi_BannerView.pageControlDotSize = CGSizeMake(kGetScaleWidth(4), kGetScaleWidth(4));
_pi_BannerView.bannerImageViewContentMode = UIViewContentModeScaleAspectFill;
_pi_BannerView.placeholderImage = [UIImageConstant defalutBannerPlaceholder];
_pi_BannerView.tag = 9000001;
_pi_BannerView.hidden = YES;
}
return _pi_BannerView;
}
- (PIPageControl *)pageControl{
if(!_pageControl){
_pageControl = [[PIPageControl alloc]init];
_pageControl.currentPageIndicatorTintColor = UIColorFromRGB(0x9168FA);
_pageControl.pageIndicatorTintColor = UIColorRGBAlpha(0xB3B3C3, 0.4);
}
return _pageControl;
}
@end

View File

@@ -47,8 +47,8 @@
[self.searchView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self).offset(15);
make.height.mas_equalTo(32);
make.top.mas_equalTo(self).offset(statusbarHeight + 6);
make.height.mas_equalTo(34);
make.top.mas_equalTo(self).offset(statusbarHeight + 5);
make.right.mas_equalTo(self.rankButton.mas_left).offset(-15);
}];
@@ -100,8 +100,8 @@
- (UIView *)searchView {
if (!_searchView) {
_searchView = [[UIView alloc] init];
_searchView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.5];
_searchView.layer.cornerRadius = 16;
_searchView.backgroundColor = UIColorFromRGB(0xFAFBFC);
_searchView.layer.cornerRadius = 17;
_searchView.layer.masksToBounds = YES;
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognizer)];
[_searchView addGestureRecognizer:tap];
@@ -121,8 +121,8 @@
- (UILabel *)searchLabel {
if (!_searchLabel) {
_searchLabel = [[UILabel alloc] init];
_searchLabel.font = [UIFont systemFontOfSize:12];
_searchLabel.textColor = [DJDKMIMOMColor secondTextColor];
_searchLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightRegular];
_searchLabel.textColor = UIColorFromRGB(0xB8B7C7);
_searchLabel.text = YMLocalizedString(@"XPNewHomeNavView0");
}
return _searchLabel;

View File

@@ -153,7 +153,10 @@ UIKIT_EXTERN NSString * const kShieldingNotification;
if(self.refreshComplete){
self.refreshComplete();
}
[self.tableView reloadData];
if(self.cell == nil){///
[self.tableView reloadData];
}
});
@@ -458,6 +461,7 @@ UIKIT_EXTERN NSString * const kShieldingNotification;
-(void)xPNewHomePartyTableViewCell:(XPNewHomePartyTableViewCell *_Nullable)cell didSelectChat:(HomePlayRoomModel *_Nonnull)roomModel{
if(roomModel.inMic == YES){
[XPRoomViewController openRoom:roomModel.inRoomUid fromNick:roomModel.nick fromType:UserEnterRoomFromType_Follow_User fromUid:roomModel.uid viewController:self];
return;
}

View File

@@ -435,7 +435,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
#pragma mark - Getters And Setters
- (PIHoemCategoryTitleView *)titleView {
if (!_titleView) {
_titleView = [[PIHoemCategoryTitleView alloc] init];
_titleView = [[PIHoemCategoryTitleView alloc] initWithFrame:CGRectZero];
_titleView.delegate = self;
_titleView.titles = self.titles;
_titleView.backgroundColor = [UIColor clearColor];

View File

@@ -162,12 +162,12 @@
}
-(void)resumeTimer{
if(self.giftEffectTimer != nil){
dispatch_resume(self.giftEffectTimer);
dispatch_source_cancel(self.giftEffectTimer);
self.giftEffectTimer = nil;
}
if(self.giftTimer != nil){
dispatch_resume(self.giftTimer);
dispatch_source_cancel(self.giftTimer);
self.giftTimer = nil;
}
[self.giftPagView removeListener:self];

View File

@@ -12,7 +12,7 @@
///
@property(nonatomic,strong) UIImageView *titleView;
///
@property(nonatomic,strong) UIImageView *iconView;
@property(nonatomic,strong) UIImageView *pi_iconView;
///
@property(nonatomic,strong) UIImageView *bgImageView;
@@ -41,7 +41,7 @@
[self addSubview:self.titleView];
[self.bgImageView addSubview:self.closeView];
[self.bgImageView addSubview:self.getView];
[self.bgImageView addSubview:self.iconView];
[self.bgImageView addSubview:self.pi_iconView];
[self.bgImageView addSubview:self.numView];
[self.bgImageView addSubview:self.chooseBnt];
[self.bgImageView addSubview:self.tipsView];
@@ -69,7 +69,7 @@
make.height.mas_equalTo(kGetScaleWidth(20));
make.centerX.equalTo(self.bgImageView);
}];
[self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
[self.pi_iconView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(kGetScaleWidth(80));
make.centerX.equalTo(self.bgImageView);
make.top.equalTo(self.getView.mas_bottom).mas_offset(kGetScaleWidth(4));
@@ -77,7 +77,7 @@
[self.numView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.bgImageView);
make.height.mas_equalTo(kGetScaleWidth(22));
make.top.equalTo(self.iconView.mas_bottom).mas_offset(kGetScaleWidth(4));
make.top.equalTo(self.pi_iconView.mas_bottom).mas_offset(kGetScaleWidth(4));
}];
[self.tipsView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.bgImageView).mas_offset(kGetScaleWidth(6));
@@ -137,12 +137,12 @@
}
return _bgImageView;
}
-(UIImageView *)iconView{
if(!_iconView){
_iconView = [UIImageView new];
_iconView.image = kImage(@"room_candy_tree_buy_love_icon");
-(UIImageView *)pi_iconView{
if(!_pi_iconView){
_pi_iconView = [UIImageView new];
_pi_iconView.image = kImage(@"room_candy_tree_buy_love_icon");
}
return _iconView;
return _pi_iconView;
}
-(UIImageView *)titleView{
if(!_titleView){

View File

@@ -112,9 +112,9 @@
- (void)textFieldDidChange:(UITextField *)textField {
if(textField.text.integerValue <= 0){
textField.text = @"";
}else if(textField.text.integerValue > 200){
}else if(textField.text.integerValue > 99999){
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPCandyTreeViewController5")];
textField.text = @"200";
textField.text = @"99999";
}
self.chooseNum = textField.text;
@@ -127,9 +127,9 @@
- (void)textFieldDidEndEditing:(UITextField *)textField{
if(textField.text.length <= 0){
textField.text = @"";
}else if(textField.text.integerValue > 200){
}else if(textField.text.integerValue > 99999){
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPCandyTreeViewController5")];
textField.text = @"200";
textField.text = @"99999";
}
self.chooseNum = textField.text;
NSArray *btnArr = @[self.oneTapBtn,self.tenTapBtn,self.hundredTapBtn];
@@ -285,6 +285,7 @@
_textField.keyboardType = UIKeyboardTypeNumberPad;
_textField.textAlignment = NSTextAlignmentCenter;
_textField.delegate = self;
_textField.adjustsFontSizeToFitWidth = YES;
_textField.backgroundColor = [UIColor clearColor];
[_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}

View File

@@ -70,9 +70,9 @@
- (void)textFieldDidChanged:(UITextField *)textField {
if(textField.text.integerValue <= 0){
textField.text = @"";
}else if(textField.text.integerValue > 200){
}else if(textField.text.integerValue > 99999){
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPCandyTreeViewController5")];
textField.text = @"200";
textField.text = @"99999";
}
@@ -83,9 +83,9 @@
- (void)textFieldDidEndEditing:(UITextField *)textField{
if(textField.text.length <= 0){
textField.text = @"";
}else if(textField.text.integerValue > 200){
}else if(textField.text.integerValue > 99999){
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPCandyTreeViewController5")];
textField.text = @"200";
textField.text = @"99999";
}
if(self.delegate && [self.delegate respondsToSelector:@selector(inputLoveNum:)]){
@@ -114,8 +114,8 @@
-(void)addBtnAction{
NSInteger num = self.textFiled.text.integerValue + 10;
if(num > 200){
num = 200;
if(num > 99999){
num = 99999;
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPCandyTreeViewController5")];
}
self.textFiled.text = @(num).stringValue;

View File

@@ -12,7 +12,7 @@
@property(nonatomic,strong) UIButton *closeView;
///
@property(nonatomic,strong) UIImageView *iconView;
@property(nonatomic,strong) UIImageView *pi_iconView;
///
@property(nonatomic,strong) UIImageView *bgImageView;
///
@@ -91,7 +91,7 @@
[self addSubview:self.bgImageView];
[self addSubview:self.titleView];
[self.bgImageView addSubview:self.closeView];
[self.bgImageView addSubview:self.iconView];
[self.bgImageView addSubview:self.pi_iconView];
[self.bgImageView addSubview:self.numView];
[self.bgImageView addSubview:self.titleTipsView];
[self.bgImageView addSubview:self.buyBtn];
@@ -123,7 +123,7 @@
make.height.mas_equalTo(kGetScaleWidth(17));
make.centerX.equalTo(self.bgImageView);
}];
[self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
[self.pi_iconView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(kGetScaleWidth(80));
make.centerX.equalTo(self.bgImageView);
make.top.equalTo(self.titleTipsView.mas_bottom).mas_offset(8);
@@ -131,7 +131,7 @@
[self.numView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.bgImageView);
make.height.mas_equalTo(kGetScaleWidth(22));
make.top.equalTo(self.iconView.mas_bottom).mas_offset(kGetScaleWidth(5));
make.top.equalTo(self.pi_iconView.mas_bottom).mas_offset(kGetScaleWidth(5));
}];
[self.buyBtn mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -159,7 +159,7 @@
[self addSubview:self.titleView];
[self.bgImageView addSubview:self.closeView];
[self.bgImageView addSubview:self.titleTipsView];
[self.bgImageView addSubview:self.iconView];
[self.bgImageView addSubview:self.pi_iconView];
[self.bgImageView addSubview:self.numView];
[self.bgImageView addSubview:self.inputNumView];
[self.bgImageView addSubview:self.buyBtn];
@@ -188,7 +188,7 @@
make.height.mas_equalTo(kGetScaleWidth(17));
make.centerX.equalTo(self.bgImageView);
}];
[self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
[self.pi_iconView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(kGetScaleWidth(80));
make.centerX.equalTo(self.bgImageView);
make.top.equalTo(self.titleTipsView.mas_bottom).mas_offset(kGetScaleWidth(8));
@@ -196,7 +196,7 @@
[self.numView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.bgImageView);
make.height.mas_equalTo(kGetScaleWidth(22));
make.top.equalTo(self.iconView.mas_bottom).mas_offset(kGetScaleWidth(5));
make.top.equalTo(self.pi_iconView.mas_bottom).mas_offset(kGetScaleWidth(5));
}];
[self.inputNumView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.numView.mas_bottom).mas_offset(kGetScaleWidth(5));
@@ -286,12 +286,12 @@
}
return _bgImageView;
}
-(UIImageView *)iconView{
if(!_iconView){
_iconView = [UIImageView new];
_iconView.image = kImage(@"room_candy_tree_buy_love_icon");
-(UIImageView *)pi_iconView{
if(!_pi_iconView){
_pi_iconView = [UIImageView new];
_pi_iconView.image = kImage(@"room_candy_tree_buy_love_icon");
}
return _iconView;
return _pi_iconView;
}
-(UIImageView *)titleView{
if(!_titleView){

View File

@@ -316,17 +316,17 @@
if (@available(iOS 15.0, *)) {
PIIAPManagers *iap = [PIIAPManagers shared];
[iap requestBuyProductWithProductId:chargeProdId uuid:uuid completionHandler:^(NSError * _Nullable error) {
PIIAPRegulate *iap = [PIIAPRegulate shared];
[iap demandCommodityThingWithProductId:chargeProdId uuid:uuid completionHandler:^(NSError * _Nullable error) {
}];
@kWeakify(self);
iap.stateBlock = ^(enum StoreStateResult state, NSDictionary<NSString *,id> * _Nullable result) {
iap.ConditionBlock = ^(enum StoreConditionResult state, NSDictionary<NSString *,id> * _Nullable result) {
@kStrongify(self);
[self rechargeNewProcessStatus:state];
switch (state) {
case StoreStateResultVerifiedServer:
case StoreConditionResultVerifiedServer:
{
NSString *transactionId = result[@"transactionId"];
@@ -357,12 +357,12 @@
#pragma mark - XPIAPHelperDelegate
///
- (void)rechargeNewProcessStatus:(StoreStateResult)status {
- (void)rechargeNewProcessStatus:(StoreConditionResult)status {
if (status == StoreStateResultPay || status == StoreStateResultStart || status == StoreStateResultVerifiedServer) {
if (status == StoreConditionResultPay || status == StoreConditionResultStart || status == StoreConditionResultVerifiedServer) {
}else if (status == StoreStateResultUnowned) {
}else if (status == StoreConditionResultUnowned) {
[XNDJTDDLoadingTool hideOnlyView:kWindow];
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPIAPRechargeViewController1")];
}else{
@@ -385,9 +385,16 @@
NSData *receipt = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
NSString *encodeStr = [receipt base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[dictionary setObject:transactionIdentifier forKey:@"transcationId"];
[dictionary setObject:encodeStr forKey:@"recipt"];
[dictionary setObject:self.orderId forKey:@"orderId"];
if(transactionIdentifier != nil){
[dictionary setObject:transactionIdentifier forKey:@"transcationId"];
}
if(encodeStr != nil){
[dictionary setObject:encodeStr forKey:@"recipt"];
}
if(self.orderId != nil){
[dictionary setObject:self.orderId forKey:@"orderId"];
}
if(dictionary.allKeys.count == 0)return;
NSString *reciptJson = [dictionary toJSONString];
NSString * uid = [AccountInfoStorage instance].getUid;
BOOL saveSuccess = [RechargeStorage saveTranscationId:transactionIdentifier recipt:reciptJson uid:uid];
@@ -419,7 +426,7 @@
// }
// if(list.count > 0){
// if (@available(iOS 15.0, *)) {
// PIIAPManagers *iap = [PIIAPManagers shared];
// PIIAPRegulate *iap = [PIIAPRegulate shared];
// [iap allTransactionWithList:list completionHandler:^{
//
// }];
@@ -446,8 +453,8 @@
} else {
if(code == 1444){
if (@available(iOS 15.0, *)) {
PIIAPManagers *iap = [PIIAPManagers shared];
[iap transactionFinishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
PIIAPRegulate *iap = [PIIAPRegulate shared];
[iap verifyBusinessAccomplishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
}];
}
@@ -465,8 +472,8 @@
///
- (void)checkReceiptSuccess:(NSString *)transcationId {
if (@available(iOS 15.0, *)) {
PIIAPManagers *iap = [PIIAPManagers shared];
[iap transactionFinishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
PIIAPRegulate *iap = [PIIAPRegulate shared];
[iap verifyBusinessAccomplishWithTransaction:[NSString stringWithFormat:@"%@",transcationId] completionHandler:^{
}];
}

View File

@@ -118,7 +118,7 @@
- (NetImageView *)iconView{
if (!_iconView){
NetImageConfig *config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defalutEmptyPlaceholder];
config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder];
_iconView = [[NetImageView alloc]initWithConfig:config];
}

View File

@@ -10,15 +10,15 @@
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, XPRoomMenuItemType) {
XPRoomMenuItemType_Input = 1,
XPRoomMenuItemType_Mic,///话筒
XPRoomMenuItemType_Face,///表情
XPRoomMenuItemType_Message,///房间私聊
XPRoomMenuItemType_More,///更多
XPRoomMenuItemType_ArrangeMic,///排麦
XPRoomMenuItemType_Gift,///礼物
XPRoomMenuItemType_Input = 1,
XPRoomMenuItemType_Mic,///话筒
XPRoomMenuItemType_Voice, ///声音
XPRoomMenuItemType_Face,///表情
XPRoomMenuItemType_Message,///房间私聊
XPRoomMenuItemType_More,///更多
XPRoomMenuItemType_ArrangeMic,///排麦
XPRoomMenuItemType_Gift,///礼物
XPRoomMenuItemType_Noble,///贵族
XPRoomMenuItemType_Play,///更多玩法
};
@interface XPRoomMenuItem : NSObject

View File

@@ -1,8 +1,8 @@
//
// YMRoomBottomMenuView.m
// YUMI
// XPRoomBottomMenuView.m
// xplan-ios
//
// Created by YUMI on 2021/10/11.
// Created by on 2021/10/11.
//
#import "XPRoomMenuContainerView.h"
@@ -12,12 +12,10 @@
#import "AccountInfoStorage.h"
#import "TTPopup.h"
#import "RtcManager.h"
#import "XNDJTDDLoadingTool.h"
#import "StatisticsServiceHelper.h"
#import "DJDKMIMOMColor.h"
#import "YUMIMacroUitls.h"
#import "XCCurrentVCStackManager.h"
#import "ClientConfig.h"
#import "UIImage+Utils.h"
///Model
#import "XPRoomMenuItem.h"
#import "MicroQueueModel.h"
@@ -30,12 +28,10 @@
#import "XPSendGiftView.h"
#import "SessionListViewController.h"
#import "XPRoomMoreMenuViewController.h"
#import "XPNobleCenterViewController.h"
#import "XPRoomFaceViewController.h"
#import "XPRoomHalfMessageView.h"
#import "XPRoomMessageBubbleView.h"
#import "XPRoomMorePlayViewController.h"
NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
@interface XPRoomMenuContainerView ()<XPRoomMessageBubbleViewDelegate>
///
@@ -46,6 +42,8 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
@property (nonatomic,strong) UIButton *inputButton;
///
@property (nonatomic,strong) UIButton *micButton;
///
@property (nonatomic,strong) UIButton *voiceButton;
///
@property (nonatomic,strong) UIButton *faceButton;
///
@@ -69,113 +67,133 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
@implementation XPRoomMenuContainerView
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate {
self = [super init];
if (self) {
self.delegate = delegate;
[self initSubViews];
[self initSubViewConstraints];
self = [super init];
if (self) {
self.delegate = delegate;
[self initSubViews];
[self initSubViewConstraints];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showGiftView:) name:@"kShowGiftView" object:nil];
}
return self;
}
return self;
}
- (void)menuResignFirstResponder {
[self.inputTextView.editTextFiled resignFirstResponder];
[self.inputTextView.editTextFiled resignFirstResponder];
}
#pragma mark - Response
- (void)menuButtonAction:(UIButton *)sender {
XPRoomMenuItemType type = sender.tag;
switch (type) {
case XPRoomMenuItemType_Input:
{
if (self.delegate.getRoomInfo.isCloseScreen) {
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView0")];
return;
}
if (self.delegate.getRoomInfo.type == RoomType_Anchor) {
self.inputTextView = [XPRoomSendTextView showTextView:self.superview.superview delegate:self.delegate atUid:nil atNick:nil];
} else {
self.inputTextView = [XPRoomSendTextView showTextView:self.superview delegate:self.delegate atUid:nil atNick:nil];
}
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_chatbox_click];
}
break;
XPRoomMenuItemType type = sender.tag;
switch (type) {
case XPRoomMenuItemType_Input:
{
if (self.delegate.getRoomInfo.isCloseScreen) {
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView0")];
return;
}
if (self.delegate.getRoomInfo.type == RoomType_Anchor) {
self.inputTextView = [XPRoomSendTextView showTextView:self.superview.superview delegate:self.delegate atUid:nil atNick:nil];
} else {
self.inputTextView = [XPRoomSendTextView showTextView:self.superview delegate:self.delegate atUid:nil atNick:nil];
}
}
break;
case XPRoomMenuItemType_Mic: {
[RtcManager instance].localMuted = !self.micButton.isSelected;
if([RtcManager instance].localMuted == NO){
for (MicroQueueModel *sequence in [self.delegate getMicroQueue].allValues) {
if ([AccountInfoStorage instance].getUid.integerValue == sequence.userInfo.uid) {
[[RtcManager instance] broadcast:YES];
}
}
}
self.micButton.selected = [RtcManager instance].isLocalMuted;
}
break;
case XPRoomMenuItemType_Face: {
XPRoomFaceViewController * faceVC = [[XPRoomFaceViewController alloc] init];
faceVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
faceVC.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
[self.delegate.getCurrentNav presentViewController:faceVC animated:YES completion:nil];
case XPRoomMenuItemType_Voice: {
[RtcManager instance].remoteMuted = !self.voiceButton.isSelected;
self.voiceButton.selected = [RtcManager instance].isRemoteMuted;
}
break;
case XPRoomMenuItemType_Gift: {
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_gift_click];
NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid];
XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid];
giftView.delegate = self.delegate;
case XPRoomMenuItemType_Face: {
XPRoomFaceViewController * faceVC = [[XPRoomFaceViewController alloc] init];
faceVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
faceVC.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
[self.delegate.getCurrentNav presentViewController:faceVC animated:YES completion:nil];
}
break;
case XPRoomMenuItemType_Gift: {
NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid];
XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid];
giftView.delegate = self.delegate;
giftView.freeModel = self.freeModel;
NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]];
[giftView configGiftUsers:giftUses];
[self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil];
}
break;
case XPRoomMenuItemType_Message:
{
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_privateletter_click];
UIViewController * controller = (UIViewController *)self.delegate;
XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller];
[controller.view addSubview:halfMessageView];
[UIView animateWithDuration:.35 animations:^{
CGRect rect = halfMessageView.frame;
rect.origin.y = 0;
halfMessageView.frame = rect;
}];
}
break;
case XPRoomMenuItemType_More: {
XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initWithDelegate:self.delegate];
[self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil];
}
break;
case XPRoomMenuItemType_ArrangeMic:{
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode && self.delegate.isRoomPKPlaying) {
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView1")];
return;
}
self.arrangeMicButton.selected = NO;
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid];
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
NIMChatroomMember * member;
if (error == nil) {
member = members.firstObject;
}
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init];
info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid];
info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
info.nick = roomInfo.nick;
info.roomAvatar = roomInfo.avatar;
info.roomTitle = roomInfo.title;
info.micQueue = [self.delegate getMicroQueue];
info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager);
info.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? ArrangeMicType_Dating : roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? ArrangeMicType_Room_PK : ArrangeMicType_Normal;
XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info];
[self.delegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil];
}];
}
break;
default:
break;
}
NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]];
[giftView configGiftUsers:giftUses];
[self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil];
}
break;
case XPRoomMenuItemType_Message:
{
UIViewController * controller = (UIViewController *)self.delegate;
XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller];
[controller.view addSubview:halfMessageView];
[UIView animateWithDuration:.35 animations:^{
CGRect rect = halfMessageView.frame;
rect.origin.y = 0;
halfMessageView.frame = rect;
}];
}
break;
case XPRoomMenuItemType_More: {
XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initWithDelegate:self.delegate];
[self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil];
}
break;
case XPRoomMenuItemType_ArrangeMic:{
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode && self.delegate.isRoomPKPlaying) {
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView1")];
return;
}
self.arrangeMicButton.selected = NO;
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid];
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
NIMChatroomMember * member;
if (error == nil) {
member = members.firstObject;
}
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init];
info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid];
info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
info.nick = roomInfo.nick;
info.roomAvatar = roomInfo.avatar;
info.roomTitle = roomInfo.title;
info.micQueue = [self.delegate getMicroQueue];
info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager);
info.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? ArrangeMicType_Dating : roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? ArrangeMicType_Room_PK : ArrangeMicType_Normal;
XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info];
[self.delegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil];
}];
}
break;
case XPRoomMenuItemType_Noble: {
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceRoomClick];
XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid];
[self.delegate.getCurrentNav pushViewController:nobleVC animated:YES];
}
break;
default:
break;
}
}
#pragma mark - notification
@@ -193,70 +211,76 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.scrollView];
[self addSubview:self.giftButton];
[self.scrollView addSubview:self.stackView];
[self.stackView addArrangedSubview:self.inputButton];
[self.stackView addArrangedSubview:self.micButton];
[self.stackView addArrangedSubview:self.faceButton];
[self.stackView addArrangedSubview:self.arrangeMicButton];
[self.stackView addArrangedSubview:self.messageButton];
[self.stackView addArrangedSubview:self.moreButton];
[self addSubview:self.scrollView];
[self addSubview:self.giftButton];
[self.scrollView addSubview:self.stackView];
[self.stackView addArrangedSubview:self.inputButton];
[self.stackView addArrangedSubview:self.micButton];
[self.stackView addArrangedSubview:self.voiceButton];
[self.stackView addArrangedSubview:self.faceButton];
[self.stackView addArrangedSubview:self.arrangeMicButton];
[self.stackView addArrangedSubview:self.messageButton];
[self.stackView addArrangedSubview:self.moreButton];
[self.stackView addArrangedSubview:self.nobleButton];
self.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.15);
CAShapeLayer * layer = [CAShapeLayer layer];
layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 52 +kSafeAreaBottomHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(25, 25)].CGPath;
self.layer.shadowColor = UIColorRGBAlpha(0xFFFFFF, 0.1).CGColor;
self.layer.shadowOffset = CGSizeMake(0, 5);
self.layer.mask = layer;
}
- (void)initSubViewConstraints {
[self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self).offset(15);
make.right.mas_equalTo(self.giftButton.mas_left).offset(-10);
make.top.bottom.mas_equalTo(self);
}];
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView);
}];
if ([ClientConfig shareConfig].canOpen) {
[self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(100, 30));
}];
} else {
[self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(150, 30));
}];
}
[self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(self);
make.right.mas_equalTo(self).offset(-15);
make.size.mas_equalTo(CGSizeMake(38, 38));
}];
[self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self).offset(15);
make.right.mas_equalTo(self.giftButton.mas_left).offset(-10);
make.top.mas_equalTo(self).offset(8);
make.bottom.mas_equalTo(self).offset(-12 - kSafeAreaBottomHeight);
}];
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView);
}];
[self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(95, 32));
}];
[self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(self.scrollView);
make.right.mas_equalTo(self).offset(-20);
make.size.mas_equalTo(CGSizeMake(35, 35));
}];
}
- (NSArray<XPGiftUserInfoModel *> *)configGiftUsers:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue {
NSMutableArray * array = [NSMutableArray array];
for (MicroQueueModel * microModel in queue.allValues) {
if (microModel.userInfo && microModel.userInfo.uid >0) {
UserInfoModel * userInfo = microModel.userInfo;
XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init];
userModel.avatar = userInfo.avatar;
userModel.vipMic = userInfo.vipMic;
userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position];
userModel.uid = userInfo.uid;
NSMutableArray * array = [NSMutableArray array];
for (MicroQueueModel * microModel in queue.allValues) {
if (microModel.userInfo && microModel.userInfo.uid >0) {
UserInfoModel * userInfo = microModel.userInfo;
XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init];
userModel.avatar = userInfo.avatar;
userModel.vipMic = userInfo.vipMic;
userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position];
userModel.uid = userInfo.uid;
if (self.delegate.getRoomInfo.type == RoomType_Anchor && microModel.microState.position == -1) {///
continue;
}
[array addObject:userModel];
}
}
if (self.delegate.getRoomInfo.leaveMode) {
RoomInfoModel * roomInfo= self.delegate.getRoomInfo;
XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init];
userModel.avatar = roomInfo.avatar;
userModel.position = @"-1";
userModel.uid = roomInfo.uid;
[array addObject:userModel];
[array addObject:userModel];
}
}
if (self.delegate.getRoomInfo.leaveMode) {
RoomInfoModel * roomInfo= self.delegate.getRoomInfo;
XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init];
userModel.avatar = roomInfo.avatar;
userModel.position = @"-1";
userModel.uid = roomInfo.uid;
[array addObject:userModel];
} else if (self.delegate.getRoomInfo.type == RoomType_Anchor) {
RoomInfoModel * roomInfo= self.delegate.getRoomInfo;
BOOL hadContainerOwner = NO;
@@ -274,222 +298,220 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
[array addObject:userModel];
}
}
return array;
return array;
}
- (MicroQueueModel *)findMySelfMicro:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue {
NSString * uid = [AccountInfoStorage instance].getUid;
for (MicroQueueModel * microModel in queue.allValues) {
if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) {
return microModel;
}
}
return nil;
NSString * uid = [AccountInfoStorage instance].getUid;
for (MicroQueueModel * microModel in queue.allValues) {
if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) {
return microModel;
}
}
return nil;
}
#pragma mark - RoomGuestDelegate
- (void)onMicroQueueUpdate:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue {
MicroQueueModel * model = [self findMySelfMicro:queue];
if (model) {
self.micButton.hidden = NO;
self.micButton.selected = model.microState.micState == MicroMicStateType_Close ? YES : [RtcManager instance].isLocalMuted;
self.micButton.enabled = model.microState.micState == MicroMicStateType_Open;
if (![ClientConfig shareConfig].canOpen) {
self.faceButton.hidden = YES;
} else {
self.faceButton.hidden = NO;
}
} else {
self.micButton.hidden = YES;
MicroQueueModel * model = [self findMySelfMicro:queue];
if (model) {
self.micButton.hidden = NO;
self.micButton.selected = model.microState.micState == MicroMicStateType_Close ? YES : [RtcManager instance].isLocalMuted;
self.micButton.enabled = model.microState.micState == MicroMicStateType_Open;
self.faceButton.hidden = NO;
} else {
self.micButton.hidden = YES;
self.faceButton.hidden = YES;
}
}
}
- (void)onRoomEntered {
NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount];
self.messageButton.selected = unreadCount > 0;
[self onRoomUpdate];
NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount];
self.messageButton.selected = unreadCount > 0;
[self onRoomUpdate];
}
- (void)onRoomUpdate {
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
UserInfoModel * userInfo = self.delegate.getUserInfo;
if (userInfo.isFirstCharge) {
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateNormal];
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateSelected];
} else {
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal];
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected];
}
if (![ClientConfig shareConfig].canOpen) {
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift1"] forState:UIControlStateNormal];
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift1"] forState:UIControlStateSelected];
}
self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode;
if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) {
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid];
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
if (error == nil) {
NIMChatroomMember * member = members.firstObject;
if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) {
self.arrangeMicButton.hidden = NO;
return;
}
}
self.arrangeMicButton.hidden = YES;
}];
}
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
UserInfoModel * userInfo = self.delegate.getUserInfo;
if (userInfo.isFirstCharge) {
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateNormal];
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateSelected];
} else {
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal];
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected];
}
self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode;
if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) {
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
if([AccountInfoStorage instance].getUid != nil){
request.userIds = @[[AccountInfoStorage instance].getUid];
}
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
if (error == nil) {
NIMChatroomMember * member = members.firstObject;
if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) {
self.arrangeMicButton.hidden = NO;
return;
}
}
self.arrangeMicButton.hidden = YES;
}];
}
}
- (void)handleNIMCustomMessage:(NIMMessage *)message {
NIMCustomObject *obj = (NIMCustomObject *)message.messageObject;
if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) {
AttachmentModel *attachment = (AttachmentModel *)obj.attachment;
if (attachment.first == CustomMessageType_Arrange_Mic || attachment.first == CustomMessageType_Room_PK) {
if (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Arrange_Mic_Empty || attachment.second == Custom_Message_Sub_Room_PK_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty) {
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid];
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
NIMChatroomMember * member;
if (error == nil) {
member = members.firstObject;
}
if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) {
self.arrangeMicButton.selected = (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty);
};
}];
}
}
}
NIMCustomObject *obj = (NIMCustomObject *)message.messageObject;
if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) {
AttachmentModel *attachment = (AttachmentModel *)obj.attachment;
if (attachment.first == CustomMessageType_Arrange_Mic || attachment.first == CustomMessageType_Room_PK) {
if (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Arrange_Mic_Empty || attachment.second == Custom_Message_Sub_Room_PK_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty) {
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid];
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
NIMChatroomMember * member;
if (error == nil) {
member = members.firstObject;
}
if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) {
self.arrangeMicButton.selected = (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty);
};
}];
}
}
}
}
- (void)handleNIMNotificationMessage:(NIMMessage *)message {
NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject;
NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content;
switch (content.eventType) {
case NIMChatroomEventTypeAddManager:
{
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
for (NIMChatroomNotificationMember * member in content.targets) {
if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) {
self.arrangeMicButton.hidden = NO;
break;
}
}
}
}
break;
case NIMChatroomEventTypeRemoveManager:
{
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
for (NIMChatroomNotificationMember * member in content.targets) {
if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) {
self.arrangeMicButton.hidden = YES;
break;
}
}
}
}
break;
default:
break;
}
NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject;
NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content;
switch (content.eventType) {
case NIMChatroomEventTypeAddManager:
{
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
for (NIMChatroomNotificationMember * member in content.targets) {
if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) {
self.arrangeMicButton.hidden = NO;
break;
}
}
}
}
break;
case NIMChatroomEventTypeRemoveManager:
{
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
for (NIMChatroomNotificationMember * member in content.targets) {
if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) {
self.arrangeMicButton.hidden = YES;
break;
}
}
}
}
break;
default:
break;
}
}
- (void)addNIMRecentSession:(NIMRecentSession *)session {
if (!self.miniMessageView.superview) {
[self.superview insertSubview:self.miniMessageView aboveSubview:self];
[self.miniMessageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self.messageButton);
make.bottom.mas_equalTo(self.messageButton.mas_top).offset(-2);
make.size.mas_equalTo(CGSizeMake(87, 55));
}];
}
[self.miniMessageView addRecentSession:session];
NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount];
self.messageButton.selected = unreadCount > 0;
if (!self.miniMessageView.superview) {
[self.superview insertSubview:self.miniMessageView aboveSubview:self];
[self.miniMessageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self.messageButton);
make.bottom.mas_equalTo(self.messageButton.mas_top).offset(-2);
make.size.mas_equalTo(CGSizeMake(87, 55));
}];
}
[self.miniMessageView addRecentSession:session];
NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount];
self.messageButton.selected = unreadCount > 0;
}
- (void)removeNIMRecentSession:(NIMRecentSession *)session {
NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount];
self.messageButton.selected = unreadCount > 0;
NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount];
self.messageButton.selected = unreadCount > 0;
}
#pragma mark - XPRoomMessageBubbleViewDelegate
- (void)xPRoomMessageBubbleView:(XPRoomMessageBubbleView *)view didSelectSession:(NIMRecentSession *)session {
UIViewController * controller = (UIViewController *)self.delegate;
XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller];
halfMessageView.chatUserId = session.session.sessionId;
[controller.view addSubview:halfMessageView];
[UIView animateWithDuration:.35 animations:^{
CGRect rect = halfMessageView.frame;
rect.origin.y = 0;
halfMessageView.frame = rect;
}];
UIViewController * controller = (UIViewController *)self.delegate;
XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller];
halfMessageView.chatUserId = session.session.sessionId;
[controller.view addSubview:halfMessageView];
[UIView animateWithDuration:.35 animations:^{
CGRect rect = halfMessageView.frame;
rect.origin.y = 0;
halfMessageView.frame = rect;
}];
}
#pragma mark - Getters And Setters
- (UIButton *)inputButton {
if (!_inputButton) {
_inputButton = [UIButton buttonWithType:UIButtonTypeCustom];
if ([ClientConfig shareConfig].canOpen) {
[_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView2") forState:UIControlStateNormal];
} else {
[_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView3") forState:UIControlStateNormal];
}
[_inputButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_inputButton.titleLabel.font = [UIFont systemFontOfSize:15];
_inputButton.layer.masksToBounds = YES;
_inputButton.layer.cornerRadius = 15;
_inputButton.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.3);
_inputButton.tag = XPRoomMenuItemType_Input;
[_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _inputButton;
if (!_inputButton) {
_inputButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView2") forState:UIControlStateNormal];
[_inputButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_inputButton.titleLabel.font = [UIFont systemFontOfSize:12];
_inputButton.layer.masksToBounds = YES;
_inputButton.layer.cornerRadius = 15;
[_inputButton setBackgroundImage:[UIImage imageNamed:@"room_menu_send_bg"] forState:UIControlStateNormal];
_inputButton.tag = XPRoomMenuItemType_Input;
[_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _inputButton;
}
- (UIButton *)micButton {
if (!_micButton) {
_micButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_open"] forState:UIControlStateNormal];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateSelected];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateDisabled | UIControlStateSelected];
_micButton.tag = XPRoomMenuItemType_Mic;
[_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_micButton.hidden = YES;
}
return _micButton;
if (!_micButton) {
_micButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_open"] forState:UIControlStateNormal];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateSelected];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateDisabled | UIControlStateSelected];
_micButton.tag = XPRoomMenuItemType_Mic;
[_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_micButton.hidden = YES;
}
return _micButton;
}
- (UIButton *)voiceButton {
if (!_voiceButton) {
_voiceButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_voiceButton setImage:[UIImage imageNamed:@"room_menu_voice_open"] forState:UIControlStateNormal];
[_voiceButton setImage:[UIImage imageNamed:@"room_menu_voice_close"] forState:UIControlStateSelected];
_voiceButton.tag = XPRoomMenuItemType_Voice;
[_voiceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _voiceButton;
}
- (UIButton *)faceButton {
if (!_faceButton) {
_faceButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateNormal];
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateSelected];
_faceButton.tag = XPRoomMenuItemType_Face;
[_faceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_faceButton.hidden = YES;
}
return _faceButton;
if (!_faceButton) {
_faceButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateNormal];
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateSelected];
_faceButton.tag = XPRoomMenuItemType_Face;
[_faceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_faceButton.hidden = YES;
}
return _faceButton;
}
- (UIButton *)messageButton {
if (!_messageButton) {
_messageButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_messageButton setImage:[UIImage imageNamed:@"room_menu_message"] forState:UIControlStateNormal];
[_messageButton setImage:[UIImage imageNamed:@"room_menu_new_message"] forState:UIControlStateSelected];
_messageButton.tag = XPRoomMenuItemType_Message;
[_messageButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _messageButton;
if (!_messageButton) {
_messageButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_messageButton setImage:[UIImage imageNamed:@"room_menu_message"] forState:UIControlStateNormal];
[_messageButton setImage:[UIImage imageNamed:@"room_menu_new_message"] forState:UIControlStateSelected];
_messageButton.tag = XPRoomMenuItemType_Message;
[_messageButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _messageButton;
}
- (UIButton *)moreButton {
@@ -514,54 +536,54 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
}
- (UIButton *)giftButton {
if (!_giftButton) {
_giftButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal];
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected];
_giftButton.tag = XPRoomMenuItemType_Gift;
[_giftButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _giftButton;
if (!_giftButton) {
_giftButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal];
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected];
_giftButton.tag = XPRoomMenuItemType_Gift;
[_giftButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _giftButton;
}
- (UIStackView *)stackView {
if (!_stackView) {
_stackView = [[UIStackView alloc] init];
_stackView.axis = UILayoutConstraintAxisHorizontal;
_stackView.distribution = UIStackViewDistributionFill;
_stackView.alignment = UIStackViewAlignmentCenter;
_stackView.spacing = 8;
}
return _stackView;
if (!_stackView) {
_stackView = [[UIStackView alloc] init];
_stackView.axis = UILayoutConstraintAxisHorizontal;
_stackView.distribution = UIStackViewDistributionFill;
_stackView.alignment = UIStackViewAlignmentCenter;
_stackView.spacing = 12;
}
return _stackView;
}
- (UIButton *)arrangeMicButton {
if (!_arrangeMicButton) {
_arrangeMicButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic"] forState:UIControlStateNormal];
[_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic_new"] forState:UIControlStateSelected];
_arrangeMicButton.tag = XPRoomMenuItemType_ArrangeMic;
[_arrangeMicButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_arrangeMicButton.hidden = YES;
}
return _arrangeMicButton;
if (!_arrangeMicButton) {
_arrangeMicButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic"] forState:UIControlStateNormal];
[_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic_new"] forState:UIControlStateSelected];
_arrangeMicButton.tag = XPRoomMenuItemType_ArrangeMic;
[_arrangeMicButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_arrangeMicButton.hidden = YES;
}
return _arrangeMicButton;
}
- (UIScrollView *)scrollView {
if (!_scrollView) {
_scrollView = [[UIScrollView alloc] init];
_scrollView.backgroundColor = [UIColor clearColor];
_scrollView.showsHorizontalScrollIndicator = NO;
}
return _scrollView;
if (!_scrollView) {
_scrollView = [[UIScrollView alloc] init];
_scrollView.backgroundColor = [UIColor clearColor];
_scrollView.showsHorizontalScrollIndicator = NO;
}
return _scrollView;
}
- (XPRoomMessageBubbleView *)miniMessageView {
if (!_miniMessageView) {
_miniMessageView = [[XPRoomMessageBubbleView alloc] init];
_miniMessageView.delegate = self;
}
return _miniMessageView;
if (!_miniMessageView) {
_miniMessageView = [[XPRoomMessageBubbleView alloc] init];
_miniMessageView.delegate = self;
}
return _miniMessageView;
}
@end

View File

@@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface XPRoomSendTextView : UIView
- (instancetype) :(id<RoomHostDelegate>)delegate;
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;
///输入框
@property (nonatomic, strong, readonly) UITextField *editTextFiled;
///发小消息的弹框

View File

@@ -1,8 +1,8 @@
//
// YMRoomSendTextView.m
// YUMI
// XPRoomSendTextView.m
// xplan-ios
//
// Created by YUMI on 2021/10/29.
// Created by on 2021/10/29.
//
#import "XPRoomSendTextView.h"
@@ -13,11 +13,8 @@
#import <IQKeyboardManager/IQKeyboardManager.h>
///Tool
#import "ThemeColor+Room.h"
#import "YUMIMacroUitls.h"
#import "UIImage+Utils.h"
#import "YUMIConstant.h"
#import "AccountInfoStorage.h"
#import "NSMutableDictionary+Saft.h"
///Model
#import "XPMessageRemoteExtModel.h"
#import "UserInfoModel.h"
@@ -46,39 +43,39 @@
@implementation XPRoomSendTextView
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate {
self = [super initWithFrame:CGRectMake(0, KScreenHeight - 40, KScreenWidth, 40)];
if (self) {
self.delegate = delegate;
[self addNotification];
[self initSubViews];
[self initSubViewConstraints];
self = [super initWithFrame:CGRectMake(0, KScreenHeight - 40, KScreenWidth, 40)];
if (self) {
self.delegate = delegate;
[self addNotification];
[self initSubViews];
[self initSubViewConstraints];
[IQKeyboardManager sharedManager].enable = NO;
}
return self;
}
return self;
}
#pragma mark - Response
- (void)sendButtonDidClick:(UIButton *)sender {
UserInfoModel * userInfo = [self.delegate getUserInfo];
XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init];
extModel.defUser = userInfo.defUser;
extModel.erbanNo = userInfo.erbanNo;
extModel.carName = userInfo.carName;
extModel.inRoomNameplatePic = userInfo.nameplatePic;
extModel.inRoomNameplateWord = userInfo.nameplateWord;
extModel.charmUrl = userInfo.userLevelVo.charmUrl;
extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq;
extModel.experUrl = userInfo.userLevelVo.experUrl;
extModel.newUser = userInfo.newUser;
UserInfoModel * userInfo = [self.delegate getUserInfo];
XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init];
extModel.defUser = userInfo.defUser;
extModel.erbanNo = userInfo.erbanNo;
extModel.carName = userInfo.carName;
extModel.inRoomNameplatePic = userInfo.nameplatePic;
extModel.inRoomNameplateWord = userInfo.nameplateWord;
extModel.charmUrl = userInfo.userLevelVo.charmUrl;
extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq;
extModel.experUrl = userInfo.userLevelVo.experUrl;
extModel.newUser = userInfo.newUser;
extModel.vipIcon = userInfo.userVipInfoVO.vipIcon;
extModel.androidBubbleUrl = userInfo.androidBubbleUrl;
extModel.iosBubbleUrl = userInfo.iosBubbleUrl;
extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel;
extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel;
NIMMessage * message = [[NIMMessage alloc] init];
message.text = self.inputMessage;
@@ -99,25 +96,26 @@
}
id uidStr = [uidArray toJSONObject];
id nickStr = [nickArray toJSONObject];
[remoteExt safeSetObject:uidStr forKey:@"atUids"];
[remoteExt safeSetObject:nickStr forKey:@"atNames"];
[remoteExt setObject:uidStr forKey:@"atUids"];
[remoteExt setObject:nickStr forKey:@"atNames"];
message.remoteExt = remoteExt;
///
NIMAntiSpamOption *option = [[NIMAntiSpamOption alloc]init];
option.yidunEnabled = YES;
option.businessId = KeyWithType(keyType_YiDunBussinessId);
message.antiSpamOption = option;
NSString * sessionId = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId];
//
NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom];
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) {
self.editTextFiled.text = @"";
[self.editTextFiled resignFirstResponder];
///
NIMAntiSpamOption *option = [[NIMAntiSpamOption alloc]init];
option.yidunEnabled = YES;
option.businessId = KeyWithType(keyType_YiDunBussinessId);
message.antiSpamOption = option;
NSString * sessionId = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId];
//
self.sendButton.enabled = NO;
NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom];
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) {
self.editTextFiled.text = @"";
[self.editTextFiled resignFirstResponder];
[self.atUids removeAllObjects];
[self.atNames removeAllObjects];
self.inputMessage = nil;
}];
}];
}
- (void)keyboardWillShow:(NSNotification *)notification {
@@ -130,11 +128,13 @@
CGRect endKeyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat h = endKeyboardRect.size.height;
[UIView animateWithDuration:duration animations:^{
[self mas_remakeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self.superview);
make.height.equalTo(@40);
make.bottom.equalTo(self.superview).offset(-h);
}];
if(self.superview){
[self mas_remakeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self.superview);
make.height.equalTo(@40);
make.bottom.equalTo(self.superview).offset(-h);
}];
}
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:[curve intValue]];
self.center = CGPointMake(self.center.x, keyBoardEndY - statusbarHeight - self.bounds.size.height/2.0);
@@ -155,68 +155,68 @@
}
-(void)textFieldEditChanged:(NSNotification *)notification{
UITextField *textField = (UITextField *)notification.object;
NSString *toBeString = textField.text;
NSString *lang = [textField.textInputMode primaryLanguage];
if ([lang isEqualToString:@"zh-Hans"]){//
//
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
//
if (!position){
if (toBeString.length > MAX_STARWORDS_LENGTH){
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
if (rangeIndex.length == 1){
textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
}else{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
}else{ //
if (toBeString.length > MAX_STARWORDS_LENGTH){
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
if (rangeIndex.length == 1){
textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
}else{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
self.inputMessage = textField.text;
if (self.inputMessage.length > 0) {
self.sendButton.enabled = YES;
} else {
self.sendButton.enabled = NO;
}
UITextField *textField = (UITextField *)notification.object;
NSString *toBeString = textField.text;
NSString *lang = [textField.textInputMode primaryLanguage];
if ([lang isEqualToString:@"zh-Hans"]){//
//
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
//
if (!position){
if (toBeString.length > MAX_STARWORDS_LENGTH){
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
if (rangeIndex.length == 1){
textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
}else{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
}else{ //
if (toBeString.length > MAX_STARWORDS_LENGTH){
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
if (rangeIndex.length == 1){
textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
}else{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
self.inputMessage = textField.text;
if (self.inputMessage.length > 0) {
self.sendButton.enabled = YES;
} else {
self.sendButton.enabled = NO;
}
}
#pragma mark - Public Method
+ (instancetype)showTextView:(UIView *)view delegate:(id<RoomHostDelegate>)delegate atUid:(NSString *)uid atNick:(NSString *)nick {
__block XPRoomSendTextView * textView;
[view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:[XPRoomSendTextView class]]) {
textView = obj;
*stop = YES;
}
}];
if (textView == nil) {
textView = [[XPRoomSendTextView alloc] initWithDelegate:delegate];
[view addSubview:textView];
}
textView.hidden = NO;
__block XPRoomSendTextView * textView;
[view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:[XPRoomSendTextView class]]) {
textView = obj;
*stop = YES;
}
}];
if (textView == nil) {
textView = [[XPRoomSendTextView alloc] initWithDelegate:delegate];
[view addSubview:textView];
}
textView.hidden = NO;
[textView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.mas_equalTo(view);
make.height.mas_equalTo(40);
}];
[textView.editTextFiled becomeFirstResponder];
[textView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.mas_equalTo(view);
make.height.mas_equalTo(40);
}];
[textView.editTextFiled becomeFirstResponder];
if (nick) {
[textView.atUids addObject:uid];
[textView.atNames addObject:[NSString stringWithFormat:@"@%@", nick]];
@@ -224,75 +224,75 @@
textView.inputMessage = textView.editTextFiled.text;
textView.sendButton.enabled = YES;
}
return textView;
return textView;
}
#pragma mark - Private Method
- (void)initSubViews {
self.backgroundColor = [DJDKMIMOMColor appBackgroundColor];
[self addSubview:self.stackView];
[self.stackView addArrangedSubview:self.editTextFiled];
[self.stackView addArrangedSubview:self.sendButton];
self.backgroundColor = [DJDKMIMOMColor appBackgroundColor];
[self addSubview:self.stackView];
[self.stackView addArrangedSubview:self.editTextFiled];
[self.stackView addArrangedSubview:self.sendButton];
}
- (void)initSubViewConstraints {
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self).offset(8);
make.right.mas_equalTo(self).offset(-5);
make.top.bottom.mas_equalTo(self);
}];
[self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(50);
make.top.bottom.mas_equalTo(self).inset(5);
}];
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self).offset(8);
make.right.mas_equalTo(self).offset(-5);
make.top.bottom.mas_equalTo(self);
}];
[self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(50);
make.top.bottom.mas_equalTo(self).inset(5);
}];
}
- (void)addNotification {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:self.editTextFiled];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:self.editTextFiled];
}
#pragma mark - Getters And Setters
- (UITextField *)editTextFiled{
if (!_editTextFiled) {
_editTextFiled = [[UITextField alloc] init];
NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPRoomSendTextView0") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}];
_editTextFiled.attributedPlaceholder = attribute;
_editTextFiled.borderStyle = UITextBorderStyleNone;
_editTextFiled.textColor = [DJDKMIMOMColor alertTitleColor];
_editTextFiled.font = [UIFont systemFontOfSize:15];
[_editTextFiled setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
}
return _editTextFiled;
if (!_editTextFiled) {
_editTextFiled = [[UITextField alloc] init];
NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPRoomSendTextView0") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}];
_editTextFiled.attributedPlaceholder = attribute;
_editTextFiled.borderStyle = UITextBorderStyleNone;
_editTextFiled.textColor = [DJDKMIMOMColor alertTitleColor];
_editTextFiled.font = [UIFont systemFontOfSize:15];
[_editTextFiled setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
}
return _editTextFiled;
}
- (UIButton *)sendButton{
if (!_sendButton) {
_sendButton = [[UIButton alloc] init];
[_sendButton setTitle:YMLocalizedString(@"XPRoomSendTextView1") forState:UIControlStateNormal];
_sendButton.titleLabel.textColor = [DJDKMIMOMColor mainTextColor];
_sendButton.titleLabel.font = [UIFont systemFontOfSize:15];
[_sendButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor] ]forState:UIControlStateDisabled];
[_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal];
_sendButton.enabled = NO;
_sendButton.layer.cornerRadius = 5.0;
_sendButton.layer.masksToBounds = YES;
[_sendButton addTarget:self action:@selector(sendButtonDidClick:) forControlEvents:UIControlEventTouchUpInside];
}
return _sendButton;
if (!_sendButton) {
_sendButton = [[UIButton alloc] init];
[_sendButton setTitle:YMLocalizedString(@"XPRoomSendTextView1") forState:UIControlStateNormal];
_sendButton.titleLabel.textColor = [DJDKMIMOMColor mainTextColor];
_sendButton.titleLabel.font = [UIFont systemFontOfSize:15];
[_sendButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor] ]forState:UIControlStateDisabled];
[_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal];
_sendButton.enabled = NO;
_sendButton.layer.cornerRadius = 5.0;
_sendButton.layer.masksToBounds = YES;
[_sendButton addTarget:self action:@selector(sendButtonDidClick:) forControlEvents:UIControlEventTouchUpInside];
}
return _sendButton;
}
- (UIStackView *)stackView {
if (!_stackView) {
_stackView = [[UIStackView alloc] init];
_stackView.axis = UILayoutConstraintAxisHorizontal;
_stackView.distribution = UIStackViewDistributionFill;
_stackView.alignment = UIStackViewAlignmentCenter;
_stackView.spacing = 10;
}
return _stackView;
if (!_stackView) {
_stackView = [[UIStackView alloc] init];
_stackView.axis = UILayoutConstraintAxisHorizontal;
_stackView.distribution = UIStackViewDistributionFill;
_stackView.alignment = UIStackViewAlignmentCenter;
_stackView.spacing = 10;
}
return _stackView;
}
- (NSMutableArray *)atNames {

View File

@@ -123,12 +123,7 @@
redPacket.type = RoomMoreMenuType_Room_redPacket;
redPacket.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor];
XPRoomMoreItemModel * voice = [[XPRoomMoreItemModel alloc] init];
voice.title = YMLocalizedString(@"XPMoreMenuPresenter25");
voice.imageName = [RtcManager instance].isRemoteMuted ? @"room_more_voice_close" : @"room_more_voice_open";
voice.type = RoomMoreMenuType_Room_Voice;
voice.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor];
voice.isSelected = [RtcManager instance].isRemoteMuted;
XPRoomMoreItemModel * report = [[XPRoomMoreItemModel alloc] init];
report.title = YMLocalizedString(@"XPMoreMenuPresenter36");
@@ -192,13 +187,13 @@
} else {
[array addObject:giftEffect];
}
[array addObject:voice];
if (![ClientConfig shareConfig].canOpen) {
[array removeAllObjects];
[array addObject:clearScreen];
[array addObject:roomSetting];
[array addObject:voice];
}
[array addObject:report];
[[self getView] getMoreMenuDataSuccess:array];

View File

@@ -17,7 +17,7 @@ UIKIT_EXTERN NSString * const kFreeGiftCountdownNotification;
///
@property (nonatomic,strong) UILabel *timeView;
///
@property (nonatomic,strong) NetImageView *iconView;
@property (nonatomic,strong) NetImageView *pi_iconView;
///
@property (nonatomic,strong) UILabel *nameView;
///
@@ -59,7 +59,7 @@ UIKIT_EXTERN NSString * const kFreeGiftCountdownNotification;
self.freeModel.giftId = giftId;
self.freeModel.giftName = giftNamed;
self.freeModel.giftUrl = giftUrl;
self.iconView.imageUrl = self.freeModel.giftUrl;
self.pi_iconView.imageUrl = self.freeModel.giftUrl;
self.nameView.text = self.freeModel.giftName;
return;
}
@@ -87,7 +87,7 @@ UIKIT_EXTERN NSString * const kFreeGiftCountdownNotification;
[self.contentView addSubview:self.bgView];
[self.bgView addSubview:self.numView];
[self.bgView addSubview:self.timeView];
[self.bgView addSubview:self.iconView];
[self.bgView addSubview:self.pi_iconView];
[self.bgView addSubview:self.nameView];
[self.bgView addSubview:self.titleView];
@@ -107,14 +107,14 @@ UIKIT_EXTERN NSString * const kFreeGiftCountdownNotification;
make.centerY.equalTo(self.timeView);
make.right.equalTo(self.timeView.mas_left).mas_offset(-5);
}];
[self.iconView mas_makeConstraints:^(MASConstraintMaker *make) {
[self.pi_iconView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(17);
make.width.mas_equalTo(48);
make.height.mas_equalTo(48);
make.centerX.equalTo(self.bgView);
}];
[self.nameView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.iconView.mas_bottom).mas_offset(5);
make.top.equalTo(self.pi_iconView.mas_bottom).mas_offset(5);
make.height.mas_equalTo(14);
make.left.right.equalTo(self.bgView);
}];
@@ -136,7 +136,7 @@ UIKIT_EXTERN NSString * const kFreeGiftCountdownNotification;
}
-(void)setFreeModel:(XPFreeGiftModel *)freeModel{
_freeModel = freeModel;
_iconView.imageUrl = _freeModel.giftUrl;
_pi_iconView.imageUrl = _freeModel.giftUrl;
_nameView.text = _freeModel.giftName;
@@ -167,14 +167,14 @@ UIKIT_EXTERN NSString * const kFreeGiftCountdownNotification;
}
return _timeView;
}
- (NetImageView *)iconView{
if (!_iconView){
- (NetImageView *)pi_iconView{
if (!_pi_iconView){
NetImageConfig *config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defalutEmptyPlaceholder];
_iconView = [[NetImageView alloc]initWithConfig:config];
config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder];
_pi_iconView = [[NetImageView alloc]initWithConfig:config];
}
return _iconView;
return _pi_iconView;
}
- (UILabel *)nameView{
if (!_nameView){

View File

@@ -100,13 +100,15 @@
[self.roleButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(38, 15));
}];
CGFloat width = 28 * 20 / 14;
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(25);
make.height.mas_equalTo(20);
make.width.mas_equalTo(width);
}];
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(25);
make.height.mas_equalTo(25);
make.width.mas_equalTo(width);
}];
[self.namePlateView mas_makeConstraints:^(MASConstraintMaker *make) {

View File

@@ -354,9 +354,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
make.left.right.mas_equalTo(self.view);
}];
[self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.view);
make.bottom.mas_equalTo(-kSafeAreaBottomHeight- 8);
make.height.mas_equalTo(40);
make.left.right.bottom.mas_equalTo(self.view);
make.height.mas_equalTo(52 + kSafeAreaBottomHeight);
}];
[self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -404,9 +403,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
make.right.equalTo(self.activityContainerView.mas_left).offset(-10);
}];
[self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.anchorScrollView.middleImageView);
make.bottom.mas_equalTo(self.anchorScrollView.middleImageView).offset(-kSafeAreaBottomHeight- 8);
make.height.mas_equalTo(40);
make.left.right.bottom.mas_equalTo(self.anchorScrollView.middleImageView);
make.height.mas_equalTo(52 + kSafeAreaBottomHeight);
}];
[self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.messageContainerView);

View File

@@ -32,6 +32,7 @@ static NSString * kUpdateVersionNum = @"kUpdateVersionNum";
return;
}
if ([[AccountInfoStorage instance] getTicket].length > 0) {
[[self getView] autoLoginSuccess];
return;
}
[Api requestTicket:[self createHttpCompletion:^(BaseModel * _Nonnull data) {

View File

@@ -6,6 +6,8 @@
//
@interface TabbarViewController : UITabBarController
@property (nonatomic,assign) BOOL isFormLogin;
///邀请码
@property (nonatomic,copy) NSString *inviteCode;
@end

View File

@@ -83,7 +83,6 @@
#import "PIFullScreenBannerAnimation.h"
#import <SVGA.h>
#import "Api+Gift.h"
UIKIT_EXTERN NSString * kUserCompleteInfoFinishKey;
NSString * const kUserFirstLoginKey = @"kUserFirstLoginKey";
NSString * const kHadLaunchApp = @"kHadLaunchApp";
NSString * const kLastShowAnchorCardTime = @"kLastShowAnchorCardTime";
@@ -95,12 +94,11 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
{
NSTimer * timer;
}
///
@property (nonatomic,strong) UserInfoModel *userInfo;
@property (nonatomic, strong) MainPresenter *presenter;
///
@property (nonatomic,strong) XPMiniRoomView *roomMineView;
///
@property (nonatomic,copy) NSString *inviteCode;
///
@property (nonatomic, assign) BOOL needShowNewUserRecharge;
///(
@@ -113,8 +111,6 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
@property (nonatomic, strong) XPTaskCompleteTipView *taskTipView;
///广
@property (nonatomic,strong) NSMutableArray<GiftReceiveInfoModel *> *giftBroadcastQueue;
///
@property (nonatomic, assign) BOOL parentMode;
///
@property (nonatomic,assign) BOOL isFirstReachability;
///
@@ -128,15 +124,24 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
@end
@implementation TabbarViewController
- (void)dealloc{
[[NSNotificationCenter defaultCenter]removeObserver:self];
[[NIMSDK sharedSDK].loginManager removeDelegate:self];
[[NIMSDK sharedSDK].chatManager removeDelegate:self];
[[NIMSDK sharedSDK].systemNotificationManager removeDelegate:self];
[[NIMSDK sharedSDK].broadcastManager removeDelegate:self];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self.presenter autoLogin];
[self configTheme];
[self initTabs:NO];
[[ClientConfig shareConfig] clientInit];
if([ClientConfig shareConfig].isLoad == NO){
[[ClientConfig shareConfig] clientInit];
[ClientConfig shareConfig].isLoad = YES;
}
[[NIMSDK sharedSDK].loginManager addDelegate:self];
[[NIMSDK sharedSDK].chatManager addDelegate:self];
[[NIMSDK sharedSDK].systemNotificationManager addDelegate:self];
@@ -144,18 +149,17 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
[self.presenter juliandAdCallBackApi];
[self networkReachability];
[self.view addSubview:self.roomMineView];
@kWeakify(self);
[[NSNotificationCenter defaultCenter] addObserverForName:kRoomMiniNotificationKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
@kStrongify(self);
[self configRoomMiniNView:note.userInfo];
}];
[[NSNotificationCenter defaultCenter] addObserverForName:@"kLogout" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
self.isInitReload = NO;
self.isReload = NO;
}];
[[NSNotificationCenter defaultCenter] addObserverForName:kUserCompleteInfoFinishKey object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
[self completeUserInfoFinish:note.object];
}];
[[NSNotificationCenter defaultCenter] addObserverForName:@"reloadnewtab" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
@kStrongify(self);
if (self.isInitReload == NO) {
[self initTabs:YES];
self.isReload = YES;
@@ -163,16 +167,17 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
}];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showNewUserRecharge) name:kNewUserRechargeKey object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showAnchorCardKey:) name:kTabShowAnchorCardKey object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(teenagerStatusChange:) name:kTeenagerStatusChange object:nil];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
[self.presenter autoLogin];
if ([XPRoomMiniManager shareManager].getRoomInfo == nil) {
[self.roomMineView hiddenRoomMiniView];
}
@@ -230,7 +235,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
}
});
}
if (self.needShowAnchorCard && !self.delayShowAnchorCard && !self.parentMode) {
if (self.needShowAnchorCard && !self.delayShowAnchorCard) {
[self.presenter getAnchorCardInfo];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kHadLaunchApp];///
[[NSUserDefaults standardUserDefaults] synchronize];
@@ -249,7 +254,8 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
[self.navigationController presentViewController:nav animated:YES completion:nil];
return;
}
if (userInfo.nick == nil || userInfo.avatar == nil) {
self.userInfo = userInfo;
if ((userInfo.nick == nil || userInfo.avatar == nil) && self.isFormLogin == NO) {
id type = [[NSUserDefaults standardUserDefaults]valueForKey:@"kLoginSuccessType"];
if(type != nil && [type intValue] == ThirdLoginType_Phone){
[self.presenter getAuthorizationCodeInfo];
@@ -258,7 +264,33 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
}
return;
}
if ([ClientConfig shareConfig].canOpen) {
if(self.isReload == NO){
[self initTabs:YES];
self.isInitReload = YES;
}
}else{
[self initTabs:YES];
}
if ([ClientConfig shareConfig].canOpen) {
if (self.inviteCode.length <= 0) {
[self initQuickEnterRoom];
}
if (self.inviteCode) {
self.inviteCode = nil;
}
[self monentsUnReadCount];
}
}
-(void)loginIng{
if ((self.userInfo.nick == nil || self.userInfo.avatar == nil) && self.isFormLogin == NO) {
[self completeUserInfo];
return;
}
if(self.isReload == NO){
[self initTabs:YES];
self.isInitReload = YES;
@@ -271,22 +303,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
self.inviteCode = nil;
}
[self monentsUnReadCount];
NSArray *recentList = [[NIMSDK sharedSDK].conversationManager.allRecentSessions mutableCopy];
__block NSInteger unreadCount = 0;
NSMutableArray<NSString *> * uids = [[NSMutableArray alloc] init];
[recentList enumerateObjectsUsingBlock:^(NIMRecentSession * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[uids addObject:obj.session.sessionId];
unreadCount += obj.unreadCount;
}];
if(unreadCount > 0){
NSUInteger index = 2;
UITabBarItem *item = self.tabBar.items.count > index ? self.tabBar.items[index] : nil;
[item setBadgeValue:[NSString stringWithFormat:@"%ld",unreadCount]];
}
}
self.parentMode = userInfo.parentMode;
for (BaseViewController *vc in self.viewControllers) {
vc.parentMode = self.parentMode;
}
}
- (void)getAuthorizationCodeInfoWithPhonefail{
@@ -376,7 +393,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
}
- (void)checkInviteUserInfoSuccess:(InviteUserInfoModel *)inviteInfo {
if (inviteInfo && inviteInfo.isInRoom && !self.parentMode) {
if (inviteInfo && inviteInfo.isInRoom) {
[XPRoomViewController openRoom:inviteInfo.roomUid fromNick:inviteInfo.inviteNick fromType:inviteInfo.fromType fromUid:inviteInfo.inviteUid viewController:self];
} else { //
[self.presenter getShortCutRecommendRoom];
@@ -384,9 +401,6 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
}
- (void)getShortCutRecommendRoomSuccces:(NSString *)roomUid {
if (self.parentMode) {
return;
}
if (roomUid.length > 0) {
[XPRoomViewController openRoom:roomUid viewController:self];
}
@@ -398,8 +412,10 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
}
#pragma mark -
- (void)networkReachability{
@kWeakify(self);
[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
@kStrongify(self);
switch (status) {
case AFNetworkReachabilityStatusUnknown:
self.isFirstReachability = YES;
@@ -426,11 +442,12 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
#pragma mark - BaseMvpProtocol
- (void)tokenInvalid {
[[NSNotificationCenter defaultCenter]postNotificationName:@"kLogout" object:nil];
XPLoginViewController *lvc = [[XPLoginViewController alloc] init];
BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:lvc];
nav.modalPresentationStyle = UIModalPresentationFullScreen;
[self.navigationController presentViewController:nav animated:YES completion:nil];
kWindow.rootViewController = nav;
XPAdImageTool.shareImageTool.isImLogin = NO;
}
@@ -438,14 +455,12 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
LoginFullInfoViewController * bindPhoneVC = [[LoginFullInfoViewController alloc] init];
BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:bindPhoneVC];
nav.modalPresentationStyle = UIModalPresentationFullScreen;
[self.navigationController presentViewController:nav animated:YES completion:nil];
kWindow.rootViewController = nav;
}
///
- (void)getAnchorCardInfoSuccess:(XPTabAnchorCardModel *)cardInfo {
if (self.parentMode) {
return;
}
if (!self.anchorCardView.superview && cardInfo && self.isViewLoaded && self.view.window) {
self.anchorCardView.frame = CGRectMake(0, -90-kStatusBarHeight, KScreenWidth, 90);
[UIView animateWithDuration:0.5 animations:^{
@@ -539,7 +554,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
#pragma mark - NIMChatManagerDelegate
- (void)onRecvMessages:(NSArray<NIMMessage *> *)messages {
if (self.parentMode || ![ClientConfig shareConfig].canOpen || [AccountInfoStorage instance].getTicket.length == 0) {
if (![ClientConfig shareConfig].canOpen || [AccountInfoStorage instance].getTicket.length == 0) {
return;
}
for (NIMMessage * message in messages) {
@@ -569,7 +584,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
- (void)onReceiveBroadcastMessage:(NIMBroadcastMessage *)broadcastMessage {
if (![ClientConfig shareConfig].canOpen) {
if (![ClientConfig shareConfig].canOpen || [AccountInfoStorage instance].getUid.length == 0) {
return;
}
if (broadcastMessage.content) {
@@ -760,6 +775,18 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
[item setBadgeValue:badge];
}
} uid:[AccountInfoStorage instance].getUid];
NSArray *recentList = [[NIMSDK sharedSDK].conversationManager.allRecentSessions mutableCopy];
__block NSInteger unreadCount = 0;
NSMutableArray<NSString *> * uids = [[NSMutableArray alloc] init];
[recentList enumerateObjectsUsingBlock:^(NIMRecentSession * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[uids addObject:obj.session.sessionId];
unreadCount += obj.unreadCount;
}];
if(unreadCount > 0){
NSUInteger index = 2;
UITabBarItem *item = self.tabBar.items.count > index ? self.tabBar.items[index] : nil;
[item setBadgeValue:[NSString stringWithFormat:@"%ld",unreadCount]];
}
}
#pragma mark -
@@ -786,9 +813,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
}
#pragma mark -NIMSystemNotificationManagerDelegate
- (void)onReceiveCustomSystemNotification:(NIMCustomSystemNotification *)notification {
if (self.parentMode) {
return;
}
if (notification.receiverType == NIMSessionTypeP2P) {
if (notification.content != nil) {
NSData *jsonData = [notification.content dataUsingEncoding:NSUTF8StringEncoding];
@@ -832,19 +857,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
return [[NSUserDefaults standardUserDefaults] valueForKey:kHadLaunchApp];
}
///
- (void)teenagerStatusChange:(NSNotification *)noti {
NSDictionary * dic = noti.object;
self.parentMode = [[dic objectForKey:@"parentMode"] boolValue];
for (BaseViewController *vc in self.viewControllers) {
vc.parentMode = self.parentMode;
}
if ([XPRoomMiniManager shareManager].getRoomInfo && self.parentMode) {
[[RtcManager instance] exitRoom];
[[NIMSDK sharedSDK].chatroomManager exitChatroom:[NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.roomId] completion:nil];
[self.roomMineView hiddenRoomMiniView];
}
}
- (BOOL)canShowAnchorCard {
if ([[XPRoomMiniManager shareManager] getRoomInfo]) {//

View File

@@ -43,8 +43,7 @@ NS_ASSUME_NONNULL_BEGIN
// 是否隐藏导航 默认是不隐藏的
@property(nonatomic,assign,getter=isHiddenNavBar) BOOL hiddenNavBar;
///是否青少年模式
@property (nonatomic, assign) BOOL parentMode;
/**
显示/隐藏导航
*/

View File

@@ -8,7 +8,7 @@
#import <Foundation/Foundation.h>
@class AccountModel, ThirdUserInfo, HomeTagModel;
@class AccountModel, ThirdUserInfo, HomeTagModel,HomeUserModel;
@interface AccountInfoStorage : NSObject
@property (nonatomic, strong, readonly) AccountModel *accountModel;
@@ -27,6 +27,9 @@
- (AccountModel *)getCurrentAccountInfo;
- (void)saveAccountInfo:(AccountModel *)accountInfo;
///用于判断是否填写用户资料,没有将跳到用户填写用户资料界面
- (HomeUserModel *)getCurrentHomeUserInfo;
- (void)saveHomeUserInfo:(HomeUserModel *)homeUserInfo;
- (void)saveTicket:(NSString *)ticket;
- (NSString *)getTicket;
- (NSString *)getUid;

View File

@@ -7,6 +7,9 @@
//
#define kFileName @"AccountInfo.data"
#define kDataKey @"accountInfo"
#define kHomeUserDataKey @"homeUserInfo"
#define kHomeUserName @"HomeUserModel.data"
#import "AccountInfoStorage.h"
#import "AccountModel.h"
#import "HomeTagModel.h"
@@ -14,7 +17,7 @@
#define kTagListDataKey @"homeaaNewTagModel"
#define kTagListDataName @"HomeTagNewModel.data"
@interface AccountInfoStorage()
@property (nonatomic,strong) HomeUserModel *homeUserInfo;
@property (nonatomic, copy) NSString *ticket;
@property (nonatomic, strong) AccountModel *accountModel;
@property (nonatomic,strong) NSArray<HomeTagModel *> *tagList;
@@ -70,7 +73,39 @@ static AccountInfoStorage *_instance = nil;
[archiver finishEncoding];
[data writeToFile:[self getFilePath] atomically:YES];
}
- (HomeUserModel *)getCurrentHomeUserInfo
{
if (self.homeUserInfo != nil) {
return self.homeUserInfo;
}
NSData *data = [[NSData alloc] initWithContentsOfFile:[self getHomeUserFilePath]];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
//
self.homeUserInfo = [unarchiver decodeObjectForKey:kHomeUserDataKey];
[unarchiver finishDecoding];//finishDecoding
return self.homeUserInfo;
}
- (void)saveHomeUserInfo:(HomeUserModel *)homeUserInfo
{
if (homeUserInfo == nil) {
homeUserInfo = [[HomeUserModel alloc] init];
}
self.homeUserInfo = homeUserInfo;
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:homeUserInfo forKey:kHomeUserDataKey];
[archiver finishEncoding];
[data writeToFile:[self getHomeUserFilePath] atomically:YES];
}
-(NSString *) getHomeUserFilePath{
NSArray *array = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[array objectAtIndex:0] stringByAppendingPathComponent:kHomeUserName];
if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
[[NSFileManager defaultManager] createFileAtPath:path contents:nil attributes:nil];
}
return path;
}
- (void)saveTicket:(NSString *)t
{
self.ticket = t;

Some files were not shown because too many files have changed in this diff Show More