diff options
author | Harsh Shandilya <me@msfjarvis.dev> | 2023-11-30 15:51:16 +0530 |
---|---|---|
committer | Harsh Shandilya <me@msfjarvis.dev> | 2023-11-30 15:51:16 +0530 |
commit | f0d09584fb398469b325900e9204eb632979e49f (patch) | |
tree | 61c4766dbcdb89802edf3525f78a033ad235815f /app/src/main/java | |
parent | 7475f2fb13f7f8b8e2bfbe48a58c2cca6b225392 (diff) |
fix(android): add an implementation for Exact filter mode
Will be eventually exposed to the UI
Diffstat (limited to 'app/src/main/java')
-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" |