Commit df21f5a4 authored by Leonardo Aramaki's avatar Leonardo Aramaki

Set sort order for getAllUnsent() from the oldest

parent 15abcd8c
...@@ -7,6 +7,7 @@ import chat.rocket.android.server.domain.MessagesRepository ...@@ -7,6 +7,7 @@ import chat.rocket.android.server.domain.MessagesRepository
import chat.rocket.android.server.infraestructure.ConnectionManagerFactory import chat.rocket.android.server.infraestructure.ConnectionManagerFactory
import chat.rocket.common.RocketChatException import chat.rocket.common.RocketChatException
import chat.rocket.core.internal.rest.sendMessage import chat.rocket.core.internal.rest.sendMessage
import chat.rocket.core.model.Message
import dagger.android.AndroidInjection import dagger.android.AndroidInjection
import kotlinx.coroutines.experimental.CommonPool import kotlinx.coroutines.experimental.CommonPool
import kotlinx.coroutines.experimental.launch import kotlinx.coroutines.experimental.launch
...@@ -50,17 +51,18 @@ class MessageService : JobService() { ...@@ -50,17 +51,18 @@ class MessageService : JobService() {
private suspend fun retrySendingMessages(currentServer: String) { private suspend fun retrySendingMessages(currentServer: String) {
val temporaryMessages = messageRepository.getAllUnsent() val temporaryMessages = messageRepository.getAllUnsent()
.sortedWith(compareBy(Message::timestamp))
if (temporaryMessages.isNotEmpty()) { if (temporaryMessages.isNotEmpty()) {
val connectionManager = factory.create(currentServer) val connectionManager = factory.create(currentServer)
val client = connectionManager.client val client = connectionManager.client
temporaryMessages.forEach { message -> temporaryMessages.forEach { message ->
client.sendMessage( client.sendMessage(
message = message.message, message = message.message,
messageId = message.id, messageId = message.id,
roomId = message.roomId, roomId = message.roomId,
avatar = message.avatar, avatar = message.avatar,
attachments = message.attachments, attachments = message.attachments,
alias = message.senderAlias alias = message.senderAlias
) )
messageRepository.save(message.copy(isTemporary = false)) messageRepository.save(message.copy(isTemporary = false))
} }
......
...@@ -8,8 +8,8 @@ import kotlinx.coroutines.experimental.CommonPool ...@@ -8,8 +8,8 @@ import kotlinx.coroutines.experimental.CommonPool
import kotlinx.coroutines.experimental.withContext import kotlinx.coroutines.experimental.withContext
class SharedPreferencesMessagesRepository( class SharedPreferencesMessagesRepository(
private val prefs: SharedPreferences, private val prefs: SharedPreferences,
private val moshi: Moshi) private val moshi: Moshi)
: MessagesRepository { : MessagesRepository {
override suspend fun getById(id: String): Message? = withContext(CommonPool) { override suspend fun getById(id: String): Message? = withContext(CommonPool) {
...@@ -34,7 +34,7 @@ class SharedPreferencesMessagesRepository( ...@@ -34,7 +34,7 @@ class SharedPreferencesMessagesRepository(
override suspend fun getRecentMessages(rid: String, count: Long): List<Message> { override suspend fun getRecentMessages(rid: String, count: Long): List<Message> {
return getByRoomId(rid).sortedByDescending { it.timestamp } return getByRoomId(rid).sortedByDescending { it.timestamp }
.distinctBy { it.sender }.take(count.toInt()) .distinctBy { it.sender }.take(count.toInt())
} }
override suspend fun getAll(): List<Message> = withContext(CommonPool) { override suspend fun getAll(): List<Message> = withContext(CommonPool) {
...@@ -53,7 +53,7 @@ class SharedPreferencesMessagesRepository( ...@@ -53,7 +53,7 @@ class SharedPreferencesMessagesRepository(
val all = prefs.all.values as Collection<String> val all = prefs.all.values as Collection<String>
val adapter = moshi.adapter<Message>(Message::class.java) val adapter = moshi.adapter<Message>(Message::class.java)
return@withContext all.mapNotNull { adapter.fromJson(it) } return@withContext all.mapNotNull { adapter.fromJson(it) }
.filter { it.isTemporary ?: false } .filter { it.isTemporary ?: false }
} }
override suspend fun getUnsentByRoomId(roomId: String): List<Message> = withContext(CommonPool) { override suspend fun getUnsentByRoomId(roomId: String): List<Message> = withContext(CommonPool) {
......
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