Skip to content

Commit 236a624

Browse files
committed
feat: search notifications
Signed-off-by: Adam Setch <[email protected]>
1 parent af62e4c commit 236a624

File tree

3 files changed

+19
-41
lines changed

3 files changed

+19
-41
lines changed

src/renderer/utils/notifications/filters/filter.test.ts

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import {
88
filterDetailedNotifications,
99
hasAnyFiltersSet,
1010
} from './filter';
11-
import { AUTHOR_PREFIX, ORG_PREFIX, REPO_PREFIX } from './search';
1211

1312
describe('renderer/utils/notifications/filters/filter.ts', () => {
1413
afterEach(() => {
@@ -83,7 +82,7 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
8382
it('should filter notifications that match include organization', async () => {
8483
const result = filterBaseNotifications(mockNotifications, {
8584
...mockSettings,
86-
filterIncludeSearchTokens: [`${ORG_PREFIX}gitify-app` as SearchToken],
85+
filterIncludeSearchTokens: ['org:gitify-app' as SearchToken],
8786
});
8887

8988
expect(result.length).toBe(1);
@@ -93,7 +92,7 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
9392
it('should filter notifications that match exclude organization', async () => {
9493
const result = filterBaseNotifications(mockNotifications, {
9594
...mockSettings,
96-
filterExcludeSearchTokens: [`${ORG_PREFIX}github` as SearchToken],
95+
filterExcludeSearchTokens: ['org:github' as SearchToken],
9796
});
9897

9998
expect(result.length).toBe(1);
@@ -103,9 +102,7 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
103102
it('should filter notifications that match include repository', async () => {
104103
const result = filterBaseNotifications(mockNotifications, {
105104
...mockSettings,
106-
filterIncludeSearchTokens: [
107-
`${REPO_PREFIX}gitify-app/gitify` as SearchToken,
108-
],
105+
filterIncludeSearchTokens: ['repo:gitify-app/gitify' as SearchToken],
109106
});
110107

111108
expect(result.length).toBe(1);
@@ -115,9 +112,7 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
115112
it('should filter notifications that match exclude repository', async () => {
116113
const result = filterBaseNotifications(mockNotifications, {
117114
...mockSettings,
118-
filterExcludeSearchTokens: [
119-
`${REPO_PREFIX}github/github` as SearchToken,
120-
],
115+
filterExcludeSearchTokens: ['repo:github/github' as SearchToken],
121116
});
122117

123118
expect(result.length).toBe(1);
@@ -131,12 +126,8 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
131126
...mockSettings,
132127
detailedNotifications: false,
133128
filterUserTypes: ['Bot'],
134-
filterIncludeSearchTokens: [
135-
`${AUTHOR_PREFIX}github-user` as SearchToken,
136-
],
137-
filterExcludeSearchTokens: [
138-
`${AUTHOR_PREFIX}github-bot` as SearchToken,
139-
],
129+
filterIncludeSearchTokens: ['author:github-user' as SearchToken],
130+
filterExcludeSearchTokens: ['author:github-bot' as SearchToken],
140131
filterStates: ['merged'],
141132
});
142133

@@ -159,9 +150,7 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
159150
const result = filterDetailedNotifications(mockNotifications, {
160151
...mockSettings,
161152
detailedNotifications: true,
162-
filterIncludeSearchTokens: [
163-
`${AUTHOR_PREFIX}github-user` as SearchToken,
164-
],
153+
filterIncludeSearchTokens: ['author:github-user' as SearchToken],
165154
});
166155

167156
expect(result.length).toBe(1);
@@ -172,9 +161,7 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
172161
const result = filterDetailedNotifications(mockNotifications, {
173162
...mockSettings,
174163
detailedNotifications: true,
175-
filterExcludeSearchTokens: [
176-
`${AUTHOR_PREFIX}github-bot` as SearchToken,
177-
],
164+
filterExcludeSearchTokens: ['author:github-bot' as SearchToken],
178165
});
179166

180167
expect(result.length).toBe(1);
@@ -203,15 +190,15 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
203190
it('non-default search token includes filters', () => {
204191
const settings: SettingsState = {
205192
...defaultSettings,
206-
filterIncludeSearchTokens: [`${AUTHOR_PREFIX}gitify` as SearchToken],
193+
filterIncludeSearchTokens: ['author:gitify' as SearchToken],
207194
};
208195
expect(hasAnyFiltersSet(settings)).toBe(true);
209196
});
210197

211198
it('non-default search token excludes filters', () => {
212199
const settings: SettingsState = {
213200
...defaultSettings,
214-
filterExcludeSearchTokens: [`${ORG_PREFIX}github` as SearchToken],
201+
filterExcludeSearchTokens: ['org:github' as SearchToken],
215202
};
216203
expect(hasAnyFiltersSet(settings)).toBe(true);
217204
});

src/renderer/utils/notifications/filters/search.test.ts

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@ import { partialMockNotification } from '../../../__mocks__/partial-mocks';
22
import type { Link } from '../../../types';
33
import type { Owner } from '../../../typesGitHub';
44
import {
5-
AUTHOR_PREFIX,
65
filterNotificationBySearchTerm,
76
matchQualifierByPrefix,
8-
ORG_PREFIX,
97
QUALIFIERS,
10-
REPO_PREFIX,
118
} from './search';
129

1310
// (helper removed – no longer used)
@@ -67,23 +64,20 @@ describe('renderer/utils/notifications/filters/search.ts', () => {
6764

6865
it('matches author qualifier (case-insensitive)', () => {
6966
expect(
70-
filterNotificationBySearchTerm(
71-
mockNotification,
72-
`${AUTHOR_PREFIX}github-user`,
73-
),
67+
filterNotificationBySearchTerm(mockNotification, `author:github-user`),
7468
).toBe(true);
7569

7670
expect(
7771
filterNotificationBySearchTerm(
7872
mockNotification,
79-
`${AUTHOR_PREFIX}GITHUB-USER`,
73+
`author:GITHUB-USER`,
8074
),
8175
).toBe(true);
8276

8377
expect(
8478
filterNotificationBySearchTerm(
8579
mockNotification,
86-
`${AUTHOR_PREFIX}some-bot`,
80+
`author:some-bot`,
8781
),
8882
).toBe(false);
8983
});
@@ -92,41 +86,41 @@ describe('renderer/utils/notifications/filters/search.ts', () => {
9286
expect(
9387
filterNotificationBySearchTerm(
9488
mockNotification,
95-
`${ORG_PREFIX}gitify-app`,
89+
`org:gitify-app`,
9690
),
9791
).toBe(true);
9892

9993
expect(
10094
filterNotificationBySearchTerm(
10195
mockNotification,
102-
`${ORG_PREFIX}GITIFY-APP`,
96+
`org:GITIFY-APP`,
10397
),
10498
).toBe(true);
10599

106100
expect(
107-
filterNotificationBySearchTerm(mockNotification, `${ORG_PREFIX}github`),
101+
filterNotificationBySearchTerm(mockNotification, `org:github`),
108102
).toBe(false);
109103
});
110104

111105
it('matches repo qualifier (case-insensitive full_name)', () => {
112106
expect(
113107
filterNotificationBySearchTerm(
114108
mockNotification,
115-
`${REPO_PREFIX}gitify-app/gitify`,
109+
`repo:gitify-app/gitify`,
116110
),
117111
).toBe(true);
118112

119113
expect(
120114
filterNotificationBySearchTerm(
121115
mockNotification,
122-
`${REPO_PREFIX}Gitify-App/Gitify`,
116+
`repo:Gitify-App/Gitify`,
123117
),
124118
).toBe(true);
125119

126120
expect(
127121
filterNotificationBySearchTerm(
128122
mockNotification,
129-
`${REPO_PREFIX}github/other`,
123+
`repo:github/other`,
130124
),
131125
).toBe(false);
132126
});

src/renderer/utils/notifications/filters/search.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ export const DETAILED_ONLY_QUALIFIERS: readonly SearchQualifier[] = QUALIFIERS.f
4242
(q) => q.requiresDetailsNotifications,
4343
);
4444

45-
export const AUTHOR_PREFIX: SearchPrefix = SEARCH_QUALIFIERS.author.prefix;
46-
export const ORG_PREFIX: SearchPrefix = SEARCH_QUALIFIERS.org.prefix;
47-
export const REPO_PREFIX: SearchPrefix = SEARCH_QUALIFIERS.repo.prefix;
4845

4946
// Qualifier selection helpers (centralized to avoid duplicating logic in UI components)
5047
export function getAvailableSearchQualifiers(

0 commit comments

Comments
 (0)