라이브 방

- 차단한 유저의 채팅이 보이지 않도록 수정
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.getRoomInfo(roomId)
viewModel.getBlockedMemberIdList()
binding.etChat.setOnFocusChangeListener { view, hasFocus ->
if (isNoChatting && hasFocus) {
@ -522,6 +523,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
when (it.itemId) {
R.id.menu_user_block -> {
viewModel.memberUnBlock(userId)
viewModel.removeBlockedMember(memberId = userId)
}
R.id.menu_user_report -> {
@ -573,6 +575,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
dialog.setPositiveButton("차단") { _, _ ->
roomUserProfileDialog.dismiss()
viewModel.memberBlock(userId) {
viewModel.addBlockedMember(memberId = userId)
if (viewModel.roomInfoResponse.creatorId == SharedPreferenceManager.userId) {
kickOut(userId)
}
@ -1529,20 +1532,23 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
else -> {}
}
} else {
val chat = message.text
val memberId = fromMember.userId.toLong()
if (viewModel.isNotBlockedMember(memberId)) {
val chat = message.text
if (chat.isNotBlank()) {
handler.post {
chatAdapter.items.add(
LiveRoomNormalChat(
userId = fromMember.userId.toLong(),
profileUrl = profileUrl,
nickname = nickname,
rank = rank,
chat = chat
if (chat.isNotBlank()) {
handler.post {
chatAdapter.items.add(
LiveRoomNormalChat(
userId = memberId,
profileUrl = profileUrl,
nickname = nickname,
rank = rank,
chat = chat
)
)
)
invalidateChat()
invalidateChat()
}
}
}
}

View File

@ -90,6 +90,8 @@ class LiveRoomViewModel(
lateinit var getRealPathFromURI: (Uri) -> String?
private val blockedMemberIdList: MutableList<Long> = mutableListOf()
fun getUserNickname(memberId: Int): String {
for (manager in roomInfoResponse.managerList) {
if (manager.id.toInt() == memberId) {
@ -236,6 +238,35 @@ class LiveRoomViewModel(
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() {
compositeDisposable.add(
userRepository.getMemberInfo(token = "Bearer ${SharedPreferenceManager.token}")
@ -247,8 +278,7 @@ class LiveRoomViewModel(
SharedPreferenceManager.can = it.data.can
}
},
{
}
{}
)
)
}
@ -526,7 +556,13 @@ class LiveRoomViewModel(
) {
_isLoading.postValue(true)
compositeDisposable.add(
repository.donation(roomId, can, message, isSecret, "Bearer ${SharedPreferenceManager.token}")
repository.donation(
roomId,
can,
message,
isSecret,
"Bearer ${SharedPreferenceManager.token}"
)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(

View File

@ -152,4 +152,9 @@ interface UserApi {
@Query("size") size: Int,
@Header("Authorization") authHeader: String
): 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,
authHeader = token
)
fun getBlockedMemberIdList(token: String) = userApi.getBlockedMemberIdList(authHeader = token)
}