diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFilter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFilter.kt index 35e118af41..4ebe9f10df 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFilter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFilter.kt @@ -26,15 +26,13 @@ enum class RoomListFilter(val stringResource: Int){ Rooms(R.string.screen_roomlist_filter_rooms), People(R.string.screen_roomlist_filter_people), Unread(R.string.screen_roomlist_filter_unreads), - Favourites(R.string.screen_roomlist_filter_favourites), - LowPriority(R.string.screen_roomlist_filter_low_priority); + Favourites(R.string.screen_roomlist_filter_favourites); val oppositeFilter: RoomListFilter? get() = when (this) { Rooms -> People People -> Rooms Unread -> null - Favourites -> LowPriority - LowPriority -> Favourites + Favourites -> null } } diff --git a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFiltersPresenter.kt b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFiltersPresenter.kt index 278af4f7da..1a4cf365b4 100644 --- a/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFiltersPresenter.kt +++ b/features/roomlist/impl/src/main/kotlin/io/element/android/features/roomlist/impl/filters/RoomListFiltersPresenter.kt @@ -17,15 +17,20 @@ package io.element.android.features.roomlist.impl.filters import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import io.element.android.libraries.architecture.Presenter +import io.element.android.libraries.matrix.api.roomlist.RoomListService import kotlinx.collections.immutable.toPersistentList import javax.inject.Inject +import io.element.android.libraries.matrix.api.roomlist.RoomListFilter as MatrixRoomListFilter -class RoomListFiltersPresenter @Inject constructor() : Presenter { +class RoomListFiltersPresenter @Inject constructor( + private val roomListService: RoomListService, +) : Presenter { @Composable override fun present(): RoomListFiltersState { @@ -59,6 +64,20 @@ class RoomListFiltersPresenter @Inject constructor() : Presenter + when (roomListFilter) { + RoomListFilter.Rooms -> MatrixRoomListFilter.Category.Group + RoomListFilter.People -> MatrixRoomListFilter.Category.People + RoomListFilter.Unread -> MatrixRoomListFilter.Unread + RoomListFilter.Favourites -> MatrixRoomListFilter.Favorite + } + }.plus(MatrixRoomListFilter.NonLeft) + ) + roomListService.allRooms.updateFilter(allRoomsFilter) + } + return RoomListFiltersState( unselectedFilters = unselectedFilters.toPersistentList(), selectedFilters = selectedFilters.toPersistentList(), diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListFilter.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListFilter.kt index 41f5240a19..4ea79f31bb 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListFilter.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/roomlist/RoomListFilter.kt @@ -57,6 +57,11 @@ sealed interface RoomListFilter { */ data object Unread : RoomListFilter + /** + * A filter that matches rooms that are marked as favorite. + */ + data object Favorite : RoomListFilter + /** * A filter that matches either Group or People rooms. */ diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFilter.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFilter.kt index c28da59ea4..d72ff9fbeb 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFilter.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListFilter.kt @@ -31,5 +31,6 @@ fun RoomListFilter.toRustFilter(): RoomListEntriesDynamicFilterKind { RoomListFilter.None -> RoomListEntriesDynamicFilterKind.None is RoomListFilter.NormalizedMatchRoomName -> RoomListEntriesDynamicFilterKind.NormalizedMatchRoomName(pattern) RoomListFilter.Unread -> RoomListEntriesDynamicFilterKind.Unread + RoomListFilter.Favorite -> RoomListEntriesDynamicFilterKind.Favourite } }