라이브 방

- 차단한 유저의 채팅이 보이지 않도록 수정
This commit is contained in:
klaus 2024-09-04 22:29:55 +09:00
parent 0ebb34a2df
commit 9dfd73b090
4 changed files with 64 additions and 15 deletions

View File

@ -249,6 +249,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
viewModel.getMemberCan() viewModel.getMemberCan()
viewModel.getRoomInfo(roomId) viewModel.getRoomInfo(roomId)
viewModel.getBlockedMemberIdList()
binding.etChat.setOnFocusChangeListener { view, hasFocus -> binding.etChat.setOnFocusChangeListener { view, hasFocus ->
if (isNoChatting && hasFocus) { if (isNoChatting && hasFocus) {
@ -522,6 +523,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
when (it.itemId) { when (it.itemId) {
R.id.menu_user_block -> { R.id.menu_user_block -> {
viewModel.memberUnBlock(userId) viewModel.memberUnBlock(userId)
viewModel.removeBlockedMember(memberId = userId)
} }
R.id.menu_user_report -> { R.id.menu_user_report -> {
@ -573,6 +575,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
dialog.setPositiveButton("차단") { _, _ -> dialog.setPositiveButton("차단") { _, _ ->
roomUserProfileDialog.dismiss() roomUserProfileDialog.dismiss()
viewModel.memberBlock(userId) { viewModel.memberBlock(userId) {
viewModel.addBlockedMember(memberId = userId)
if (viewModel.roomInfoResponse.creatorId == SharedPreferenceManager.userId) { if (viewModel.roomInfoResponse.creatorId == SharedPreferenceManager.userId) {
kickOut(userId) kickOut(userId)
} }
@ -1529,13 +1532,15 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
else -> {} else -> {}
} }
} else { } else {
val memberId = fromMember.userId.toLong()
if (viewModel.isNotBlockedMember(memberId)) {
val chat = message.text val chat = message.text
if (chat.isNotBlank()) { if (chat.isNotBlank()) {
handler.post { handler.post {
chatAdapter.items.add( chatAdapter.items.add(
LiveRoomNormalChat( LiveRoomNormalChat(
userId = fromMember.userId.toLong(), userId = memberId,
profileUrl = profileUrl, profileUrl = profileUrl,
nickname = nickname, nickname = nickname,
rank = rank, rank = rank,
@ -1547,6 +1552,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
} }
} }
} }
}
@SuppressLint("NotifyDataSetChanged") @SuppressLint("NotifyDataSetChanged")
override fun onMemberJoined(member: RtmChannelMember) { override fun onMemberJoined(member: RtmChannelMember) {

View File

@ -90,6 +90,8 @@ class LiveRoomViewModel(
lateinit var getRealPathFromURI: (Uri) -> String? lateinit var getRealPathFromURI: (Uri) -> String?
private val blockedMemberIdList: MutableList<Long> = mutableListOf()
fun getUserNickname(memberId: Int): String { fun getUserNickname(memberId: Int): String {
for (manager in roomInfoResponse.managerList) { for (manager in roomInfoResponse.managerList) {
if (manager.id.toInt() == memberId) { if (manager.id.toInt() == memberId) {
@ -236,6 +238,35 @@ class LiveRoomViewModel(
return memberId == roomInfoResponse.creatorId.toInt() return memberId == roomInfoResponse.creatorId.toInt()
} }
fun isNotBlockedMember(memberId: Long): Boolean {
return !blockedMemberIdList.contains(memberId)
}
fun addBlockedMember(memberId: Long) {
blockedMemberIdList.add(memberId)
}
fun removeBlockedMember(memberId: Long) {
blockedMemberIdList.remove(memberId)
}
fun getBlockedMemberIdList() {
compositeDisposable.add(
userRepository.getBlockedMemberIdList(token = "Bearer ${SharedPreferenceManager.token}")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{
if (it.success && it.data != null) {
this.blockedMemberIdList.clear()
this.blockedMemberIdList.addAll(it.data)
}
},
{}
)
)
}
fun getMemberCan() { fun getMemberCan() {
compositeDisposable.add( compositeDisposable.add(
userRepository.getMemberInfo(token = "Bearer ${SharedPreferenceManager.token}") userRepository.getMemberInfo(token = "Bearer ${SharedPreferenceManager.token}")
@ -247,8 +278,7 @@ class LiveRoomViewModel(
SharedPreferenceManager.can = it.data.can SharedPreferenceManager.can = it.data.can
} }
}, },
{ {}
}
) )
) )
} }
@ -526,7 +556,13 @@ class LiveRoomViewModel(
) { ) {
_isLoading.postValue(true) _isLoading.postValue(true)
compositeDisposable.add( compositeDisposable.add(
repository.donation(roomId, can, message, isSecret, "Bearer ${SharedPreferenceManager.token}") repository.donation(
roomId,
can,
message,
isSecret,
"Bearer ${SharedPreferenceManager.token}"
)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe( .subscribe(

View File

@ -152,4 +152,9 @@ interface UserApi {
@Query("size") size: Int, @Query("size") size: Int,
@Header("Authorization") authHeader: String @Header("Authorization") authHeader: String
): Single<ApiResponse<GetBlockedMemberListResponse>> ): Single<ApiResponse<GetBlockedMemberListResponse>>
@GET("/member/block/id")
fun getBlockedMemberIdList(
@Header("Authorization") authHeader: String
): Single<ApiResponse<List<Long>>>
} }

View File

@ -122,4 +122,6 @@ class UserRepository(private val userApi: UserApi) {
size = size, size = size,
authHeader = token authHeader = token
) )
fun getBlockedMemberIdList(token: String) = userApi.getBlockedMemberIdList(authHeader = token)
} }