This commit is contained in:
liyuhua
2024-03-23 16:28:10 +08:00
parent aeb26daad6
commit 2b5a1eb2a5
66 changed files with 2214 additions and 174 deletions

View File

@@ -13,7 +13,7 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
self.roomUid = roomUid
}
deinit {
YinRoomAudMioanager.share.destroySharedIntance()
YinRoomAudioManager.share.destroySharedIntance()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
@@ -24,33 +24,100 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
requestData()
addNIMSDKManager()
addChild(chatListVC)
menuView.clickMenuViewBlcok = {[weak self] in
menuView.clickMenuViewBlcok = {[weak self] type in
guard let self = self else { return}
self.view.addSubview(self.bgChatView)
self.bgChatView.snp.makeConstraints { make in
make.edges.equalTo(self.view)
}
let height = ScreenHeight * 2 / 3
self.view.addSubview(self.chatListVC.view)
self.chatListVC.view.layer.cornerRadius = 20
self.chatListVC.view.layer.masksToBounds = true
self.chatListVC.view.frame = CGRect(x: 0, y: ScreenHeight, width: ScreenWidth, height: height)
UIView.animate(withDuration: 0.1) {
self.chatListVC.view.frame = CGRect(x: 0, y:ScreenHeight - height, width: ScreenWidth, height: height)
if type == .chat{
self.view.addSubview(self.bgChatView)
self.bgChatView.snp.makeConstraints { make in
make.edges.equalTo(self.view)
}
let height = ScreenHeight * 2 / 3
self.view.addSubview(self.chatListVC.view)
self.chatListVC.view.layer.cornerRadius = 20
self.chatListVC.view.layer.masksToBounds = true
self.chatListVC.view.frame = CGRect(x: 0, y: ScreenHeight, width: ScreenWidth, height: height)
UIView.animate(withDuration: 0.1) {
self.chatListVC.view.frame = CGRect(x: 0, y:ScreenHeight - height, width: ScreenWidth, height: height)
}
}else{
let sendGiftVC = SendGiftVC()
let nav = BaseNavigationViewController.init(rootViewController: sendGiftVC)
nav.modalPresentationStyle = .overCurrentContext
let list = micSeatView.getMicUser()
var userList:[SendGiftUserModel] = []
for item:[String:UserObject] in list {
if let first = item.keys.first,let user = item[first],let uid = user.uid,uid != AuthManager.userUid{
let model = SendGiftUserModel()
model.position = first
model.nick = user.nick ?? ""
model.avatar = user.avatar ?? ""
model.uid = user.uid ?? 0
userList.append(model)
}
}
sendGiftVC.userList = userList
sendGiftVC.roomUid = self.roomUid
sendGiftVC.roomId = self.roomInfo?.roomId ?? ""
sendGiftVC.userData = self.userData
self.present(nav, animated: true, completion: nil)
}
}
micSeatView.showUserInfoBlock = {[weak self] user in
guard let weakSelf = self else { return }
let userInfoView:HomeVoiceUserInfoView = HomeVoiceUserInfoView.init(frame: .zero)
userInfoView.clickBtnBlock = {[weak self] (type,uid) in
guard let weakSelf = self else {
return
}
if type == 0{
let session = NIMSession(uid, type: .P2P)
let chatVC = ChatVC.init(session: session)
weakSelf.navigationController?.pushViewController(chatVC, animated: true)
}else if (type == 5){
if let first = user.keys.first,let userModel = user[first],let uid = userModel.uid,uid != AuthManager.userUid{
var userList:[SendGiftUserModel] = []
let model = SendGiftUserModel()
model.position = first
model.nick = userModel.nick ?? ""
model.avatar = userModel.avatar ?? ""
model.uid = userModel.uid ?? 0
userList.append(model)
let sendGiftVC = SendGiftVC()
let nav = BaseNavigationViewController.init(rootViewController: sendGiftVC)
nav.modalPresentationStyle = .overCurrentContext
sendGiftVC.userList = userList
sendGiftVC.roomUid = weakSelf.roomUid
sendGiftVC.roomId = weakSelf.roomInfo?.roomId ?? ""
sendGiftVC.userData = weakSelf.userData
sendGiftVC.isSendPerson = true
weakSelf.present(nav, animated: true, completion: nil)
}
}
}
userInfoView.type = 2
userInfoView.user = user.values.first
weakSelf.view.addSubview(userInfoView)
userInfoView.snp.makeConstraints { make in
make.edges.equalTo(weakSelf.view)
}
}
topView.didClickTypeBlcok = {[weak self] (type,uid) in
guard let self = self else { return}
if type == 0{
YinRoomAudMioanager.share.exitRoom()
YinRoomAudioManager.share.exitRoom()
RoomVCViewModel.roomVM.isMute = true
NIMSDK.shared().chatroomManager.exitChatroom(self.roomInfo?.roomId ?? "")
self.dismiss(animated: true, completion: nil)
}else if type == 1 {
YinRoomAudMioanager.share.exitRoom()
YinRoomAudioManager.share.exitRoom()
RoomVCViewModel.roomVM.isMute = true
NIMSDK.shared().chatroomManager.exitChatroom(self.roomInfo?.roomId ?? "")
self.dismiss(animated: true, completion: nil)
@@ -84,6 +151,7 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
view.addSubview(micSeatView)
view.addSubview(chatScreenView)
view.addSubview(menuView)
view.addSubview(roomEffectView)
backgroundView.snp.makeConstraints { make in
make.edges.equalTo(self.view)
}
@@ -108,27 +176,10 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
make.bottom.equalTo(-bottom)
make.height.equalTo(UIDevice.scaleWidth(width: 40))
}
micSeatView.showUserInfoBlock = {[weak self] user in
guard let weakSelf = self else { return }
let userInfoView:HomeVoiceUserInfoView = HomeVoiceUserInfoView.init(frame: .zero)
userInfoView.clickBtnBlock = {[weak self] (type,uid) in
guard let weakSelf = self else {
return
}
if type == 0{
let session = NIMSession(uid, type: .P2P)
let chatVC = ChatVC.init(session: session)
weakSelf.navigationController?.pushViewController(chatVC, animated: true)
}
}
userInfoView.type = 2
userInfoView.user = user
weakSelf.view.addSubview(userInfoView)
userInfoView.snp.makeConstraints { make in
make.edges.equalTo(weakSelf.view)
}
roomEffectView.snp.makeConstraints { make in
make.edges.equalTo(view)
}
}
private func requestData(){
@@ -143,6 +194,7 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
RoomVCViewModel.roomVM.NIMSDKEnterRoom(roomId:roomid , user: result)
self?.micSeatView.userData = result
self?.menuView.user = result
self?.userData = result
}
}).disposed(by: rx.disposeBag)
@@ -160,7 +212,7 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
topView.roomData = self.roomInfo
micSeatView.roomData = self.roomInfo
if let roomInfo = self.roomInfo{
YinRoomAudMioanager.share.dealWithChatData(roomData:roomInfo)
YinRoomAudioManager.share.dealWithChatData(roomData:roomInfo)
}
micSeatView.setMicList()
menuView.roomUid = self.roomInfo?.roomId ?? ""
@@ -192,6 +244,7 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
var roomUid:String = ""
var roomText:String = ""
var roomInfo:RoomDataModel?
var userData:UserObject?
//MARK: -
private lazy var backgroundView:RoomBackgroundView = {
let _backgroundView = RoomBackgroundView(frame: .zero)
@@ -229,6 +282,11 @@ class RoomVC: BaseViewController, HiddenNavigationBarProtocol {
return _chatListVC
}()
private lazy var roomEffectView:RoomDynamicEffectView = {
let _roomEffectView = RoomDynamicEffectView(frame: .zero)
_roomEffectView.isUserInteractionEnabled = false
return _roomEffectView
}()
}
@@ -266,6 +324,9 @@ extension RoomVC : NIMChatManagerDelegate, NIMChatroomManagerDelegate, NIMLoginM
self.topView.roomData = self.roomInfo
}else if msg.messageType == .text{
chatScreenView.getTextMsg(msg: msg)
}else if msg.messageType == .custom{
chatScreenView.dealWithCustomMsg(msg: msg)
roomEffectView.dealWithCustomMsg(msg: msg)
}
micSeatView.dealWithNotMessage(msg: msg)
menuView.dealWithNotMessage(msg: msg)
@@ -278,6 +339,9 @@ extension RoomVC : NIMChatManagerDelegate, NIMChatroomManagerDelegate, NIMLoginM
}
if message.messageType == .text{
chatScreenView.getTextMsg(msg: message)
}else if message.messageType == .custom{
chatScreenView.dealWithCustomMsg(msg: message)
roomEffectView.dealWithCustomMsg(msg: message)
}
}
func updateOnlineNum(num:Int){