From 14144dc99d222a3e190fd1d7caf2b0ad0e8c6bd9 Mon Sep 17 00:00:00 2001 From: Valere Date: Tue, 11 May 2021 10:45:07 +0200 Subject: [PATCH] Default all in home + lab flag --- .../home/room/list/RoomListViewModel.kt | 7 ++-- .../room/list/SpaceRoomListSectionBuilder.kt | 42 +++++++++++-------- .../features/settings/VectorPreferences.kt | 5 +++ .../settings/VectorSettingsLabsFragment.kt | 10 ++++- vector/src/main/res/values/strings.xml | 3 ++ .../src/main/res/xml/vector_settings_labs.xml | 5 +++ 6 files changed, 51 insertions(+), 21 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt index bc24705e13..246d5052cf 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt @@ -69,12 +69,12 @@ class RoomListViewModel @Inject constructor( * Filter the rooms if they are part of the current space (children and grand children). * If current space is null, will return orphan rooms only */ - NORMAL, + ORPHANS_IF_SPACE_NULL, /** * Special case when we don't want to discriminate rooms when current space is null. * In this case return all. */ - NOT_IF_ALL, + ALL_IF_SPACE_NULL, /** Do not filter based on space*/ NONE } @@ -131,7 +131,8 @@ class RoomListViewModel @Inject constructor( }, { updatableQuery = it - } + }, + vectorPreferences.labsSpacesOnlyOrphansInHome() ).buildSections(initialState.displayMode) } else { GroupRoomListSectionBuilder( diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/SpaceRoomListSectionBuilder.kt b/vector/src/main/java/im/vector/app/features/home/room/list/SpaceRoomListSectionBuilder.kt index 351c72ab48..852efb9193 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/SpaceRoomListSectionBuilder.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/SpaceRoomListSectionBuilder.kt @@ -50,7 +50,8 @@ class SpaceRoomListSectionBuilder( val viewModelScope: CoroutineScope, private val suggestedRoomJoiningState: LiveData>>, val onDisposable: (Disposable) -> Unit, - val onUdpatable: (UpdatableLivePageResult) -> Unit + val onUdpatable: (UpdatableLivePageResult) -> Unit, + val onlyOrphansInHome: Boolean = false ) : RoomListSectionBuilder { val pagedListConfig = PagedList.Config.Builder() @@ -91,7 +92,8 @@ class SpaceRoomListSectionBuilder( activeSpaceAwareQueries, R.string.invitations_header, true, - RoomListViewModel.SpaceFilterStrategy.NORMAL + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL.takeIf { onlyOrphansInHome } + ?: RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.INVITE) it.roomCategoryFilter = RoomCategoryFilter.ALL @@ -102,7 +104,8 @@ class SpaceRoomListSectionBuilder( activeSpaceAwareQueries, R.string.bottom_action_rooms, false, - RoomListViewModel.SpaceFilterStrategy.NORMAL + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL.takeIf { onlyOrphansInHome } + ?: RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_WITH_NOTIFICATIONS @@ -129,7 +132,7 @@ class SpaceRoomListSectionBuilder( sections, activeSpaceAwareQueries, R.string.invitations_header, true, - RoomListViewModel.SpaceFilterStrategy.NOT_IF_ALL + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.INVITE) it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS @@ -140,7 +143,7 @@ class SpaceRoomListSectionBuilder( activeSpaceAwareQueries, R.string.bottom_action_favourites, false, - RoomListViewModel.SpaceFilterStrategy.NOT_IF_ALL + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS @@ -152,7 +155,8 @@ class SpaceRoomListSectionBuilder( activeSpaceAwareQueries, R.string.bottom_action_rooms, false, - RoomListViewModel.SpaceFilterStrategy.NORMAL + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL.takeIf { onlyOrphansInHome } + ?: RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS @@ -164,7 +168,8 @@ class SpaceRoomListSectionBuilder( activeSpaceAwareQueries, R.string.low_priority_header, false, - RoomListViewModel.SpaceFilterStrategy.NORMAL + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL.takeIf { onlyOrphansInHome } + ?: RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS @@ -176,7 +181,8 @@ class SpaceRoomListSectionBuilder( activeSpaceAwareQueries, R.string.system_alerts_header, false, - RoomListViewModel.SpaceFilterStrategy.NORMAL + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL.takeIf { onlyOrphansInHome } + ?: RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_ROOMS @@ -232,7 +238,7 @@ class SpaceRoomListSectionBuilder( activeSpaceAwareQueries, R.string.invitations_header, true, - RoomListViewModel.SpaceFilterStrategy.NOT_IF_ALL + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.INVITE) it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM @@ -242,7 +248,7 @@ class SpaceRoomListSectionBuilder( activeSpaceAwareQueries, R.string.bottom_action_favourites, false, - RoomListViewModel.SpaceFilterStrategy.NOT_IF_ALL + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM @@ -253,7 +259,7 @@ class SpaceRoomListSectionBuilder( activeSpaceAwareQueries, R.string.bottom_action_people_x, false, - RoomListViewModel.SpaceFilterStrategy.NOT_IF_ALL + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL ) { it.memberships = listOf(Membership.JOIN) it.roomCategoryFilter = RoomCategoryFilter.ONLY_DM @@ -277,7 +283,7 @@ class SpaceRoomListSectionBuilder( pagedListConfig ).also { when (spaceFilterStrategy) { - RoomListViewModel.SpaceFilterStrategy.NORMAL -> { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL -> { activeSpaceUpdaters.add(object : RoomListViewModel.ActiveSpaceQueryUpdater { override fun updateForSpaceId(roomId: String?) { it.updateQuery { @@ -288,7 +294,7 @@ class SpaceRoomListSectionBuilder( } }) } - RoomListViewModel.SpaceFilterStrategy.NOT_IF_ALL -> { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL -> { activeSpaceUpdaters.add(object : RoomListViewModel.ActiveSpaceQueryUpdater { override fun updateForSpaceId(roomId: String?) { if (roomId != null) { @@ -349,21 +355,23 @@ class SpaceRoomListSectionBuilder( internal fun RoomSummaryQueryParams.process(spaceFilter: RoomListViewModel.SpaceFilterStrategy, currentSpace: String?): RoomSummaryQueryParams { return when (spaceFilter) { - RoomListViewModel.SpaceFilterStrategy.NORMAL -> { + RoomListViewModel.SpaceFilterStrategy.ORPHANS_IF_SPACE_NULL -> { copy( activeSpaceFilter = ActiveSpaceFilter.ActiveSpace(currentSpace) ) } - RoomListViewModel.SpaceFilterStrategy.NOT_IF_ALL -> { + RoomListViewModel.SpaceFilterStrategy.ALL_IF_SPACE_NULL -> { if (currentSpace == null) { - this + copy( + activeSpaceFilter = ActiveSpaceFilter.None + ) } else { copy( activeSpaceFilter = ActiveSpaceFilter.ActiveSpace(currentSpace) ) } } - RoomListViewModel.SpaceFilterStrategy.NONE -> this + RoomListViewModel.SpaceFilterStrategy.NONE -> this } } } diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt index b44d44aba0..9fc496a914 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt @@ -151,6 +151,7 @@ class VectorPreferences @Inject constructor(private val context: Context) { const val SETTINGS_LABS_ALLOW_EXTENDED_LOGS = "SETTINGS_LABS_ALLOW_EXTENDED_LOGS" const val SETTINGS_LABS_USE_RESTRICTED_JOIN_RULE = "SETTINGS_LABS_USE_RESTRICTED_JOIN_RULE" + const val SETTINGS_LABS_SPACES_HOME_AS_ORPHAN = "SETTINGS_LABS_SPACES_HOME_AS_ORPHAN" private const val SETTINGS_DEVELOPER_MODE_PREFERENCE_KEY = "SETTINGS_DEVELOPER_MODE_PREFERENCE_KEY" private const val SETTINGS_LABS_SHOW_HIDDEN_EVENTS_PREFERENCE_KEY = "SETTINGS_LABS_SHOW_HIDDEN_EVENTS_PREFERENCE_KEY" @@ -956,6 +957,10 @@ class VectorPreferences @Inject constructor(private val context: Context) { return defaultPrefs.getBoolean(SETTINGS_LABS_USE_RESTRICTED_JOIN_RULE, false) } + fun labsSpacesOnlyOrphansInHome(): Boolean { + return defaultPrefs.getBoolean(SETTINGS_LABS_SPACES_HOME_AS_ORPHAN, false) + } + /* * Photo / video picker */ diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsLabsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsLabsFragment.kt index 6a4ea83d68..ae6b24e4e4 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsLabsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsLabsFragment.kt @@ -17,6 +17,9 @@ package im.vector.app.features.settings import im.vector.app.R +import im.vector.app.core.preference.VectorSwitchPreference +import im.vector.app.features.MainActivity +import im.vector.app.features.MainActivityArgs import javax.inject.Inject class VectorSettingsLabsFragment @Inject constructor( @@ -27,6 +30,11 @@ class VectorSettingsLabsFragment @Inject constructor( override val preferenceXmlRes = R.xml.vector_settings_labs override fun bindPref() { - // Nothing to do + findPreference(VectorPreferences.SETTINGS_LABS_SPACES_HOME_AS_ORPHAN)!!.let { pref -> + pref.setOnPreferenceChangeListener { _, _ -> + MainActivity.restartApp(requireActivity(), MainActivityArgs(clearCache = false)) + true + } + } } } diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index cea541410b..9d2763e243 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -3362,4 +3362,7 @@ Mark as suggested Mark as not suggested Manage rooms and spaces + + + Experimental Space - Only show orphans in Home diff --git a/vector/src/main/res/xml/vector_settings_labs.xml b/vector/src/main/res/xml/vector_settings_labs.xml index 607f01db35..1e0f736db2 100644 --- a/vector/src/main/res/xml/vector_settings_labs.xml +++ b/vector/src/main/res/xml/vector_settings_labs.xml @@ -52,4 +52,9 @@ android:summary="@string/labs_use_restricted_join_rule_desc"/> + + \ No newline at end of file