fix(live-room): 스탭 해제 후 방 정보 갱신 타이밍을 보정한다

This commit is contained in:
Yu Sung
2026-03-30 18:24:40 +09:00
parent ec7e9cc71c
commit 3a4df173d2
2 changed files with 45 additions and 4 deletions

View File

@@ -1055,9 +1055,12 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
agora.sendMessageToPeer(peerId: String(peerId), rawMessage: LiveRoomRequestType.CHANGE_LISTENER.rawValue.data(using: .utf8)!) { [unowned self] _, error in
if error == nil {
if isFromManager {
getRoomInfo()
setManagerMessage()
releaseManagerMessageToPeer(userId: peerId)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.8) { [weak self] in
self?.getRoomInfo()
}
self.popupContent = "\(getUserNicknameAndProfileUrl(accountId: peerId).nickname)님을 스탭에서 해제했어요."
} else {
self.popupContent = "\(getUserNicknameAndProfileUrl(accountId: peerId).nickname)님을 리스너로 변경했어요."
@@ -1101,7 +1104,10 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
}
func setListener() {
repository.setListener(roomId: AppState.shared.roomId, userId: UserDefaults.int(forKey: .userId))
let currentUserId = UserDefaults.int(forKey: .userId)
let wasManager = liveRoomInfo?.managerList.contains(where: { $0.id == currentUserId }) ?? false
repository.setListener(roomId: AppState.shared.roomId, userId: currentUserId)
.sink { result in
switch result {
case .finished:
@@ -1121,10 +1127,14 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
self.agora.setRole(role: .audience)
self.isMute = false
self.agora.mute(isMute)
if let index = self.muteSpeakers.firstIndex(of: UInt(UserDefaults.int(forKey: .userId))) {
if let index = self.muteSpeakers.firstIndex(of: UInt(currentUserId)) {
self.muteSpeakers.remove(at: index)
}
self.getRoomInfo()
if wasManager {
self.setManagerMessage()
}
}
} catch {
}