268 lines
7.2 KiB
Objective-C
268 lines
7.2 KiB
Objective-C
//
|
|
// XPRoomViewController.m
|
|
// xplan-ios
|
|
//
|
|
// Created by 冯硕 on 2021/10/11.
|
|
//
|
|
|
|
#import "XPRoomViewController.h"
|
|
///Third
|
|
#import <Masonry/Masonry.h>
|
|
///Tool
|
|
#import "XPMacro.h"
|
|
#import "AccountInfoStorage.h"
|
|
///Model
|
|
#import "RoomInfoModel.h"
|
|
#import "UserInfoModel.h"
|
|
///View
|
|
#import "XPRoomActivityContainerView.h"
|
|
#import "XPRoomBackContainerView.h"
|
|
#import "XPRoomMenuContainerView.h"
|
|
#import "XPRoomMessageContainerView.h"
|
|
#import "XPRoomPositionContainView.h"
|
|
#import "XPRoomInfoContainerView.h"
|
|
///P
|
|
#import "XPRoomPresenter.h"
|
|
#import "XPRoomProtocol.h"
|
|
///Category
|
|
#import "XPRoomViewController+RoomInfoContainerView.h"
|
|
#import "XPRoomViewController+SDKConfig.h"
|
|
|
|
@interface XPRoomViewController ()<XPRoomProtocol>
|
|
///背景
|
|
@property (nonatomic,strong) XPRoomBackContainerView *backContainerView;
|
|
///房间信息
|
|
@property (nonatomic,strong) XPRoomInfoContainerView *roomInfoContainerView;
|
|
///坑位信息
|
|
@property (nonatomic,strong) XPRoomPositionContainView *positionContainerView;
|
|
///公屏
|
|
@property (nonatomic,strong) XPRoomMessageContainerView *messageContainerView;
|
|
///底部操作栏
|
|
@property (nonatomic,strong) XPRoomMenuContainerView *menuContainerView;
|
|
///活动
|
|
@property (nonatomic,strong) XPRoomActivityContainerView *activityContainerView;
|
|
///如果是打开房间的话
|
|
@property (nonatomic,assign) BOOL isOpenRoom;
|
|
///用户信息
|
|
@property (nonatomic,strong) UserInfoModel *usereInfo;
|
|
///房间信息
|
|
@property (nonatomic,strong) RoomInfoModel *roomInfo;
|
|
@end
|
|
|
|
@implementation XPRoomViewController
|
|
|
|
|
|
- (void)dealloc {
|
|
#warning to do - 时刻注意这个方法 功能做完的时候删除此方法
|
|
}
|
|
|
|
- (XPRoomPresenter *)createPresenter {
|
|
return [[XPRoomPresenter alloc] init];
|
|
}
|
|
|
|
- (BOOL)isHiddenNavBar {
|
|
return YES;
|
|
}
|
|
|
|
- (void)viewDidLoad {
|
|
[super viewDidLoad];
|
|
[self initSubViews];
|
|
[self initSubViewConstraints];
|
|
}
|
|
|
|
#pragma mark - Private Method
|
|
- (void)initSubViews {
|
|
[self.view addSubview:self.backContainerView];
|
|
[self.view addSubview:self.roomInfoContainerView];
|
|
[self.view addSubview:self.positionContainerView];
|
|
[self.view addSubview:self.messageContainerView];
|
|
[self.view addSubview:self.menuContainerView];
|
|
[self.view addSubview:self.activityContainerView];
|
|
}
|
|
|
|
- (void)initSubViewConstraints {
|
|
[self.backContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.edges.mas_equalTo(self.view);
|
|
}];
|
|
|
|
[self.roomInfoContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.left.right.top.mas_equalTo(self.view);
|
|
make.height.mas_equalTo(kNavigationHeight);
|
|
}];
|
|
|
|
[self.positionContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.left.right.mas_equalTo(self.view);
|
|
make.top.mas_equalTo(self.roomInfoContainerView.mas_bottom);
|
|
make.height.mas_equalTo([self.positionContainerView positionContainerViewHeight]);
|
|
}];
|
|
|
|
[self.messageContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.equalTo(self.positionContainerView.mas_bottom);
|
|
make.bottom.equalTo(self.menuContainerView.mas_top).offset(-5);
|
|
make.left.equalTo(self.view);
|
|
make.right.equalTo(self.activityContainerView.mas_left).offset(-10);
|
|
}];
|
|
|
|
[self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.left.right.mas_equalTo(self.view);
|
|
make.bottom.mas_equalTo(-kSafeAreaBottomHeight- 8);
|
|
make.height.mas_equalTo(40);
|
|
}];
|
|
|
|
[self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.mas_equalTo(self.messageContainerView);
|
|
make.right.mas_equalTo(self.view);
|
|
make.bottom.mas_equalTo(self.menuContainerView.mas_top).offset(-5);
|
|
make.width.mas_equalTo(80);
|
|
}];
|
|
}
|
|
|
|
///获取房间信息成功
|
|
- (void)requestRoomInfoSuccess:(RoomInfoModel *)roomInfo {
|
|
[self hideHUD];
|
|
self.roomInfo = roomInfo;
|
|
[self configRoomInfoContainerViewWithRoomInfo:roomInfo];
|
|
///获取房间信息成功之后 就要准备登录云信了 获取确保用户信息存在
|
|
if (self.usereInfo == nil) {
|
|
[self.presenter getUserInfoWithUid:self.roomUid];
|
|
} else {
|
|
[self enterChatRoomWithUseInfo:self.usereInfo];
|
|
}
|
|
}
|
|
|
|
///dismissVC
|
|
- (void)disMissRoomVC {
|
|
if (self.presentingViewController) {
|
|
[self dismissViewControllerAnimated:YES completion:nil];
|
|
}
|
|
}
|
|
|
|
///开启房间
|
|
- (void)openRoomWithUserInfo {
|
|
NSString * title = [NSString stringWithFormat:@"%@的房间", self.usereInfo.nick];
|
|
[self.presenter openUserRoomWithTitle:title type:RoomType_Game roomPwd:@"" roomDesc:@"" backPic:@""];
|
|
}
|
|
|
|
- (void)enterChatRoomWithUseInfo:(UserInfoModel *)userInfo {
|
|
///进入房间的时候 必须要有用户信息 并且房间状态一切正常
|
|
#warning to do - 进入云信房间的逻辑
|
|
[self configEnterRoomSDK];
|
|
}
|
|
|
|
#pragma mark - XPRoomProtocol
|
|
- (void)getRoomInfoSuccess:(RoomInfoModel *)roomInfo {
|
|
NSString * uid = [AccountInfoStorage instance].getUid;
|
|
if ([self.roomUid isEqualToString:uid]) {///如果是自己进入房间的话
|
|
if (roomInfo == nil || roomInfo.valid) {
|
|
self.isOpenRoom = YES;
|
|
if (self.usereInfo) {
|
|
[self openRoomWithUserInfo];
|
|
} else {
|
|
[self.presenter getUserInfoWithUid:uid];
|
|
}
|
|
} else {
|
|
[self requestRoomInfoSuccess:roomInfo];
|
|
}
|
|
} else {///如果是进入别人房间的话
|
|
if (roomInfo.valid) {
|
|
if (roomInfo.roomPwd.length > 0) {
|
|
[self hideHUD];
|
|
#warning to do - 输入密码
|
|
} else {
|
|
[self requestRoomInfoSuccess:roomInfo];
|
|
}
|
|
} else {
|
|
#warning to do - 房主已下线
|
|
[self hideHUD];
|
|
}
|
|
}
|
|
}
|
|
|
|
- (void)getRoomInfoFail {
|
|
[self hideHUD];
|
|
[self disMissRoomVC];
|
|
}
|
|
|
|
- (void)getUserInfoSuccess:(UserInfoModel *)userInfo {
|
|
self.usereInfo = userInfo;
|
|
if (self.isOpenRoom) {
|
|
[self openRoomWithUserInfo];
|
|
} else {
|
|
if (self.roomInfo) {
|
|
[self enterChatRoomWithUseInfo:userInfo];
|
|
}
|
|
}
|
|
}
|
|
|
|
- (void)getUserInfoFail {
|
|
[self hideHUD];
|
|
[self disMissRoomVC];
|
|
}
|
|
|
|
- (void)openRoomSuccess:(RoomInfoModel *)roomInfo {
|
|
[self requestRoomInfoSuccess:roomInfo];
|
|
}
|
|
|
|
- (void)openRoomFail {
|
|
[self hideHUD];
|
|
[self disMissRoomVC];
|
|
}
|
|
|
|
#pragma mark - Getters And Setters
|
|
- (void)setRoomUid:(NSString *)roomUid {
|
|
_roomUid = roomUid;
|
|
if (_roomUid) {
|
|
[self showLoading];
|
|
///获取用户信息
|
|
[self.presenter getUserInfoWithUid:_roomUid];
|
|
///获取房间信息
|
|
[self.presenter getRoomInfoWithUid:_roomUid];
|
|
}
|
|
}
|
|
|
|
- (XPRoomBackContainerView *)backContainerView {
|
|
if (!_backContainerView) {
|
|
_backContainerView = [[XPRoomBackContainerView alloc] init];
|
|
}
|
|
return _backContainerView;
|
|
}
|
|
|
|
- (XPRoomInfoContainerView *)roomInfoContainerView {
|
|
if (!_roomInfoContainerView) {
|
|
_roomInfoContainerView = [[XPRoomInfoContainerView alloc] init];
|
|
_roomInfoContainerView.delegate = self;
|
|
}
|
|
return _roomInfoContainerView;
|
|
}
|
|
|
|
- (XPRoomPositionContainView *)positionContainerView {
|
|
if (!_positionContainerView) {
|
|
_positionContainerView = [[XPRoomPositionContainView alloc] init];
|
|
}
|
|
return _positionContainerView;
|
|
}
|
|
|
|
- (XPRoomMessageContainerView *)messageContainerView {
|
|
if (!_messageContainerView) {
|
|
_messageContainerView = [[XPRoomMessageContainerView alloc] init];
|
|
}
|
|
return _messageContainerView;
|
|
}
|
|
|
|
- (XPRoomMenuContainerView *)menuContainerView {
|
|
if (!_menuContainerView) {
|
|
_menuContainerView = [[XPRoomMenuContainerView alloc] init];
|
|
}
|
|
return _menuContainerView;
|
|
}
|
|
|
|
- (XPRoomActivityContainerView *)activityContainerView {
|
|
if (!_activityContainerView) {
|
|
_activityContainerView = [[XPRoomActivityContainerView alloc] init];
|
|
}
|
|
return _activityContainerView;
|
|
}
|
|
|
|
|
|
@end
|