1
0
mirror of https://github.com/vector-im/riotX-android synced 2025-10-05 15:52:47 +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
) {
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"
}
}

View File

@@ -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
}

View File

@@ -26,7 +26,7 @@ import org.matrix.android.sdk.api.util.Optional
sealed class HomeRoomSection {
data class RoomSummaryData(
val list: LiveData<PagedList<RoomSummary>>,
val filtersData: SharedFlow<Optional<List<HomeRoomFilter>>>
val filtersData: SharedFlow<Optional<List<HomeRoomFilter>>>,
) : HomeRoomSection()
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
class HomeFilteredRoomsController(
private val roomSummaryItemFactory: RoomSummaryItemFactory
private val roomSummaryItemFactory: RoomSummaryItemFactory,
) : PagedListEpoxyController<RoomSummary>(
// Important it must match the PageList builder notify Looper
modelBuildingHandler = createUIHandler()

View File

@@ -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()
}
}

View File

@@ -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" />
</menu>