parent
7408288d85
commit
66ce37defa
|
@ -189,6 +189,34 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
|
||||||
|
|
||||||
var timer: DispatchSourceTimer?
|
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) {
|
func setOriginOffset(_ offset: CGFloat) {
|
||||||
guard !isCheckedOriginOffset else { return }
|
guard !isCheckedOriginOffset else { return }
|
||||||
self.originOffset = offset
|
self.originOffset = offset
|
||||||
|
@ -898,6 +926,7 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
func kickOut() {
|
func kickOut() {
|
||||||
|
if UserDefaults.int(forKey: .userId) == liveRoomInfo?.creatorId {
|
||||||
repository.kickOut(roomId: AppState.shared.roomId, userId: kickOutId)
|
repository.kickOut(roomId: AppState.shared.roomId, userId: kickOutId)
|
||||||
.sink { result in
|
.sink { result in
|
||||||
switch result {
|
switch result {
|
||||||
|
@ -912,7 +941,6 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
|
||||||
.store(in: &subscription)
|
.store(in: &subscription)
|
||||||
|
|
||||||
let nickname = getUserNicknameAndProfileUrl(accountId: kickOutId).nickname
|
let nickname = getUserNicknameAndProfileUrl(accountId: kickOutId).nickname
|
||||||
if UserDefaults.int(forKey: .userId) == liveRoomInfo?.creatorId {
|
|
||||||
agora.sendMessageToPeer(peerId: String(kickOutId), rawMessage: LiveRoomRequestType.KICK_OUT.rawValue.data(using: .utf8)!, completion: { [unowned self] errorCode in
|
agora.sendMessageToPeer(peerId: String(kickOutId), rawMessage: LiveRoomRequestType.KICK_OUT.rawValue.data(using: .utf8)!, completion: { [unowned self] errorCode in
|
||||||
if errorCode == .ok {
|
if errorCode == .ok {
|
||||||
self.popupContent = "\(nickname)님을 내보냈습니다."
|
self.popupContent = "\(nickname)님을 내보냈습니다."
|
||||||
|
@ -1331,6 +1359,8 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
func userBlock(onSuccess: @escaping (Int) -> Void) {
|
func userBlock(onSuccess: @escaping (Int) -> Void) {
|
||||||
|
blockedMemberIdList.insert(reportUserId)
|
||||||
|
|
||||||
isLoading = true
|
isLoading = true
|
||||||
userRepository.memberBlock(userId: reportUserId)
|
userRepository.memberBlock(userId: reportUserId)
|
||||||
.sink { result in
|
.sink { result in
|
||||||
|
@ -1374,6 +1404,8 @@ final class LiveRoomViewModel: NSObject, ObservableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
func userUnBlock() {
|
func userUnBlock() {
|
||||||
|
blockedMemberIdList.remove(reportUserId)
|
||||||
|
|
||||||
isLoading = true
|
isLoading = true
|
||||||
userRepository.memberUnBlock(userId: reportUserId)
|
userRepository.memberUnBlock(userId: reportUserId)
|
||||||
.sink { result in
|
.sink { result in
|
||||||
|
@ -1972,11 +2004,12 @@ extension LiveRoomViewModel: AgoraRtmChannelDelegate {
|
||||||
} catch {
|
} catch {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
let memberId = Int(member.userId) ?? 0
|
||||||
let chat = message.text
|
let chat = message.text
|
||||||
let rank = getUserRank(userId: Int(member.userId) ?? 0)
|
let rank = getUserRank(userId: memberId)
|
||||||
|
|
||||||
if !chat.trimmingCharacters(in: .whitespaces).isEmpty {
|
if !chat.trimmingCharacters(in: .whitespaces).isEmpty && !blockedMemberIdList.contains(memberId) {
|
||||||
messages.append(LiveRoomNormalChat(userId: Int(member.userId)!, profileUrl: profileUrl, nickname: nickname, rank: rank, chat: chat))
|
messages.append(LiveRoomNormalChat(userId: memberId, profileUrl: profileUrl, nickname: nickname, rank: rank, chat: chat))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -358,6 +358,7 @@ struct LiveRoomViewV2: View {
|
||||||
viewModel.getMemberCan()
|
viewModel.getMemberCan()
|
||||||
viewModel.initAgoraEngine()
|
viewModel.initAgoraEngine()
|
||||||
viewModel.getRoomInfo()
|
viewModel.getRoomInfo()
|
||||||
|
viewModel.getBlockedMemberIdList()
|
||||||
|
|
||||||
NotificationCenter.default.addObserver(
|
NotificationCenter.default.addObserver(
|
||||||
forName: UIApplication.willTerminateNotification,
|
forName: UIApplication.willTerminateNotification,
|
||||||
|
@ -520,7 +521,7 @@ struct LiveRoomViewV2: View {
|
||||||
)
|
)
|
||||||
|
|
||||||
Rectangle()
|
Rectangle()
|
||||||
.foregroundColor(Color(hex: "222222"))
|
.foregroundColor(Color.gray22)
|
||||||
.frame(width: screenSize().width, height: 15.3)
|
.frame(width: screenSize().width, height: 15.3)
|
||||||
}
|
}
|
||||||
.ignoresSafeArea()
|
.ignoresSafeArea()
|
||||||
|
|
|
@ -22,6 +22,7 @@ enum UserApi {
|
||||||
case updatePushToken(request: PushTokenUpdateRequest)
|
case updatePushToken(request: PushTokenUpdateRequest)
|
||||||
case creatorFollow(request: CreatorFollowRequest)
|
case creatorFollow(request: CreatorFollowRequest)
|
||||||
case creatorUnFollow(request: CreatorFollowRequest)
|
case creatorUnFollow(request: CreatorFollowRequest)
|
||||||
|
case getBlockedMemberIdList
|
||||||
case getBlockedMemberList(page: Int, size: Int)
|
case getBlockedMemberList(page: Int, size: Int)
|
||||||
case memberBlock(request: MemberBlockRequest)
|
case memberBlock(request: MemberBlockRequest)
|
||||||
case memberUnBlock(request: MemberBlockRequest)
|
case memberUnBlock(request: MemberBlockRequest)
|
||||||
|
@ -80,6 +81,9 @@ extension UserApi: TargetType {
|
||||||
case .creatorUnFollow:
|
case .creatorUnFollow:
|
||||||
return "/member/creator/unfollow"
|
return "/member/creator/unfollow"
|
||||||
|
|
||||||
|
case .getBlockedMemberIdList:
|
||||||
|
return "/member/block/id"
|
||||||
|
|
||||||
case .getBlockedMemberList, .memberBlock:
|
case .getBlockedMemberList, .memberBlock:
|
||||||
return "/member/block"
|
return "/member/block"
|
||||||
|
|
||||||
|
@ -112,7 +116,7 @@ extension UserApi: TargetType {
|
||||||
.profileImageUpdate:
|
.profileImageUpdate:
|
||||||
return .post
|
return .post
|
||||||
|
|
||||||
case .searchUser, .getMypage, .getMemberInfo, .getMyProfile, .getChangeNicknamePrice, .checkNickname, .getBlockedMemberList:
|
case .searchUser, .getMypage, .getMemberInfo, .getMyProfile, .getChangeNicknamePrice, .checkNickname, .getBlockedMemberList, .getBlockedMemberIdList:
|
||||||
return .get
|
return .get
|
||||||
|
|
||||||
case .updatePushToken, .profileUpdate, .changeNickname, .updateIdfa:
|
case .updatePushToken, .profileUpdate, .changeNickname, .updateIdfa:
|
||||||
|
@ -137,7 +141,7 @@ extension UserApi: TargetType {
|
||||||
case .getMypage, .getMyProfile, .getMemberInfo:
|
case .getMypage, .getMyProfile, .getMemberInfo:
|
||||||
return .requestParameters(parameters: ["container" : "ios"], encoding: URLEncoding.queryString)
|
return .requestParameters(parameters: ["container" : "ios"], encoding: URLEncoding.queryString)
|
||||||
|
|
||||||
case .logout, .logoutAllDevice, .getChangeNicknamePrice:
|
case .logout, .logoutAllDevice, .getChangeNicknamePrice, .getBlockedMemberIdList:
|
||||||
return .requestPlain
|
return .requestPlain
|
||||||
|
|
||||||
case .notification(let request):
|
case .notification(let request):
|
||||||
|
|
|
@ -77,6 +77,10 @@ final class UserRepository {
|
||||||
return api.requestPublisher(.creatorUnFollow(request: CreatorFollowRequest(creatorId: creatorId)))
|
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> {
|
func getBlockedMemberList(page: Int, size: Int) -> AnyPublisher<Response, MoyaError> {
|
||||||
return api.requestPublisher(.getBlockedMemberList(page: page, size: size))
|
return api.requestPublisher(.getBlockedMemberList(page: page, size: size))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue