parent
7408288d85
commit
66ce37defa
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -22,6 +22,7 @@ enum UserApi {
|
|||
case updatePushToken(request: PushTokenUpdateRequest)
|
||||
case creatorFollow(request: CreatorFollowRequest)
|
||||
case creatorUnFollow(request: CreatorFollowRequest)
|
||||
case getBlockedMemberIdList
|
||||
case getBlockedMemberList(page: Int, size: Int)
|
||||
case memberBlock(request: MemberBlockRequest)
|
||||
case memberUnBlock(request: MemberBlockRequest)
|
||||
|
@ -80,6 +81,9 @@ extension UserApi: TargetType {
|
|||
case .creatorUnFollow:
|
||||
return "/member/creator/unfollow"
|
||||
|
||||
case .getBlockedMemberIdList:
|
||||
return "/member/block/id"
|
||||
|
||||
case .getBlockedMemberList, .memberBlock:
|
||||
return "/member/block"
|
||||
|
||||
|
@ -112,7 +116,7 @@ extension UserApi: TargetType {
|
|||
.profileImageUpdate:
|
||||
return .post
|
||||
|
||||
case .searchUser, .getMypage, .getMemberInfo, .getMyProfile, .getChangeNicknamePrice, .checkNickname, .getBlockedMemberList:
|
||||
case .searchUser, .getMypage, .getMemberInfo, .getMyProfile, .getChangeNicknamePrice, .checkNickname, .getBlockedMemberList, .getBlockedMemberIdList:
|
||||
return .get
|
||||
|
||||
case .updatePushToken, .profileUpdate, .changeNickname, .updateIdfa:
|
||||
|
@ -137,7 +141,7 @@ extension UserApi: TargetType {
|
|||
case .getMypage, .getMyProfile, .getMemberInfo:
|
||||
return .requestParameters(parameters: ["container" : "ios"], encoding: URLEncoding.queryString)
|
||||
|
||||
case .logout, .logoutAllDevice, .getChangeNicknamePrice:
|
||||
case .logout, .logoutAllDevice, .getChangeNicknamePrice, .getBlockedMemberIdList:
|
||||
return .requestPlain
|
||||
|
||||
case .notification(let request):
|
||||
|
|
|
@ -77,6 +77,10 @@ final class UserRepository {
|
|||
return api.requestPublisher(.creatorUnFollow(request: CreatorFollowRequest(creatorId: creatorId)))
|
||||
}
|
||||
|
||||
func getBlockedMemberIdList() -> AnyPublisher<Response, MoyaError> {
|
||||
return api.requestPublisher(.getBlockedMemberIdList)
|
||||
}
|
||||
|
||||
func getBlockedMemberList(page: Int, size: Int) -> AnyPublisher<Response, MoyaError> {
|
||||
return api.requestPublisher(.getBlockedMemberList(page: page, size: size))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue