From f0d09584fb398469b325900e9204eb632979e49f Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Thu, 30 Nov 2023 15:51:16 +0530 Subject: [PATCH] fix(android): add an implementation for Exact filter mode Will be eventually exposed to the UI --- .../viewmodel/SearchableRepositoryViewModel.kt | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/app/passwordstore/util/viewmodel/SearchableRepositoryViewModel.kt b/app/src/main/java/app/passwordstore/util/viewmodel/SearchableRepositoryViewModel.kt index 328641e6a..cd7dbc78a 100644 --- a/app/src/main/java/app/passwordstore/util/viewmodel/SearchableRepositoryViewModel.kt +++ b/app/src/main/java/app/passwordstore/util/viewmodel/SearchableRepositoryViewModel.kt @@ -94,18 +94,19 @@ val PasswordItem.stableId: String enum class FilterMode { NoFilter, StrictDomain, - Fuzzy + Fuzzy, + Exact, } enum class SearchMode { RecursivelyInSubdirectories, - InCurrentDirectoryOnly + InCurrentDirectoryOnly, } enum class ListMode { FilesOnly, DirectoriesOnly, - AllEntries + AllEntries, } @OptIn(ExperimentalCoroutinesApi::class) @@ -219,6 +220,16 @@ constructor( .toList() .sortedWith(itemComparator) } + FilterMode.Exact -> { + prefilteredResultFlow + .filter { absoluteFile -> + absoluteFile.relativeTo(root).path.contains(searchAction.filter) + } + .map { it.toPasswordItem() } + .flowOn(dispatcherProvider.io()) + .toList() + .sortedWith(itemComparator) + } FilterMode.StrictDomain -> { check(searchAction.listMode == ListMode.FilesOnly) { "Searches with StrictDomain search mode can only list files"