fix(chat): DM realtime 정리 누락을 보정한다
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user