diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/talk/room/ChatRoomActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/talk/room/ChatRoomActivity.kt index 143c3cdb..b9729be4 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/talk/room/ChatRoomActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/talk/room/ChatRoomActivity.kt @@ -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( // Repository 주입 (7.1 초기 데이터 로딩) private val chatRepository: ChatRepository by inject() + private val userRepository: UserRepository by inject() // 5.2 무한 스크롤/자동 스크롤 상태 private val items: MutableList = mutableListOf() @@ -76,6 +79,8 @@ class ChatRoomActivity : BaseActivity( loadInitialMessages() // 배경 표시 설정 적용 applyBackgroundVisibility() + // 서버 최신 보유 캔 정보 조회 및 헤더 반영 + fetchAndBindMemberInfo() } @SuppressLint("SetTextI18n") @@ -869,6 +874,22 @@ class ChatRoomActivity : BaseActivity( 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",