Commit cea99c1d authored by Leonardo Aramaki's avatar Leonardo Aramaki

Load offline messages first then load missing messages

parent 6b157720
...@@ -6,6 +6,8 @@ import chat.rocket.android.chatroom.adapter.AutoCompleteType ...@@ -6,6 +6,8 @@ import chat.rocket.android.chatroom.adapter.AutoCompleteType
import chat.rocket.android.chatroom.adapter.PEOPLE import chat.rocket.android.chatroom.adapter.PEOPLE
import chat.rocket.android.chatroom.adapter.ROOMS import chat.rocket.android.chatroom.adapter.ROOMS
import chat.rocket.android.chatroom.domain.UriInteractor import chat.rocket.android.chatroom.domain.UriInteractor
import chat.rocket.android.chatroom.viewmodel.BaseViewModel
import chat.rocket.android.chatroom.viewmodel.MessageViewModel
import chat.rocket.android.chatroom.viewmodel.ViewModelMapper import chat.rocket.android.chatroom.viewmodel.ViewModelMapper
import chat.rocket.android.chatroom.viewmodel.suggestion.ChatRoomSuggestionViewModel import chat.rocket.android.chatroom.viewmodel.suggestion.ChatRoomSuggestionViewModel
import chat.rocket.android.chatroom.viewmodel.suggestion.CommandSuggestionViewModel import chat.rocket.android.chatroom.viewmodel.suggestion.CommandSuggestionViewModel
...@@ -73,15 +75,20 @@ class ChatRoomPresenter @Inject constructor(private val view: ChatRoomView, ...@@ -73,15 +75,20 @@ class ChatRoomPresenter @Inject constructor(private val view: ChatRoomView,
launchUI(strategy) { launchUI(strategy) {
view.showLoading() view.showLoading()
try { try {
val oldMessages = messagesRepository.getByRoomId(chatRoomId) val localMessages = messagesRepository.getByRoomId(chatRoomId)
view.showMessages(mapper.map(oldMessages)) val oldMessages = mapper.map(localMessages)
val messages = view.showMessages(oldMessages)
retryIO(description = "messages chatRoom: $chatRoomId, type: $chatRoomType, offset: $offset") { if (oldMessages.isEmpty()) {
client.messages(chatRoomId, roomTypeOf(chatRoomType), offset, 30).result val messages =
} retryIO(description = "messages chatRoom: $chatRoomId, type: $chatRoomType, offset: $offset") {
messagesRepository.saveAll(messages) client.messages(chatRoomId, roomTypeOf(chatRoomType), offset, 30).result
val messagesViewModels = mapper.map(messages) }
view.showMessages(messagesViewModels) messagesRepository.saveAll(messages)
val allMessages = mapper.map(messages)
view.showMessages(allMessages)
} else {
loadMissingMessages()
}
// TODO: For now we are marking the room as read if we can get the messages (I mean, no exception occurs) // TODO: For now we are marking the room as read if we can get the messages (I mean, no exception occurs)
// but should mark only when the user see the first unread message. // but should mark only when the user see the first unread message.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment