|
@@ -7,6 +7,7 @@
|
|
|
|
|
|
|
|
import Foundation
|
|
import Foundation
|
|
|
import AtomicXCore
|
|
import AtomicXCore
|
|
|
|
|
+import RTCRoomEngine
|
|
|
|
|
|
|
|
|
|
|
|
|
protocol LNRoomManagerNotify {
|
|
protocol LNRoomManagerNotify {
|
|
@@ -64,12 +65,15 @@ extension LNRoomManager {
|
|
|
func createRoom(roomName: String, cover: String, queue: DispatchQueue = .main,
|
|
func createRoom(roomName: String, cover: String, queue: DispatchQueue = .main,
|
|
|
forbidAudio: Bool, handler: @escaping (String?) -> Void)
|
|
forbidAudio: Bool, handler: @escaping (String?) -> Void)
|
|
|
{
|
|
{
|
|
|
- LNHttpManager.shared.createRoom(roomTitle: roomName, roomCover: cover, forbidAudio: forbidAudio) { room, err in
|
|
|
|
|
- queue.asyncIfNotGlobal {
|
|
|
|
|
- handler(room?.roomId)
|
|
|
|
|
- }
|
|
|
|
|
- if let err {
|
|
|
|
|
- showToast(err.errorDesc)
|
|
|
|
|
|
|
+ leaveRoom { _ in
|
|
|
|
|
+ LNHttpManager.shared.createRoom(roomTitle: roomName, roomCover: cover, forbidAudio: forbidAudio) { room, err in
|
|
|
|
|
+ queue.asyncIfNotGlobal {
|
|
|
|
|
+ handler(room?.roomId)
|
|
|
|
|
+ LNUserDefaults[.joinedRoomId] = room?.roomId
|
|
|
|
|
+ }
|
|
|
|
|
+ if let err {
|
|
|
|
|
+ showToast(err.errorDesc)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -80,6 +84,7 @@ extension LNRoomManager {
|
|
|
switch result {
|
|
switch result {
|
|
|
case .success(let info):
|
|
case .success(let info):
|
|
|
handler(info.liveID)
|
|
handler(info.liveID)
|
|
|
|
|
+ LNUserDefaults[.joinedRoomId] = roomId
|
|
|
case .failure(let errorInfo):
|
|
case .failure(let errorInfo):
|
|
|
handler(nil)
|
|
handler(nil)
|
|
|
showToast(errorInfo.message)
|
|
showToast(errorInfo.message)
|
|
@@ -103,15 +108,14 @@ extension LNRoomManager {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func leaveRoom(queue: DispatchQueue = .main, handler: @escaping (Bool) -> Void) {
|
|
func leaveRoom(queue: DispatchQueue = .main, handler: @escaping (Bool) -> Void) {
|
|
|
- liveListStore.leaveLive { result in
|
|
|
|
|
- queue.asyncIfNotGlobal {
|
|
|
|
|
- switch result {
|
|
|
|
|
- case .success:
|
|
|
|
|
- handler(true)
|
|
|
|
|
- case .failure(let errorInfo):
|
|
|
|
|
- handler(false)
|
|
|
|
|
- showToast(errorInfo.message)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ let curLive: String = curRoom?.roomId ?? LNUserDefaults[.joinedRoomId, ""]
|
|
|
|
|
+ if curLive.isEmpty {
|
|
|
|
|
+ handler(true)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ let json = "{\"api\":\"exitRoom\",\"params\":{\"roomId\":\"\(curLive)\",\"syncWaiting\":true,\"roomType\":2}}"
|
|
|
|
|
+ TUIRoomEngine.sharedInstance().callExperimentalAPI(jsonStr: json) { error in
|
|
|
|
|
+ handler(true)
|
|
|
|
|
+ LNUserDefaults[.joinedRoomId] = ""
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|