feat: clear channel state on socket reconnect

This commit is contained in:
Infi 2023-01-19 16:06:26 +01:00
parent db4015f4f6
commit 69c88d1a30
2 changed files with 13 additions and 0 deletions

View File

@ -39,6 +39,7 @@ object RealtimeSocket {
Log.d("RealtimeSocket", "Connected to websocket.")
updateDisconnectionState(DisconnectionState.Connected)
invalidateAllChannelStates()
// Send authorization frame
val authFrame = AuthorizationFrame("Authenticate", token)
@ -166,11 +167,18 @@ object RealtimeSocket {
}
}
}
private fun invalidateAllChannelStates() {
channelCallbacks.forEach { (_, callback) ->
callback.onStateInvalidate()
}
}
interface ChannelCallback {
fun onStartTyping(typing: ChannelStartTypingFrame)
fun onStopTyping(typing: ChannelStopTypingFrame)
fun onMessage(message: MessageFrame)
fun onStateInvalidate()
}
private val channelCallbacks: SnapshotStateMap<String, ChannelCallback> = mutableStateMapOf()

View File

@ -156,6 +156,11 @@ class ChannelScreenViewModel : ViewModel() {
_typingUsers.remove(typing.user)
}
}
override fun onStateInvalidate() {
fetchMessages()
_typingUsers.clear()
}
}
private fun registerCallback() {