diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeLayoutPreferences.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeLayoutPreferences.kt index 0d1e4a559e..a987f01560 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeLayoutPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeLayoutPreferences.kt @@ -25,29 +25,17 @@ class HomeLayoutPreferences @Inject constructor( @DefaultPreferences private val preferences: SharedPreferences ) { - companion object { - const val SETTINGS_PREFERENCES_HOME_RECENTS = "SETTINGS_PREFERENCES_HOME_RECENTS" - const val SETTINGS_PREFERENCES_HOME_FILTERS = "SETTINGS_PREFERENCES_HOME_FILTERS" - const val SETTINGS_PREFERENCES_USE_AZ_ORDER = "SETTINGS_PREFERENCES_USE_AZ_ORDER" - } - // We need to keep references, because it's kept as a Weak reference and so will be gathered by GC private var filtersListener: SharedPreferences.OnSharedPreferenceChangeListener? = null private var recentsListener: SharedPreferences.OnSharedPreferenceChangeListener? = null private var orderListener: SharedPreferences.OnSharedPreferenceChangeListener? = null - fun areRecentsEnabled(): Boolean { - return preferences.getBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, false) - } + fun areRecentsEnabled() = preferences.getBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, false) + fun areFiltersEnabled() = preferences.getBoolean(SETTINGS_PREFERENCES_HOME_FILTERS, false) + fun isAZOrderingEnabled() = preferences.getBoolean(SETTINGS_PREFERENCES_USE_AZ_ORDER, false) fun setRecentsEnabled(isEnabled: Boolean) { - preferences.edit { - putBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, isEnabled) - } - } - - fun areFiltersEnabled(): Boolean { - return preferences.getBoolean(SETTINGS_PREFERENCES_HOME_FILTERS, false) + preferences.edit { putBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, isEnabled) } } fun setFiltersEnabled(isEnabled: Boolean) { @@ -56,10 +44,6 @@ class HomeLayoutPreferences @Inject constructor( } } - fun isAZOrderingEnabled(): Boolean { - return preferences.getBoolean(SETTINGS_PREFERENCES_USE_AZ_ORDER, false) - } - fun setAZOrderingEnabled(isEnabled: Boolean) { preferences.edit { putBoolean(SETTINGS_PREFERENCES_USE_AZ_ORDER, isEnabled) @@ -104,4 +88,10 @@ class HomeLayoutPreferences @Inject constructor( preferences.unregisterOnSharedPreferenceChangeListener(recentsListener) preferences.unregisterOnSharedPreferenceChangeListener(orderListener) } + + companion object { + const val SETTINGS_PREFERENCES_HOME_RECENTS = "SETTINGS_PREFERENCES_HOME_RECENTS" + const val SETTINGS_PREFERENCES_HOME_FILTERS = "SETTINGS_PREFERENCES_HOME_FILTERS" + const val SETTINGS_PREFERENCES_USE_AZ_ORDER = "SETTINGS_PREFERENCES_USE_AZ_ORDER" + } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt index dce056b19f..41893d665c 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomListViewModel.kt @@ -170,7 +170,7 @@ class HomeRoomListViewModel @AssistedInject constructor( .onEach { selectedSpaceOption -> val selectedSpace = selectedSpaceOption.orNull() liveResults.queryParams = liveResults.queryParams.copy( - spaceFilter = selectedSpace?.roomId.toActiveSpaceOrNoFilter() + spaceFilter = selectedSpace?.roomId.toActiveSpaceOrNoFilter() ) }.launchIn(viewModelScope) @@ -202,32 +202,29 @@ class HomeRoomListViewModel @AssistedInject constructor( .map { it.isNotEmpty() } .distinctUntilChanged() - favouritesFlow - .combine(dmsFLow) { hasFavourite, hasDm -> - hasFavourite to hasDm - }.combine(filtersPreferencesFlow) { (hasFavourite, hasDm), areFiltersEnabled -> - Triple(hasFavourite, hasDm, areFiltersEnabled) - }.onEach { (hasFavourite, hasDm, areFiltersEnabled) -> - if (areFiltersEnabled) { - val filtersData = mutableListOf( - HomeRoomFilter.ALL, - HomeRoomFilter.UNREADS - ) - if (hasFavourite) { - filtersData.add( - HomeRoomFilter.FAVOURITES - ) - } - if (hasDm) { - filtersData.add( - HomeRoomFilter.PEOPlE - ) - } - flow.emit(Optional.from(filtersData)) - } else { - flow.emit(Optional.empty()) - } - }.launchIn(viewModelScope) + combine(favouritesFlow, dmsFLow, filtersPreferencesFlow) { hasFavourite, hasDm, areFiltersEnabled -> + Triple(hasFavourite, hasDm, areFiltersEnabled) + }.onEach { (hasFavourite, hasDm, areFiltersEnabled) -> + if (areFiltersEnabled) { + val filtersData = mutableListOf( + HomeRoomFilter.ALL, + HomeRoomFilter.UNREADS + ) + if (hasFavourite) { + filtersData.add( + HomeRoomFilter.FAVOURITES + ) + } + if (hasDm) { + filtersData.add( + HomeRoomFilter.PEOPlE + ) + } + flow.emit(Optional.from(filtersData)) + } else { + flow.emit(Optional.empty()) + } + }.launchIn(viewModelScope) return flow } diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomSection.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomSection.kt index 10c4a7a8d4..74ec46d6b7 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomSection.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/HomeRoomSection.kt @@ -26,7 +26,7 @@ import org.matrix.android.sdk.api.util.Optional sealed class HomeRoomSection { data class RoomSummaryData( val list: LiveData>, - val filtersData: SharedFlow>> + val filtersData: SharedFlow>>, ) : HomeRoomSection() data class RecentRoomsData( diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/filter/HomeFilteredRoomsController.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/filter/HomeFilteredRoomsController.kt index 96b976fe33..2d673bc089 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/filter/HomeFilteredRoomsController.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/filter/HomeFilteredRoomsController.kt @@ -27,7 +27,7 @@ import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState import org.matrix.android.sdk.api.session.room.model.RoomSummary class HomeFilteredRoomsController( - private val roomSummaryItemFactory: RoomSummaryItemFactory + private val roomSummaryItemFactory: RoomSummaryItemFactory, ) : PagedListEpoxyController( // Important it must match the PageList builder notify Looper modelBuildingHandler = createUIHandler() diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/home/layout/HomeLayoutSettingBottomDialogFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/home/layout/HomeLayoutSettingBottomDialogFragment.kt index 0d14f02f5d..24b18fe588 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/home/layout/HomeLayoutSettingBottomDialogFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/home/layout/HomeLayoutSettingBottomDialogFragment.kt @@ -48,19 +48,10 @@ class HomeLayoutSettingBottomDialogFragment : VectorBaseBottomSheetDialogFragmen views.homeLayoutSettingsSortActivity.isChecked = true } - views.homeLayoutSettingsRecents.setOnCheckedChangeListener { _, isChecked -> - preferences.setRecentsEnabled(isChecked) - } - - views.homeLayoutSettingsFilters.setOnCheckedChangeListener { _, isChecked -> - preferences.setFiltersEnabled(isChecked) - } - - views.homeLayoutSettingsSortGroup.setOnCheckedChangeListener { _, checkedId -> - preferences.setAZOrderingEnabled(checkedId == R.id.home_layout_settings_sort_name) - } - views.homeLayoutSettingsDone.setOnClickListener { + preferences.setRecentsEnabled(views.homeLayoutSettingsRecents.isChecked) + preferences.setFiltersEnabled(views.homeLayoutSettingsFilters.isChecked) + preferences.setAZOrderingEnabled(views.homeLayoutSettingsSortGroup.checkedRadioButtonId == R.id.home_layout_settings_sort_name) dismiss() } } diff --git a/vector/src/main/res/menu/menu_new_home.xml b/vector/src/main/res/menu/menu_new_home.xml index c347003c72..6cd52e5608 100644 --- a/vector/src/main/res/menu/menu_new_home.xml +++ b/vector/src/main/res/menu/menu_new_home.xml @@ -41,6 +41,6 @@ android:icon="@drawable/ic_home_search" android:title="@string/home_filter_placeholder_home" app:iconTint="?vctr_content_secondary" - app:showAsAction="always" /> + app:showAsAction="ifRoom" />