1
0
mirror of https://github.com/vector-im/riotX-android synced 2025-10-06 00:02:48 +02:00

Merge remote-tracking branch 'origin/feature/nfe/edit_layout_config' into community-testing-space-switching-16_08

This commit is contained in:
ericdecanini
2022-08-16 14:38:42 +02:00
6 changed files with 40 additions and 62 deletions

View File

@@ -25,29 +25,17 @@ class HomeLayoutPreferences @Inject constructor(
@DefaultPreferences private val preferences: SharedPreferences @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 // 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 filtersListener: SharedPreferences.OnSharedPreferenceChangeListener? = null
private var recentsListener: SharedPreferences.OnSharedPreferenceChangeListener? = null private var recentsListener: SharedPreferences.OnSharedPreferenceChangeListener? = null
private var orderListener: SharedPreferences.OnSharedPreferenceChangeListener? = null private var orderListener: SharedPreferences.OnSharedPreferenceChangeListener? = null
fun areRecentsEnabled(): Boolean { fun areRecentsEnabled() = preferences.getBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, false)
return 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) { fun setRecentsEnabled(isEnabled: Boolean) {
preferences.edit { preferences.edit { putBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, isEnabled) }
putBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, isEnabled)
}
}
fun areFiltersEnabled(): Boolean {
return preferences.getBoolean(SETTINGS_PREFERENCES_HOME_FILTERS, false)
} }
fun setFiltersEnabled(isEnabled: Boolean) { 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) { fun setAZOrderingEnabled(isEnabled: Boolean) {
preferences.edit { preferences.edit {
putBoolean(SETTINGS_PREFERENCES_USE_AZ_ORDER, isEnabled) putBoolean(SETTINGS_PREFERENCES_USE_AZ_ORDER, isEnabled)
@@ -104,4 +88,10 @@ class HomeLayoutPreferences @Inject constructor(
preferences.unregisterOnSharedPreferenceChangeListener(recentsListener) preferences.unregisterOnSharedPreferenceChangeListener(recentsListener)
preferences.unregisterOnSharedPreferenceChangeListener(orderListener) 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"
}
} }

View File

@@ -170,7 +170,7 @@ class HomeRoomListViewModel @AssistedInject constructor(
.onEach { selectedSpaceOption -> .onEach { selectedSpaceOption ->
val selectedSpace = selectedSpaceOption.orNull() val selectedSpace = selectedSpaceOption.orNull()
liveResults.queryParams = liveResults.queryParams.copy( liveResults.queryParams = liveResults.queryParams.copy(
spaceFilter = selectedSpace?.roomId.toActiveSpaceOrNoFilter() spaceFilter = selectedSpace?.roomId.toActiveSpaceOrNoFilter()
) )
}.launchIn(viewModelScope) }.launchIn(viewModelScope)
@@ -202,32 +202,29 @@ class HomeRoomListViewModel @AssistedInject constructor(
.map { it.isNotEmpty() } .map { it.isNotEmpty() }
.distinctUntilChanged() .distinctUntilChanged()
favouritesFlow combine(favouritesFlow, dmsFLow, filtersPreferencesFlow) { hasFavourite, hasDm, areFiltersEnabled ->
.combine(dmsFLow) { hasFavourite, hasDm -> Triple(hasFavourite, hasDm, areFiltersEnabled)
hasFavourite to hasDm }.onEach { (hasFavourite, hasDm, areFiltersEnabled) ->
}.combine(filtersPreferencesFlow) { (hasFavourite, hasDm), areFiltersEnabled -> if (areFiltersEnabled) {
Triple(hasFavourite, hasDm, areFiltersEnabled) val filtersData = mutableListOf(
}.onEach { (hasFavourite, hasDm, areFiltersEnabled) -> HomeRoomFilter.ALL,
if (areFiltersEnabled) { HomeRoomFilter.UNREADS
val filtersData = mutableListOf( )
HomeRoomFilter.ALL, if (hasFavourite) {
HomeRoomFilter.UNREADS filtersData.add(
) HomeRoomFilter.FAVOURITES
if (hasFavourite) { )
filtersData.add( }
HomeRoomFilter.FAVOURITES if (hasDm) {
) filtersData.add(
} HomeRoomFilter.PEOPlE
if (hasDm) { )
filtersData.add( }
HomeRoomFilter.PEOPlE flow.emit(Optional.from(filtersData))
) } else {
} flow.emit(Optional.empty())
flow.emit(Optional.from(filtersData)) }
} else { }.launchIn(viewModelScope)
flow.emit(Optional.empty())
}
}.launchIn(viewModelScope)
return flow return flow
} }

View File

@@ -26,7 +26,7 @@ import org.matrix.android.sdk.api.util.Optional
sealed class HomeRoomSection { sealed class HomeRoomSection {
data class RoomSummaryData( data class RoomSummaryData(
val list: LiveData<PagedList<RoomSummary>>, val list: LiveData<PagedList<RoomSummary>>,
val filtersData: SharedFlow<Optional<List<HomeRoomFilter>>> val filtersData: SharedFlow<Optional<List<HomeRoomFilter>>>,
) : HomeRoomSection() ) : HomeRoomSection()
data class RecentRoomsData( data class RecentRoomsData(

View File

@@ -27,7 +27,7 @@ import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
import org.matrix.android.sdk.api.session.room.model.RoomSummary import org.matrix.android.sdk.api.session.room.model.RoomSummary
class HomeFilteredRoomsController( class HomeFilteredRoomsController(
private val roomSummaryItemFactory: RoomSummaryItemFactory private val roomSummaryItemFactory: RoomSummaryItemFactory,
) : PagedListEpoxyController<RoomSummary>( ) : PagedListEpoxyController<RoomSummary>(
// Important it must match the PageList builder notify Looper // Important it must match the PageList builder notify Looper
modelBuildingHandler = createUIHandler() modelBuildingHandler = createUIHandler()

View File

@@ -48,19 +48,10 @@ class HomeLayoutSettingBottomDialogFragment : VectorBaseBottomSheetDialogFragmen
views.homeLayoutSettingsSortActivity.isChecked = true 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 { 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() dismiss()
} }
} }

View File

@@ -41,6 +41,6 @@
android:icon="@drawable/ic_home_search" android:icon="@drawable/ic_home_search"
android:title="@string/home_filter_placeholder_home" android:title="@string/home_filter_placeholder_home"
app:iconTint="?vctr_content_secondary" app:iconTint="?vctr_content_secondary"
app:showAsAction="always" /> app:showAsAction="ifRoom" />
</menu> </menu>