Skip to content

Commit 56b8859

Browse files
committed
case insensitive orgs, moved filter code, removed detailed notif warning
1 parent 0305dc4 commit 56b8859

4 files changed

Lines changed: 39 additions & 22 deletions

File tree

src/renderer/components/filters/OrganizationFilter.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import {
1515
} from '../../utils/notifications/filters/organizations';
1616
import { Tooltip } from '../fields/Tooltip';
1717
import { Title } from '../primitives/Title';
18-
import { RequiresDetailedNotificationWarning } from './RequiresDetailedNotificationsWarning';
1918

2019
type InputToken = {
2120
id: number;
@@ -143,7 +142,6 @@ export const OrganizationFilter: FC = () => {
143142
tooltip={
144143
<Stack direction="vertical" gap="condensed">
145144
<Text>Filter notifications by organization.</Text>
146-
<RequiresDetailedNotificationWarning />
147145
</Stack>
148146
}
149147
/>

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,15 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
140140

141141
mockNotifications[0].repository.owner.login = 'microsoft';
142142
mockNotifications[1].repository.owner.login = 'github';
143-
const result = filterDetailedNotifications(mockNotifications, {
143+
144+
// Apply base filtering first (where organization filtering now happens)
145+
let result = filterBaseNotifications(mockNotifications, {
146+
...mockSettings,
147+
filterIncludeOrganizations: ['microsoft'],
148+
});
149+
150+
// Then apply detailed filtering
151+
result = filterDetailedNotifications(result, {
144152
...mockSettings,
145153
detailedNotifications: true,
146154
filterIncludeOrganizations: ['microsoft'],
@@ -167,7 +175,15 @@ describe('renderer/utils/notifications/filters/filter.ts', () => {
167175

168176
mockNotifications[0].repository.owner.login = 'microsoft';
169177
mockNotifications[1].repository.owner.login = 'github';
170-
const result = filterDetailedNotifications(mockNotifications, {
178+
179+
// Apply base filtering first (where organization filtering now happens)
180+
let result = filterBaseNotifications(mockNotifications, {
181+
...mockSettings,
182+
filterExcludeOrganizations: ['github'],
183+
});
184+
185+
// Then apply detailed filtering
186+
result = filterDetailedNotifications(result, {
171187
...mockSettings,
172188
detailedNotifications: true,
173189
filterExcludeOrganizations: ['github'],

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

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,23 @@ export function filterBaseNotifications(
2424
return notifications.filter((notification) => {
2525
let passesFilters = true;
2626

27+
// Organization filters should always apply, regardless of detailed notifications setting
28+
if (hasIncludeOrganizationFilters(settings)) {
29+
passesFilters =
30+
passesFilters &&
31+
settings.filterIncludeOrganizations.some((organization) =>
32+
filterNotificationByOrganization(notification, organization),
33+
);
34+
}
35+
36+
if (hasExcludeOrganizationFilters(settings)) {
37+
passesFilters =
38+
passesFilters &&
39+
!settings.filterExcludeOrganizations.some((organization) =>
40+
filterNotificationByOrganization(notification, organization),
41+
);
42+
}
43+
2744
if (subjectTypeFilter.hasFilters(settings)) {
2845
passesFilters =
2946
passesFilters &&
@@ -51,23 +68,6 @@ export function filterDetailedNotifications(
5168
return notifications.filter((notification) => {
5269
let passesFilters = true;
5370

54-
// Organization filters should always apply, regardless of detailed notifications setting
55-
if (hasIncludeOrganizationFilters(settings)) {
56-
passesFilters =
57-
passesFilters &&
58-
settings.filterIncludeOrganizations.some((organization) =>
59-
filterNotificationByOrganization(notification, organization),
60-
);
61-
}
62-
63-
if (hasExcludeOrganizationFilters(settings)) {
64-
passesFilters =
65-
passesFilters &&
66-
!settings.filterExcludeOrganizations.some((organization) =>
67-
filterNotificationByOrganization(notification, organization),
68-
);
69-
}
70-
7171
if (settings.detailedNotifications) {
7272
passesFilters =
7373
passesFilters && passesUserFilters(notification, settings);

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,8 @@ export function filterNotificationByOrganization(
1313
notification: Notification,
1414
organizationName: string,
1515
): boolean {
16-
return notification.repository.owner.login === organizationName;
16+
return (
17+
notification.repository.owner.login.toLowerCase() ===
18+
organizationName.toLowerCase()
19+
);
1720
}

0 commit comments

Comments
 (0)