@@ -181,15 +181,7 @@ class SpacesListFragment :
181181 collectLatestLifecycleFlow(spacesListViewModel.spacesList) { uiState ->
182182 var spacesToListFiltered: List <OCSpace >
183183 if (uiState.searchFilter != " " ) {
184- spacesToListFiltered =
185- uiState.spaces.filter { it.name.lowercase().contains(uiState.searchFilter.lowercase()) && ! it.isPersonal &&
186- shouldShowDisabledSpace(it) }
187- val personalSpace = uiState.spaces.find { it.isPersonal }
188- personalSpace?.let {
189- spacesToListFiltered = spacesToListFiltered.toMutableList().apply {
190- add(0 , personalSpace)
191- }
192- }
184+ spacesToListFiltered = uiState.spaces.filterSpaces(uiState.searchFilter, isMultiPersonal)
193185 showOrHideEmptyView(spacesToListFiltered)
194186 spacesListAdapter.setData(spacesToListFiltered, isMultiPersonal)
195187 } else {
@@ -484,6 +476,17 @@ class SpacesListFragment :
484476 binding.fileOptionsBottomSheetLayout.addView(fileOptionItemView)
485477 }
486478
479+ private fun List<OCSpace>.filterSpaces (query : String , multiPersonal : Boolean ): List <OCSpace > {
480+ val queryLowercase = query.lowercase()
481+ val spacesMatchingName = filter { it.name.lowercase().contains(queryLowercase) }
482+ val matchingSpaces = spacesMatchingName.filter {
483+ (multiPersonal || ! it.isPersonal) && shouldShowDisabledSpace(it)
484+ }
485+ if (multiPersonal) return matchingSpaces
486+ val personalSpace = find { it.isPersonal } ? : return matchingSpaces
487+ return listOf (personalSpace) + matchingSpaces
488+ }
489+
487490 private fun shouldShowDisabledSpace (space : OCSpace ): Boolean = ! space.isDisabled || spacesListViewModel.showDisabledSpaces
488491
489492 private fun isPickerMode (): Boolean = requireArguments().getBoolean(BUNDLE_IS_PICKER_MODE , false )
0 commit comments