diff options
Diffstat (limited to 'app/src')
-rw-r--r-- | app/src/main/java/app/passwordstore/util/viewmodel/SearchableRepositoryViewModel.kt | 17 |
1 files 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 328641e6..cd7dbc78 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" |