From a703b8ae1015e0335a6444dc1f5a9af770dbaee3 Mon Sep 17 00:00:00 2001 From: Maxime NATUREL Date: Wed, 19 Oct 2022 14:16:31 +0200 Subject: [PATCH] Select all/Deselect all actions --- .../devices/v2/othersessions/OtherSessionsAction.kt | 2 ++ .../devices/v2/othersessions/OtherSessionsFragment.kt | 8 ++++++++ .../devices/v2/othersessions/OtherSessionsViewModel.kt | 10 ++++++++++ 3 files changed, 20 insertions(+) diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsAction.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsAction.kt index becac467ec..1978708ebf 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsAction.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsAction.kt @@ -24,4 +24,6 @@ sealed class OtherSessionsAction : VectorViewModelAction { data class EnableSelectMode(val deviceId: String?) : OtherSessionsAction() object DisableSelectMode : OtherSessionsAction() data class ToggleSelectionForDevice(val deviceId: String) : OtherSessionsAction() + object SelectAll : OtherSessionsAction() + object DeselectAll : OtherSessionsAction() } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsFragment.kt index 73e528b358..958266631e 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsFragment.kt @@ -85,6 +85,14 @@ class OtherSessionsFragment : enableSelectMode(true) true } + R.id.otherSessionsSelectAll -> { + viewModel.handle(OtherSessionsAction.SelectAll) + true + } + R.id.otherSessionsDeselectAll -> { + viewModel.handle(OtherSessionsAction.DeselectAll) + true + } else -> false } } diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsViewModel.kt index 4ad2ab96e8..e4c1b98288 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/v2/othersessions/OtherSessionsViewModel.kt @@ -72,6 +72,8 @@ class OtherSessionsViewModel @AssistedInject constructor( OtherSessionsAction.DisableSelectMode -> handleDisableSelectMode() is OtherSessionsAction.EnableSelectMode -> handleEnableSelectMode(action.deviceId) is OtherSessionsAction.ToggleSelectionForDevice -> handleToggleSelectionForDevice(action.deviceId) + OtherSessionsAction.DeselectAll -> handleDeselectAll() + OtherSessionsAction.SelectAll -> handleSelectAll() } } @@ -118,6 +120,14 @@ class OtherSessionsViewModel @AssistedInject constructor( } } + private fun handleSelectAll() = withState { state -> + setSelectionForAllDevices(isSelected = true, enableSelectMode = state.isSelectModeEnabled) + } + + private fun handleDeselectAll() = withState { state -> + setSelectionForAllDevices(isSelected = false, enableSelectMode = state.isSelectModeEnabled) + } + private fun setSelectionForAllDevices(isSelected: Boolean, enableSelectMode: Boolean) = withState { state -> val updatedDevices = if (state.devices is Success) { val updatedDevices = state.devices.invoke().map { it.copy(isSelected = isSelected) }