From 28f33763cc0ecaa38030de92ccef4b7ff9f70be8 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 5 Sep 2026 09:41:13 -0700 Subject: [PATCH] Add the duplicates filter to frontend query-params --- src-ui/src/app/data/filter-rule-type.ts | 8 ++++++++ src-ui/src/app/utils/query-params.spec.ts | 23 +++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src-ui/src/app/data/filter-rule-type.ts b/src-ui/src/app/data/filter-rule-type.ts index 6330eb44c..5feaf3867 100644 --- a/src-ui/src/app/data/filter-rule-type.ts +++ b/src-ui/src/app/data/filter-rule-type.ts @@ -49,6 +49,7 @@ export const FILTER_MODIFIED_AFTER = 16 export const FILTER_TITLE_CONTENT = 19 // Deprecated in favor of Tantivy-backed `text` filtervar. Keep for now for existing saved views export const FILTER_SIMPLE_TITLE = 48 export const FILTER_SIMPLE_TEXT = 49 +export const FILTER_HAS_DUPLICATES = 50 export const FILTER_FULLTEXT_QUERY = 20 export const FILTER_FULLTEXT_MORELIKE = 21 @@ -382,6 +383,13 @@ export const FILTER_RULE_TYPES: FilterRuleType[] = [ datatype: 'string', multi: false, }, + { + id: FILTER_HAS_DUPLICATES, + filtervar: 'has_duplicates', + datatype: 'boolean', + multi: false, + default: true, + }, ] export interface FilterRuleType { diff --git a/src-ui/src/app/utils/query-params.spec.ts b/src-ui/src/app/utils/query-params.spec.ts index 7fd8f6808..7137ed53b 100644 --- a/src-ui/src/app/utils/query-params.spec.ts +++ b/src-ui/src/app/utils/query-params.spec.ts @@ -7,6 +7,7 @@ import { FILTER_HAS_ANY_TAG, FILTER_HAS_CUSTOM_FIELDS_ALL, FILTER_HAS_CUSTOM_FIELDS_ANY, + FILTER_HAS_DUPLICATES, FILTER_HAS_TAGS_ALL, FILTER_SIMPLE_TEXT, FILTER_SIMPLE_TITLE, @@ -132,6 +133,16 @@ describe('QueryParams Utils', () => { is_tagged: 0, }) + params = queryParamsFromFilterRules([ + { + rule_type: FILTER_HAS_DUPLICATES, + value: 'false', + }, + ]) + expect(params).toEqual({ + has_duplicates: 0, + }) + params = queryParamsFromFilterRules([ { rule_type: FILTER_TITLE_CONTENT, @@ -247,6 +258,18 @@ describe('QueryParams Utils', () => { }, ]) + rules = filterRulesFromQueryParams( + convertToParamMap({ + has_duplicates: 'true', + }) + ) + expect(rules).toEqual([ + { + rule_type: FILTER_HAS_DUPLICATES, + value: 'true', + }, + ]) + rules = filterRulesFromQueryParams( convertToParamMap({ correspondent__isnull: '1',