fix(chat): 채팅방 입장 시 서버 멤버 정보로 캔 배지 동기화
- ChatRoomActivity에서 getMemberInfo 호출 추가 - 응답 성공 시 SharedPreferenceManager.can/point 갱신 및 헤더 배지 즉시 반영 - 네트워크 실패 시 UI 흐름 방해 없이 조용히 무시 처리
This commit is contained in:
@@ -16,6 +16,7 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import coil.load
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||
import kr.co.vividnext.sodalive.base.SodaDialog
|
||||
@@ -25,6 +26,7 @@ import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||
import kr.co.vividnext.sodalive.databinding.ActivityChatRoomBinding
|
||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||
import kr.co.vividnext.sodalive.user.UserRepository
|
||||
import org.koin.android.ext.android.inject
|
||||
import java.util.Locale
|
||||
|
||||
@@ -38,6 +40,7 @@ class ChatRoomActivity : BaseActivity<ActivityChatRoomBinding>(
|
||||
|
||||
// Repository 주입 (7.1 초기 데이터 로딩)
|
||||
private val chatRepository: ChatRepository by inject()
|
||||
private val userRepository: UserRepository by inject()
|
||||
|
||||
// 5.2 무한 스크롤/자동 스크롤 상태
|
||||
private val items: MutableList<ChatListItem> = mutableListOf()
|
||||
@@ -76,6 +79,8 @@ class ChatRoomActivity : BaseActivity<ActivityChatRoomBinding>(
|
||||
loadInitialMessages()
|
||||
// 배경 표시 설정 적용
|
||||
applyBackgroundVisibility()
|
||||
// 서버 최신 보유 캔 정보 조회 및 헤더 반영
|
||||
fetchAndBindMemberInfo()
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
@@ -869,6 +874,22 @@ class ChatRoomActivity : BaseActivity<ActivityChatRoomBinding>(
|
||||
return if (id > 0) id else null
|
||||
}
|
||||
|
||||
private fun fetchAndBindMemberInfo() {
|
||||
val token = "Bearer ${SharedPreferenceManager.token}"
|
||||
val disposable = userRepository.getMemberInfo(token)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ resp ->
|
||||
val data = if (resp.success) resp.data else null
|
||||
if (data != null) {
|
||||
SharedPreferenceManager.can = data.can
|
||||
SharedPreferenceManager.point = data.point
|
||||
binding.tvCanBadge.text = data.can.moneyFormat()
|
||||
}
|
||||
}, { /* ignore error to avoid blocking chat UI */ })
|
||||
compositeDisposable.add(disposable)
|
||||
}
|
||||
|
||||
private fun clearLocalPrefsForRoom(roomId: Long) {
|
||||
val keys = listOf(
|
||||
"chat_bg_visible_room_$roomId",
|
||||
|
||||
Reference in New Issue
Block a user