Skip to content

Commit 18f915c

Browse files
committed
Improve shortcut sorting
1 parent c9ec8d4 commit 18f915c

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomSortOrder.kt

+1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@ package org.matrix.android.sdk.api.session.room
1919
enum class RoomSortOrder {
2020
NAME,
2121
ACTIVITY,
22+
PRIORITY_AND_ACTIVITY,
2223
NONE
2324
}

matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/query/QueryRoomOrderProcessor.kt

+11-3
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,21 @@ import org.matrix.android.sdk.internal.database.model.RoomSummaryEntityFields
2424

2525
internal fun RealmQuery<RoomSummaryEntity>.process(sortOrder: RoomSortOrder): RealmQuery<RoomSummaryEntity> {
2626
when (sortOrder) {
27-
RoomSortOrder.NAME -> {
27+
RoomSortOrder.NAME -> {
2828
sort(RoomSummaryEntityFields.DISPLAY_NAME, Sort.ASCENDING)
2929
}
30-
RoomSortOrder.ACTIVITY -> {
30+
RoomSortOrder.ACTIVITY -> {
3131
sort(RoomSummaryEntityFields.LAST_ACTIVITY_TIME, Sort.DESCENDING)
3232
}
33-
RoomSortOrder.NONE -> {
33+
RoomSortOrder.PRIORITY_AND_ACTIVITY -> {
34+
sort(
35+
arrayOf(
36+
RoomSummaryEntityFields.IS_FAVOURITE,
37+
RoomSummaryEntityFields.IS_LOW_PRIORITY,
38+
RoomSummaryEntityFields.LAST_ACTIVITY_TIME),
39+
arrayOf(Sort.DESCENDING, Sort.ASCENDING, Sort.DESCENDING))
40+
}
41+
RoomSortOrder.NONE -> {
3442
}
3543
}
3644
return this

vector/src/main/java/im/vector/app/features/home/ShortcutsHandler.kt

+4-8
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import androidx.core.content.pm.ShortcutManagerCompat
2424
import im.vector.app.core.di.ActiveSessionHolder
2525
import io.reactivex.disposables.Disposable
2626
import io.reactivex.disposables.Disposables
27+
import org.matrix.android.sdk.api.session.room.RoomSortOrder
2728
import org.matrix.android.sdk.api.session.room.model.Membership
2829
import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
2930
import org.matrix.android.sdk.rx.asObservable
@@ -45,7 +46,8 @@ class ShortcutsHandler @Inject constructor(
4546
?.getPagedRoomSummariesLive(
4647
roomSummaryQueryParams {
4748
memberships = listOf(Membership.JOIN)
48-
}
49+
},
50+
sortOrder = RoomSortOrder.PRIORITY_AND_ACTIVITY
4951
)
5052
?.asObservable()
5153
?.subscribe { rooms ->
@@ -57,13 +59,7 @@ class ShortcutsHandler @Inject constructor(
5759
ShortcutManagerCompat.removeLongLivedShortcuts(context, deadShortcutIds)
5860

5961
val shortcuts = rooms
60-
.sortedBy { room ->
61-
// pushDynamicShortcut adds each shortcut to the top of the shortcut ranking,
62-
// so higher priority rooms should be at the end of this list to get pushed on last.
63-
if (room.isFavorite) 2
64-
else if (room.isLowPriority) 0
65-
else 1
66-
}
62+
.asReversed()
6763
.map { shortcutCreator.create(it) }
6864

6965
shortcuts.forEach { shortcut ->

0 commit comments

Comments
 (0)