diff --git a/changelog/unreleased/4922 b/changelog/unreleased/4922 new file mode 100644 index 00000000000..5cd169e7c8e --- /dev/null +++ b/changelog/unreleased/4922 @@ -0,0 +1,6 @@ +Bugfix: Spaces search filter for multi-personal accounts (Kiteworks accounts) + +All matching personal spaces have been included in the spaces search filter for multi-personal accounts. + +https://github.com/owncloud/android/issues/4674 +https://github.com/owncloud/android/pull/4922 diff --git a/owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/SpacesListFragment.kt b/owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/SpacesListFragment.kt index 370ed0f46f6..2ff078d3852 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/SpacesListFragment.kt +++ b/owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/SpacesListFragment.kt @@ -181,15 +181,7 @@ class SpacesListFragment : collectLatestLifecycleFlow(spacesListViewModel.spacesList) { uiState -> var spacesToListFiltered: List if (uiState.searchFilter != "") { - spacesToListFiltered = - uiState.spaces.filter { it.name.lowercase().contains(uiState.searchFilter.lowercase()) && !it.isPersonal && - shouldShowDisabledSpace(it) } - val personalSpace = uiState.spaces.find { it.isPersonal } - personalSpace?.let { - spacesToListFiltered = spacesToListFiltered.toMutableList().apply { - add(0, personalSpace) - } - } + spacesToListFiltered = uiState.spaces.filterSpaces(uiState.searchFilter, isMultiPersonal) showOrHideEmptyView(spacesToListFiltered) spacesListAdapter.setData(spacesToListFiltered, isMultiPersonal) } else { @@ -484,6 +476,17 @@ class SpacesListFragment : binding.fileOptionsBottomSheetLayout.addView(fileOptionItemView) } + private fun List.filterSpaces(query: String, multiPersonal: Boolean): List { + val queryLowercase = query.lowercase() + val spacesMatchingName = filter { it.name.lowercase().contains(queryLowercase) } + val matchingSpaces = spacesMatchingName.filter { + (multiPersonal || !it.isPersonal) && shouldShowDisabledSpace(it) + } + if (multiPersonal) return matchingSpaces + val personalSpace = find { it.isPersonal } ?: return matchingSpaces + return listOf(personalSpace) + matchingSpaces + } + private fun shouldShowDisabledSpace(space: OCSpace): Boolean = !space.isDisabled || spacesListViewModel.showDisabledSpaces private fun isPickerMode(): Boolean = requireArguments().getBoolean(BUNDLE_IS_PICKER_MODE, false)