feat: clear channel state on socket reconnect
This commit is contained in:
parent
db4015f4f6
commit
69c88d1a30
|
|
@ -39,6 +39,7 @@ object RealtimeSocket {
|
||||||
|
|
||||||
Log.d("RealtimeSocket", "Connected to websocket.")
|
Log.d("RealtimeSocket", "Connected to websocket.")
|
||||||
updateDisconnectionState(DisconnectionState.Connected)
|
updateDisconnectionState(DisconnectionState.Connected)
|
||||||
|
invalidateAllChannelStates()
|
||||||
|
|
||||||
// Send authorization frame
|
// Send authorization frame
|
||||||
val authFrame = AuthorizationFrame("Authenticate", token)
|
val authFrame = AuthorizationFrame("Authenticate", token)
|
||||||
|
|
@ -166,11 +167,18 @@ object RealtimeSocket {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun invalidateAllChannelStates() {
|
||||||
|
channelCallbacks.forEach { (_, callback) ->
|
||||||
|
callback.onStateInvalidate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
interface ChannelCallback {
|
interface ChannelCallback {
|
||||||
fun onStartTyping(typing: ChannelStartTypingFrame)
|
fun onStartTyping(typing: ChannelStartTypingFrame)
|
||||||
fun onStopTyping(typing: ChannelStopTypingFrame)
|
fun onStopTyping(typing: ChannelStopTypingFrame)
|
||||||
fun onMessage(message: MessageFrame)
|
fun onMessage(message: MessageFrame)
|
||||||
|
fun onStateInvalidate()
|
||||||
}
|
}
|
||||||
|
|
||||||
private val channelCallbacks: SnapshotStateMap<String, ChannelCallback> = mutableStateMapOf()
|
private val channelCallbacks: SnapshotStateMap<String, ChannelCallback> = mutableStateMapOf()
|
||||||
|
|
|
||||||
|
|
@ -156,6 +156,11 @@ class ChannelScreenViewModel : ViewModel() {
|
||||||
_typingUsers.remove(typing.user)
|
_typingUsers.remove(typing.user)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onStateInvalidate() {
|
||||||
|
fetchMessages()
|
||||||
|
_typingUsers.clear()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun registerCallback() {
|
private fun registerCallback() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue