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