라이브 방

- 차단한 유저의 채팅이 보이지 않도록 수정
This commit is contained in:
Yu Sung
2024-09-05 18:12:10 +09:00
parent 7408288d85
commit 66ce37defa
4 changed files with 63 additions and 21 deletions

View File

@@ -189,6 +189,34 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
var timer: DispatchSourceTimer?
private var blockedMemberIdList = Set<Int>()
func getBlockedMemberIdList() {
userRepository.getBlockedMemberIdList()
.sink { result in
switch result {
case .finished:
DEBUG_LOG("finish")
case .failure(let error):
ERROR_LOG(error.localizedDescription)
}
} receiveValue: { [unowned self] response in
let responseData = response.data
do {
let jsonDecoder = JSONDecoder()
let decoded = try jsonDecoder.decode(ApiResponse<[Int]>.self, from: responseData)
if let data = decoded.data, decoded.success {
self.blockedMemberIdList.removeAll()
self.blockedMemberIdList.formUnion(data)
}
} catch {
}
}
.store(in: &subscription)
}
func setOriginOffset(_ offset: CGFloat) {
guard !isCheckedOriginOffset else { return }
self.originOffset = offset
@@ -898,21 +926,21 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
}
func kickOut() {
repository.kickOut(roomId: AppState.shared.roomId, userId: kickOutId)
.sink { result in
switch result {
case .finished:
DEBUG_LOG("finish")
case .failure(let error):
ERROR_LOG(error.localizedDescription)
}
} receiveValue: { _ in
}
.store(in: &subscription)
let nickname = getUserNicknameAndProfileUrl(accountId: kickOutId).nickname
if UserDefaults.int(forKey: .userId) == liveRoomInfo?.creatorId {
repository.kickOut(roomId: AppState.shared.roomId, userId: kickOutId)
.sink { result in
switch result {
case .finished:
DEBUG_LOG("finish")
case .failure(let error):
ERROR_LOG(error.localizedDescription)
}
} receiveValue: { _ in
}
.store(in: &subscription)
let nickname = getUserNicknameAndProfileUrl(accountId: kickOutId).nickname
agora.sendMessageToPeer(peerId: String(kickOutId), rawMessage: LiveRoomRequestType.KICK_OUT.rawValue.data(using: .utf8)!, completion: { [unowned self] errorCode in
if errorCode == .ok {
self.popupContent = "\(nickname)님을 내보냈습니다."
@@ -1331,6 +1359,8 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
}
func userBlock(onSuccess: @escaping (Int) -> Void) {
blockedMemberIdList.insert(reportUserId)
isLoading = true
userRepository.memberBlock(userId: reportUserId)
.sink { result in
@@ -1374,6 +1404,8 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
}
func userUnBlock() {
blockedMemberIdList.remove(reportUserId)
isLoading = true
userRepository.memberUnBlock(userId: reportUserId)
.sink { result in
@@ -1972,11 +2004,12 @@ extension LiveRoomViewModel: AgoraRtmChannelDelegate {
} catch {
}
} else {
let memberId = Int(member.userId) ?? 0
let chat = message.text
let rank = getUserRank(userId: Int(member.userId) ?? 0)
let rank = getUserRank(userId: memberId)
if !chat.trimmingCharacters(in: .whitespaces).isEmpty {
messages.append(LiveRoomNormalChat(userId: Int(member.userId)!, profileUrl: profileUrl, nickname: nickname, rank: rank, chat: chat))
if !chat.trimmingCharacters(in: .whitespaces).isEmpty && !blockedMemberIdList.contains(memberId) {
messages.append(LiveRoomNormalChat(userId: memberId, profileUrl: profileUrl, nickname: nickname, rank: rank, chat: chat))
}
}

View File

@@ -358,6 +358,7 @@ struct LiveRoomViewV2: View {
viewModel.getMemberCan()
viewModel.initAgoraEngine()
viewModel.getRoomInfo()
viewModel.getBlockedMemberIdList()
NotificationCenter.default.addObserver(
forName: UIApplication.willTerminateNotification,
@@ -520,7 +521,7 @@ struct LiveRoomViewV2: View {
)
Rectangle()
.foregroundColor(Color(hex: "222222"))
.foregroundColor(Color.gray22)
.frame(width: screenSize().width, height: 15.3)
}
.ignoresSafeArea()