diff --git a/src/renderer/components/filters/__snapshots__/SubjectTypeFilter.test.tsx.snap b/src/renderer/components/filters/__snapshots__/SubjectTypeFilter.test.tsx.snap
index 9a57e6cbb..1a5ce7615 100644
--- a/src/renderer/components/filters/__snapshots__/SubjectTypeFilter.test.tsx.snap
+++ b/src/renderer/components/filters/__snapshots__/SubjectTypeFilter.test.tsx.snap
@@ -87,6 +87,33 @@ exports[`renderer/components/filters/SubjectTypeFilter.tsx > should render itsel
data-padding="none"
data-wrap="nowrap"
>
+
General > should render itself & its chil
data-padding="none"
data-wrap="nowrap"
>
+
+
+
+
+ 0
+
+
= {
Release: {
title: 'Release',
},
+ RepositoryAdvisory: {
+ title: 'Advisory',
+ },
RepositoryDependabotAlertsThread: {
title: 'Dependabot Alert',
},
diff --git a/src/renderer/utils/notifications/handlers/index.test.ts b/src/renderer/utils/notifications/handlers/index.test.ts
index bd260b3a5..64148b263 100644
--- a/src/renderer/utils/notifications/handlers/index.test.ts
+++ b/src/renderer/utils/notifications/handlers/index.test.ts
@@ -11,6 +11,7 @@ import { createNotificationHandler } from './index';
import { issueHandler } from './issue';
import { pullRequestHandler } from './pullRequest';
import { releaseHandler } from './release';
+import { repositoryAdvisoryHandler } from './repositoryAdvisory';
import { repositoryDependabotAlertsThreadHandler } from './repositoryDependabotAlertsThread';
import { repositoryInvitationHandler } from './repositoryInvitation';
import { repositoryVulnerabilityAlertHandler } from './repositoryVulnerabilityAlert';
@@ -25,6 +26,7 @@ describe('renderer/utils/notifications/handlers/index.ts', () => {
Issue: issueHandler,
PullRequest: pullRequestHandler,
Release: releaseHandler,
+ RepositoryAdvisory: repositoryAdvisoryHandler,
RepositoryDependabotAlertsThread: repositoryDependabotAlertsThreadHandler,
RepositoryInvitation: repositoryInvitationHandler,
RepositoryVulnerabilityAlert: repositoryVulnerabilityAlertHandler,
diff --git a/src/renderer/utils/notifications/handlers/index.ts b/src/renderer/utils/notifications/handlers/index.ts
index 5b333f18c..0697d937d 100644
--- a/src/renderer/utils/notifications/handlers/index.ts
+++ b/src/renderer/utils/notifications/handlers/index.ts
@@ -8,6 +8,7 @@ import { discussionHandler } from './discussion';
import { issueHandler } from './issue';
import { pullRequestHandler } from './pullRequest';
import { releaseHandler } from './release';
+import { repositoryAdvisoryHandler } from './repositoryAdvisory';
import { repositoryDependabotAlertsThreadHandler } from './repositoryDependabotAlertsThread';
import { repositoryInvitationHandler } from './repositoryInvitation';
import { repositoryVulnerabilityAlertHandler } from './repositoryVulnerabilityAlert';
@@ -29,6 +30,8 @@ export function createNotificationHandler(
return pullRequestHandler;
case 'Release':
return releaseHandler;
+ case 'RepositoryAdvisory':
+ return repositoryAdvisoryHandler;
case 'RepositoryDependabotAlertsThread':
return repositoryDependabotAlertsThreadHandler;
case 'RepositoryInvitation':
@@ -49,6 +52,7 @@ export const handlers = {
issueHandler,
pullRequestHandler,
releaseHandler,
+ repositoryAdvisoryHandler,
repositoryDependabotAlertsThreadHandler,
repositoryInvitationHandler,
repositoryVulnerabilityAlertHandler,
diff --git a/src/renderer/utils/notifications/handlers/repositoryAdvisory.test.ts b/src/renderer/utils/notifications/handlers/repositoryAdvisory.test.ts
new file mode 100644
index 000000000..7d4799009
--- /dev/null
+++ b/src/renderer/utils/notifications/handlers/repositoryAdvisory.test.ts
@@ -0,0 +1,34 @@
+import { mockPartialGitifyNotification } from '../../../__mocks__/notifications-mocks';
+
+import type { GitifyNotification, Link } from '../../../types';
+
+import { repositoryAdvisoryHandler } from './repositoryAdvisory';
+
+describe('renderer/utils/notifications/handlers/repositoryAdvisory.ts', () => {
+ it('iconType', () => {
+ const mockNotification = mockPartialGitifyNotification({
+ type: 'RepositoryAdvisory',
+ });
+
+ expect(
+ repositoryAdvisoryHandler.iconType(mockNotification).displayName,
+ ).toBe('AlertIcon');
+ });
+
+ it('defaultUrl', () => {
+ const mockHtmlUrl =
+ 'https://github.com/gitify-app/notifications-test' as Link;
+
+ expect(
+ repositoryAdvisoryHandler.defaultUrl({
+ repository: {
+ htmlUrl: mockHtmlUrl,
+ },
+ } as GitifyNotification),
+ ).toEqual(`${mockHtmlUrl}/security/advisories`);
+ });
+
+ it('defaultUserType', () => {
+ expect(repositoryAdvisoryHandler.defaultUserType()).toEqual('Bot');
+ });
+});
diff --git a/src/renderer/utils/notifications/handlers/repositoryAdvisory.ts b/src/renderer/utils/notifications/handlers/repositoryAdvisory.ts
new file mode 100644
index 000000000..2bcbefe77
--- /dev/null
+++ b/src/renderer/utils/notifications/handlers/repositoryAdvisory.ts
@@ -0,0 +1,27 @@
+import type { FC } from 'react';
+
+import { AlertIcon, type OcticonProps } from '@primer/octicons-react';
+
+import type { GitifyNotification, Link, UserType } from '../../../types';
+
+import { DefaultHandler, defaultHandler } from './default';
+
+class RepositoryAdvisoryHandler extends DefaultHandler {
+ readonly type = 'RepositoryAdvisory';
+
+ iconType(_notification: GitifyNotification): FC {
+ return AlertIcon;
+ }
+
+ defaultUrl(notification: GitifyNotification): Link {
+ const url = new URL(defaultHandler.defaultUrl(notification));
+ url.pathname += '/security/advisories';
+ return url.href as Link;
+ }
+
+ defaultUserType(): UserType {
+ return 'Bot';
+ }
+}
+
+export const repositoryAdvisoryHandler = new RepositoryAdvisoryHandler();