// // RoomVCViewModel.swift // yinmeng-ios // // Created by yinmeng on 2024/3/11. // import UIKit import RxSwift import RxCocoa import NIMSDK import MBProgressHUD class RoomVCViewModel: NSObject { static let roomVM = RoomVCViewModel.init() var isMute = true let roomData = PublishSubject() let chatRoomData = PublishSubject() func getRoomUserInfo(roomUid:String,uid:String){ let params = ["uid":roomUid,"intoUid":uid] RequestGet(path: "room/get", parma: params) { data in if let info = Deserialized.toModel(with: data) { self.roomData.onNext(info) } } fail: { code, message in } } func collectRoom(roomUid:String,type:String){ let uid = "\(AuthManager.userUid)" let params = ["uid":uid,"roomUid":roomUid,"type":type] as [String : Any] RequestPost(path: "fans/fansRoom", parma: params) { data in HUDTool.show(with: type == "1" ? "收藏成功" : "取消收藏成功") } fail: { code, message in } } func openRoom(title:String,type:Int,roomPwd:String,roomDesc:String,backPic:String){ let uid = "\(AuthManager.userUid)" let ticket = AuthManager.ticket let params = ["uid":uid,"ticket":ticket,"title":title,"type":type,"roomPwd":roomPwd,"roomDesc":roomDesc,"backPic":backPic,"mgId":0] as [String : Any] RequestPost(path: "room/open", parma: params) { data in if let info = Deserialized.toModel(with: data) { self.roomData.onNext(info) } } fail: { code, message in print(code,message) print(code,message) } } func NIMSDKEnterRoom(roomId:String,user:UserObject){ let enterRequest = NIMChatroomEnterRequest() enterRequest.roomId = roomId var extData = RoomChatData() extData.erbanNo = user.erbanNo ?? 0 extData.experUrl = user.userLevelVo?.experUrl ?? "" extData.charmUrl = user.userLevelVo?.charmUrl ?? "" if let uid = user.uid{ let data = ["\(uid)":extData.toJSON()] enterRequest.roomExt = toJSONString(dict: data as NSDictionary) NIMSDK.shared().chatroomManager.enterChatroom(enterRequest) { error, room, roomMember in if error == nil,let getRoom = room { self.chatRoomData.onNext(getRoom) } } } } func toJSONString(dict:NSDictionary?)->String{ let data = try? JSONSerialization.data(withJSONObject: dict!, options: JSONSerialization.WritingOptions.prettyPrinted) let strJson = NSString(data: data!, encoding: NSUTF8StringEncoding) return strJson! as String } }