fix(chat): DM realtime 정리 누락을 보정한다

This commit is contained in:
2026-06-11 12:05:45 +09:00
parent 841ed5f6f8
commit a6d8cd54f3
2 changed files with 94 additions and 2 deletions

View File

@@ -1,5 +1,7 @@
package kr.co.vividnext.sodalive.v2.main.chat.dm
import android.os.Handler
import android.os.Looper
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger
@@ -47,6 +49,7 @@ class DmChatRoomViewModel(
private var isDisconnecting: Boolean = false
private var reconnectDisposable: Disposable? = null
private var localMessageSequence: Long = 0L
private val mainHandler = Handler(Looper.getMainLooper())
private val _chatRoomStateLiveData = MutableLiveData<DmChatRoomUiState>()
val chatRoomStateLiveData: LiveData<DmChatRoomUiState>
@@ -252,7 +255,19 @@ class DmChatRoomViewModel(
}
private fun scheduleRealtimeCallback(action: () -> Unit) {
compositeDisposable.add(AndroidSchedulers.mainThread().scheduleDirect(action))
if (Looper.myLooper() == Looper.getMainLooper()) {
action()
} else {
mainHandler.post { action() }
}
}
override fun onCleared() {
mainHandler.removeCallbacksAndMessages(null)
reconnectDisposable?.dispose()
reconnectDisposable = null
repository.cancelRealtime()
super.onCleared()
}
private fun createRoomAndOpen(creatorId: Long) {