Bläddra i källkod

feat: 调整房间类型字段取值

陈文艺 6 dagar sedan
förälder
incheckning
d8a73f8dfb

+ 4 - 3
Lanu/Manager/Room/Network/LNRoomResponse.swift

@@ -16,10 +16,11 @@ enum LNRoomApplySeatType: Int, Decodable {
 }
 
 
-enum LNRoomType: Int, Decodable {
-    case unknown = 0
-    case playmate = 1
+struct LNRoomType: OptionSet, Decodable {
+    let rawValue: Int
     
+    static let unknown = LNRoomType([])
+    static let playmate = LNRoomType(rawValue: 1<<0)
     static var availableType: [LNRoomType] {
         [.playmate]
     }

+ 1 - 1
Lanu/Views/Room/ViewModel/LNRoomViewModel.swift

@@ -488,7 +488,7 @@ extension LNRoomViewModel {
     private func setupRoomInfoObserver() {
         LNRoomManager.shared.liveListStore.state.subscribe().receive(on: DispatchQueue.main).sink { [weak self] state in
             guard let self else { return }
-            if state.currentLive.roomType == .unknown {
+            if !state.currentLive.roomType.contains(.playmate) {
                 showToast(.init(key: "A00389"))
                 leaveRoom()
                 return

+ 2 - 5
Lanu/Views/Room/ViewModel/LiveInfo+Extension.swift

@@ -10,17 +10,14 @@ import AtomicXCore
 
 
 private let seatApplyCountKey = "mic_apply_num"
-private let roomTypeKey = "state_room_type"
 private let state_mic_mute = "state_mic_mute"
 
 extension LiveInfo {
     var roomType: LNRoomType {
-        guard let value = metaData[roomTypeKey],
-              let iValue = Int(value),
-              let type = LNRoomType(rawValue: iValue) else {
+        guard let value = categoryList.first?.intValue else {
             return .unknown
         }
-        return type
+        return LNRoomType(rawValue: value)
     }
     
     var applySeatCount: Int {