Commit 27e5a7a6 authored by Lucio Maciel's avatar Lucio Maciel

Fix sorting on chatrooms and also check for STORE_LAST_MESSAGE or

refresh settings
parent c1506bc8
...@@ -64,6 +64,10 @@ class ChatRoomsPresenter @Inject constructor( ...@@ -64,6 +64,10 @@ class ChatRoomsPresenter @Inject constructor(
view.showLoading() view.showLoading()
subscribeStatusChange() subscribeStatusChange()
try { try {
// If we still don't have 'Store_Last_Message' setting, refresh the settings
if (!settings.hasShowLastMessage()) {
refreshSettingsInteractor.refresh(currentServer)
}
view.updateChatRooms(getUserChatRooms()) view.updateChatRooms(getUserChatRooms())
} catch (ex: RocketChatException) { } catch (ex: RocketChatException) {
ex.message?.let { ex.message?.let {
...@@ -226,9 +230,11 @@ class ChatRoomsPresenter @Inject constructor( ...@@ -226,9 +230,11 @@ class ChatRoomsPresenter @Inject constructor(
} }
ChatRoomsSortOrder.ACTIVITY -> { ChatRoomsSortOrder.ACTIVITY -> {
when (groupByType) { when (groupByType) {
true -> openChatRooms.sortedWith(compareBy(ChatRoom::type).thenByDescending { it.lastMessage?.timestamp }) true -> openChatRooms.sortedWith(compareBy(ChatRoom::type).thenByDescending { chatroom ->
chatRoomTimestamp(chatroom)
})
false -> openChatRooms.sortedByDescending { chatRoom -> false -> openChatRooms.sortedByDescending { chatRoom ->
chatRoom.lastMessage?.timestamp chatRoomTimestamp(chatRoom)
} }
} }
} }
...@@ -238,6 +244,14 @@ class ChatRoomsPresenter @Inject constructor( ...@@ -238,6 +244,14 @@ class ChatRoomsPresenter @Inject constructor(
} }
} }
private fun chatRoomTimestamp(chatRoom: ChatRoom): Long? {
return if (settings.hasShowLastMessage() && settings.showLastMessage()) {
chatRoom.lastMessage?.timestamp ?: chatRoom.updatedAt
} else {
chatRoom.updatedAt
}
}
private fun compareBy(selector: KProperty1<ChatRoom, RoomType>): Comparator<ChatRoom> { private fun compareBy(selector: KProperty1<ChatRoom, RoomType>): Comparator<ChatRoom> {
return Comparator { a, b -> getTypeConstant(a.type) - getTypeConstant(b.type) } return Comparator { a, b -> getTypeConstant(a.type) - getTypeConstant(b.type) }
} }
......
...@@ -85,6 +85,8 @@ fun PublicSettings.showEditedStatus(): Boolean = this[SHOW_EDITED_STATUS]?.value ...@@ -85,6 +85,8 @@ fun PublicSettings.showEditedStatus(): Boolean = this[SHOW_EDITED_STATUS]?.value
fun PublicSettings.allowedMessagePinning(): Boolean = this[ALLOW_MESSAGE_PINNING]?.value == true fun PublicSettings.allowedMessagePinning(): Boolean = this[ALLOW_MESSAGE_PINNING]?.value == true
fun PublicSettings.allowedMessageEditing(): Boolean = this[ALLOW_MESSAGE_EDITING]?.value == true fun PublicSettings.allowedMessageEditing(): Boolean = this[ALLOW_MESSAGE_EDITING]?.value == true
fun PublicSettings.allowedMessageDeleting(): Boolean = this[ALLOW_MESSAGE_DELETING]?.value == true fun PublicSettings.allowedMessageDeleting(): Boolean = this[ALLOW_MESSAGE_DELETING]?.value == true
fun PublicSettings.hasShowLastMessage(): Boolean = this[STORE_LAST_MESSAGE] != null
fun PublicSettings.showLastMessage(): Boolean = this[STORE_LAST_MESSAGE]?.value == true fun PublicSettings.showLastMessage(): Boolean = this[STORE_LAST_MESSAGE]?.value == true
fun PublicSettings.uploadMimeTypeFilter(): Array<String>? { fun PublicSettings.uploadMimeTypeFilter(): Array<String>? {
......
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