Scroll to bottom upon chat message reception

This commit is contained in:
Sylvain Berfini 2020-05-26 17:00:12 +02:00
parent fe1fef5209
commit af2105e193
2 changed files with 11 additions and 0 deletions

View file

@ -145,6 +145,12 @@ class DetailChatRoomFragment : MasterFragment() {
} }
}) })
listViewModel.scrollToBottomOnMessageReceivedEvent.observe(viewLifecycleOwner, Observer {
it.consume {
scrollToBottom()
}
})
listViewModel.requestWriteExternalStoragePermissionEvent.observe(viewLifecycleOwner, Observer { listViewModel.requestWriteExternalStoragePermissionEvent.observe(viewLifecycleOwner, Observer {
it.consume { it.consume {
requestPermissions(arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE), 1) requestPermissions(arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE), 1)

View file

@ -54,6 +54,10 @@ class ChatMessagesListViewModel(private val chatRoom: ChatRoom) : ViewModel() {
MutableLiveData<Event<Boolean>>() MutableLiveData<Event<Boolean>>()
} }
val scrollToBottomOnMessageReceivedEvent: MutableLiveData<Event<Boolean>> by lazy {
MutableLiveData<Event<Boolean>>()
}
private val chatMessageListener: ChatMessageListenerStub = object : ChatMessageListenerStub() { private val chatMessageListener: ChatMessageListenerStub = object : ChatMessageListenerStub() {
override fun onMsgStateChanged(message: ChatMessage, state: ChatMessage.State) { override fun onMsgStateChanged(message: ChatMessage, state: ChatMessage.State) {
if (state == ChatMessage.State.Displayed) { if (state == ChatMessage.State.Displayed) {
@ -86,6 +90,7 @@ class ChatMessagesListViewModel(private val chatRoom: ChatRoom) : ViewModel() {
} }
} }
} }
scrollToBottomOnMessageReceivedEvent.value = Event(true)
} }
addEvent(eventLog) addEvent(eventLog)