@@ -5,33 +5,34 @@ import type {
55 SubjectUser ,
66} from '../../../typesGitHub' ;
77import {
8- AUTHOR_PREFIX ,
98 filterNotificationBySearchTerm ,
109 hasExcludeSearchFilters ,
1110 hasIncludeSearchFilters ,
12- ORG_PREFIX ,
13- REPO_PREFIX ,
1411 reasonFilter ,
15- type SearchPrefix ,
1612 stateFilter ,
1713 subjectTypeFilter ,
1814 userTypeFilter ,
15+ type SearchQualifier ,
16+ BASE_QUALIFIERS ,
17+ DETAILED_ONLY_QUALIFIERS ,
1918} from '.' ;
2019
20+
21+
2122export function filterBaseNotifications (
2223 notifications : Notification [ ] ,
2324 settings : SettingsState ,
2425) : Notification [ ] {
2526 return notifications . filter ( ( notification ) => {
2627 let passesFilters = true ;
2728
28- passesFilters =
29- passesFilters &&
30- passesSearchTokenFiltersForPrefix ( notification , settings , ORG_PREFIX ) ;
31-
32- passesFilters =
33- passesFilters &&
34- passesSearchTokenFiltersForPrefix ( notification , settings , REPO_PREFIX ) ;
29+ // Apply base qualifier include/exclude filters (org, repo, etc.)
30+ for ( const qualifier of BASE_QUALIFIERS ) {
31+ if ( ! passesFilters ) break ;
32+ passesFilters =
33+ passesFilters &&
34+ passesSearchTokenFiltersForQualifier ( notification , settings , qualifier ) ;
35+ }
3536
3637 if ( subjectTypeFilter . hasFilters ( settings ) ) {
3738 passesFilters =
@@ -86,12 +87,13 @@ export function hasAnyFiltersSet(settings: SettingsState): boolean {
8687/**
8788 * Apply include/exclude search token logic for a specific search qualifier prefix.
8889 */
89- function passesSearchTokenFiltersForPrefix (
90+ function passesSearchTokenFiltersForQualifier (
9091 notification : Notification ,
9192 settings : SettingsState ,
92- prefix : SearchPrefix ,
93+ qualifier : SearchQualifier ,
9394) : boolean {
9495 let passes = true ;
96+ const prefix = qualifier . prefix ;
9597
9698 if ( hasIncludeSearchFilters ( settings ) ) {
9799 const includeTokens = settings . filterIncludeSearchTokens . filter ( ( t ) =>
@@ -136,10 +138,13 @@ function passesUserFilters(
136138 ) ;
137139 }
138140
139- // Apply author-specific search token filters during detailed filtering
140- passesFilters =
141- passesFilters &&
142- passesSearchTokenFiltersForPrefix ( notification , settings , AUTHOR_PREFIX ) ;
141+ // Apply detailed-only qualifier search token filters (e.g. author)
142+ for ( const qualifier of DETAILED_ONLY_QUALIFIERS ) {
143+ if ( ! passesFilters ) break ;
144+ passesFilters =
145+ passesFilters &&
146+ passesSearchTokenFiltersForQualifier ( notification , settings , qualifier ) ;
147+ }
143148
144149 return passesFilters ;
145150}
0 commit comments