Repository: gitify-app/gitify (ts)

Issue:
None of the notifications show up if loading some repo fails
### 🔍 Is there already an issue for your problem?

- [X] I have checked older issues, open and closed

### 📝 Description

I had some notification stuck in the system from a deleted repo, which also was showing up in the Github web UI. 
When opening Gitify, the UI was always just showing "Oops, something went wrong. Try again later.", even though there were other notifications.

Checking the traffic revealed that it loaded the notifications where one of the notifications was the broken one.

```json
[
  <redacted notifications>,
  {
    "id": "12427009267",
    "unread": true,
    "reason": "mention",
    "updated_at": "2024-09-16T14:20:37Z",
    "last_read_at": null,
    "subject": {
      "title": "Merge pull request #251 from pahnev/master",
      "url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/commits/d492609d1ed5752471bfdab6afbd6283c83b9520",
      "latest_comment_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/commits/d492609d1ed5752471bfdab6afbd6283c83b9520",
      "type": "Commit"
    },
    "repository": {
      "id": 858221833,
      "node_id": "R_kgDOMydtCQ",
      "name": "dear-github-2.0",
      "full_name": "CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0",
      "private": false,
      "owner": {
        "login": "CASIBOM-GIRIS-CASIBOM-GUNCEL",
        "id": 7458478,
        "node_id": "MDQ6VXNlcjc0NTg0Nzg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7458478?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL",
        "html_url": "https://github.com/CASIBOM-GIRIS-CASIBOM-GUNCEL",
        "followers_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/followers",
        "following_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/following{/other_user}",
        "gists_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/subscriptions",
        "organizations_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/orgs",
        "repos_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/repos",
        "events_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/events{/privacy}",
        "received_events_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/received_events",
        "type": "User",
        "site_admin": false
      },
      "html_url": "https://github.com/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0",
      "description": null,
      "fork": false,
      "url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0",
      "forks_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/forks",
      "keys_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/keys{/key_id}",
      "collaborators_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/collaborators{/collaborator}",
      "teams_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/teams",
      "hooks_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/hooks",
      "issue_events_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/issues/events{/number}",
      "events_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/events",
      "assignees_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/assignees{/user}",
      "branches_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/branches{/branch}",
      "tags_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/tags",
      "blobs_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/blobs{/sha}",
      "git_tags_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/tags{/sha}",
      "git_refs_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/refs{/sha}",
      "trees_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/trees{/sha}",
      "statuses_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/statuses/{sha}",
      "languages_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/languages",
      "stargazers_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/stargazers",
      "contributors_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/contributors",
      "subscribers_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/subscribers",
      "subscription_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/subscription",
      "commits_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/commits{/sha}",
      "git_commits_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/commits{/sha}",
      "comments_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/comments{/number}",
      "issue_comment_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/issues/comments{/number}",
      "contents_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/contents/{+path}",
      "compare_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/compare/{base}...{head}",
      "merges_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/merges",
      "archive_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/{archive_format}{/ref}",
      "downloads_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/downloads",
      "issues_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/issues{/number}",
      "pulls_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/pulls{/number}",
      "milestones_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/milestones{/number}",
      "notifications_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/notifications{?since,all,participating}",
      "labels_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/labels{/name}",
      "releases_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/releases{/id}",
      "deployments_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/deployments"
    },
    "url": "https://api.github.com/notifications/threads/12427009267",
    "subscription_url": "https://api.github.com/notifications/threads/12427009267/subscription"
  },
  {
    "id": "12427009054",
    "unread": true,
    "reason": "mention",
    "updated_at": "2024-09-16T14:20:37Z",
    "last_read_at": null,
    "subject": {
      "title": "Adding @pahnev",
      "url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/commits/c56e03434b3c1a15fa0dffafdd1cb77f95f624e9",
      "latest_comment_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/commits/c56e03434b3c1a15fa0dffafdd1cb77f95f624e9",
      "type": "Commit"
    },
    "repository": {
      "id": 858221833,
      "node_id": "R_kgDOMydtCQ",
      "name": "dear-github-2.0",
      "full_name": "CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0",
      "private": false,
      "owner": {
        "login": "CASIBOM-GIRIS-CASIBOM-GUNCEL",
        "id": 7458478,
        "node_id": "MDQ6VXNlcjc0NTg0Nzg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7458478?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL",
        "html_url": "https://github.com/CASIBOM-GIRIS-CASIBOM-GUNCEL",
        "followers_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/followers",
        "following_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/following{/other_user}",
        "gists_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/subscriptions",
        "organizations_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/orgs",
        "repos_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/repos",
        "events_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/events{/privacy}",
        "received_events_url": "https://api.github.com/users/CASIBOM-GIRIS-CASIBOM-GUNCEL/received_events",
        "type": "User",
        "site_admin": false
      },
      "html_url": "https://github.com/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0",
      "description": null,
      "fork": false,
      "url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0",
      "forks_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/forks",
      "keys_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/keys{/key_id}",
      "collaborators_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/collaborators{/collaborator}",
      "teams_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/teams",
      "hooks_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/hooks",
      "issue_events_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/issues/events{/number}",
      "events_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/events",
      "assignees_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/assignees{/user}",
      "branches_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/branches{/branch}",
      "tags_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/tags",
      "blobs_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/blobs{/sha}",
      "git_tags_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/tags{/sha}",
      "git_refs_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/refs{/sha}",
      "trees_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/trees{/sha}",
      "statuses_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/statuses/{sha}",
      "languages_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/languages",
      "stargazers_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/stargazers",
      "contributors_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/contributors",
      "subscribers_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/subscribers",
      "subscription_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/subscription",
      "commits_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/commits{/sha}",
      "git_commits_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/git/commits{/sha}",
      "comments_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/comments{/number}",
      "issue_comment_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/issues/comments{/number}",
      "contents_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/contents/{+path}",
      "compare_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/compare/{base}...{head}",
      "merges_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/merges",
      "archive_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/{archive_format}{/ref}",
      "downloads_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/downloads",
      "issues_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/issues{/number}",
      "pulls_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/pulls{/number}",
      "milestones_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/milestones{/number}",
      "notifications_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/notifications{?since,all,participating}",
      "labels_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/labels{/name}",
      "releases_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/releases{/id}",
      "deployments_url": "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/deployments"
    },
    "url": "https://api.github.com/notifications/threads/12427009054",
    "subscription_url": "https://api.github.com/notifications/threads/12427009054/subscription"
  }
]
```

And when loading the details for that notification, the API returned 404.
```bash
curl -H "Host: api.github.com" -H "sec-ch-ua: \"Not;A=Brand\";v=\"24\", \"Chromium\";v=\"128\"" -H "sec-ch-ua-mobile: ?0" -H "authorization: token <redacted>" -H "user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) gitify/5.14.0 Chrome/128.0.6613.120 Electron/32.1.0 Safari/537.36" -H "content-type: application/json" -H "accept: application/json" -H "cache-control: " -H "sec-ch-ua-platform: \"macOS\"" -H "sec-fetch-site: cross-site" -H "sec-fetch-mode: cors" -H "sec-fetch-dest: empty" -H "accept-language: en-GB" -H "priority: u=1, i" --compressed "https://api.github.com/repos/CASIBOM-GIRIS-CASIBOM-GUNCEL/dear-github-2.0/commits/d492609d1ed5752471bfdab6afbd6283c83b9520"
```

```json
{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest",
  "status": "404"
}
```

### 🪜 Steps To Reproduce

1. Generate notification from a repo.
2. Delete the repo
3. Check notifications in Gitify

### Gitify Version

5.14.0

### Operating System

macOS

### GitHub Account

GitHub Cloud

### 📸 Screenshots

_No response_

Pull request description:
fix: continue if notification enrichment fails
Resolves #1567 

Will silently warn and continue when notification enrichment fails, such as when the notification has been deleted

Patch:
diff --git a/package.json b/package.json
index 9f360697..a227ebcf 100644
--- a/package.json
+++ b/package.json
@@ -79,6 +79,7 @@
       "node_modules/**/*",
       "package.json"
     ],
+    "electronLanguages": ["en"],
     "mac": {
       "category": "public.app-category.developer-tools",
       "icon": "assets/images/app-icon.icns",
diff --git a/src/renderer/components/AccountNotifications.tsx b/src/renderer/components/AccountNotifications.tsx
index 5cd015fb..cc9f6bdc 100644
--- a/src/renderer/components/AccountNotifications.tsx
+++ b/src/renderer/components/AccountNotifications.tsx
@@ -1,7 +1,4 @@
 import {
-  ChevronDownIcon,
-  ChevronLeftIcon,
-  ChevronRightIcon,
   FeedPersonIcon,
   GitPullRequestIcon,
   IssueOpenedIcon,
@@ -11,6 +8,7 @@ import { AppContext } from '../context/App';
 import { type Account, type GitifyError, Opacity, Size } from '../types';
 import type { Notification } from '../typesGitHub';
 import { cn } from '../utils/cn';
+import { getChevronDetails } from '../utils/helpers';
 import {
   openAccountProfile,
   openGitHubIssues,
@@ -63,19 +61,11 @@ export const AccountNotifications: FC<IAccountNotifications> = (
     setShowAccountNotifications(!showAccountNotifications);
   };
 
-  const ChevronIcon =
-    notifications.length === 0
-      ? ChevronLeftIcon
-      : showAccountNotifications
-        ? ChevronDownIcon
-        : ChevronRightIcon;
-
-  const toggleAccountNotificationsLabel =
-    notifications.length === 0
-      ? 'No notifications for account'
-      : showAccountNotifications
-        ? 'Hide account notifications'
-        : 'Show account notifications';
+  const Chevron = getChevronDetails(
+    hasNotifications,
+    showAccountNotifications,
+    'account',
+  );
 
   const isGroupByRepository = settings.groupBy === 'REPOSITORY';
 
@@ -136,8 +126,8 @@ export const AccountNotifications: FC<IAccountNotifications> = (
               }}
             />
             <InteractionButton
-              title={toggleAccountNotificationsLabel}
-              icon={ChevronIcon}
+              title={Chevron.label}
+              icon={Chevron.icon}
               size={Size.SMALL}
               onClick={toggleAccountNotifications}
             />
diff --git a/src/renderer/components/RepositoryNotifications.tsx b/src/renderer/components/RepositoryNotifications.tsx
index 87795860..f48d6437 100644
--- a/src/renderer/components/RepositoryNotifications.tsx
+++ b/src/renderer/components/RepositoryNotifications.tsx
@@ -1,16 +1,13 @@
-import {
-  CheckIcon,
-  ChevronDownIcon,
-  ChevronRightIcon,
-  MarkGithubIcon,
-  ReadIcon,
-} from '@primer/octicons-react';
+import { CheckIcon, MarkGithubIcon, ReadIcon } from '@primer/octicons-react';
 import { type FC, type MouseEvent, useContext, useState } from 'react';
 import { AppContext } from '../context/App';
 import { Opacity, Size } from '../types';
 import type { Notification } from '../typesGitHub';
 import { cn } from '../utils/cn';
-import { isMarkAsDoneFeatureSupported } from '../utils/helpers';
+import {
+  getChevronDetails,
+  isMarkAsDoneFeatureSupported,
+} from '../utils/helpers';
 import { openRepository } from '../utils/links';
 import { HoverGroup } from './HoverGroup';
 import { NotificationRow } from './NotificationRow';
@@ -39,13 +36,11 @@ export const RepositoryNotifications: FC<IRepositoryNotifications> = ({
     setShowRepositoryNotifications(!showRepositoryNotifications);
   };
 
-  const ChevronIcon = showRepositoryNotifications
-    ? ChevronDownIcon
-    : ChevronRightIcon;
-
-  const toggleRepositoryNotificationsLabel = showRepositoryNotifications
-    ? 'Hide repository notifications'
-    : 'Show repository notifications';
+  const Chevron = getChevronDetails(
+    true,
+    showRepositoryNotifications,
+    'repository',
+  );
 
   return (
     <>
@@ -108,8 +103,8 @@ export const RepositoryNotifications: FC<IRepositoryNotifications> = ({
               }}
             />
             <InteractionButton
-              title={toggleRepositoryNotificationsLabel}
-              icon={ChevronIcon}
+              title={Chevron.label}
+              icon={Chevron.icon}
               size={Size.SMALL}
               onClick={toggleRepositoryNotifications}
             />
diff --git a/src/renderer/types.ts b/src/renderer/types.ts
index 8ddfd126..715d77e6 100644
--- a/src/renderer/types.ts
+++ b/src/renderer/types.ts
@@ -184,3 +184,8 @@ export enum Size {
   LARGE = 18,
   XLARGE = 20,
 }
+
+export type Chevron = {
+  icon: FC<OcticonProps>;
+  label: string;
+};
diff --git a/src/renderer/utils/helpers.ts b/src/renderer/utils/helpers.ts
index e93142bd..4014f56c 100644
--- a/src/renderer/utils/helpers.ts
+++ b/src/renderer/utils/helpers.ts
@@ -1,7 +1,12 @@
+import {
+  ChevronDownIcon,
+  ChevronLeftIcon,
+  ChevronRightIcon,
+} from '@primer/octicons-react';
 import { formatDistanceToNowStrict, parseISO } from 'date-fns';
 import log from 'electron-log';
 import { defaultSettings } from '../context/App';
-import type { Account, Hostname, Link, SettingsState } from '../types';
+import type { Account, Chevron, Hostname, Link, SettingsState } from '../types';
 import type { Notification } from '../typesGitHub';
 import { getHtmlUrl, getLatestDiscussion } from './api/client';
 import type { PlatformType } from './auth/types';
@@ -209,3 +214,28 @@ export function getFilterCount(settings: SettingsState): number {
 
   return count;
 }
+
+export function getChevronDetails(
+  hasNotifications: boolean,
+  isVisible: boolean,
+  type: 'account' | 'repository',
+): Chevron {
+  if (!hasNotifications) {
+    return {
+      icon: ChevronLeftIcon,
+      label: `No notifications for ${type}`,
+    };
+  }
+
+  if (isVisible) {
+    return {
+      icon: ChevronDownIcon,
+      label: `Hide ${type} notifications`,
+    };
+  }
+
+  return {
+    icon: ChevronRightIcon,
+    label: `Show ${type} notifications`,
+  };
+}
diff --git a/src/renderer/utils/notifications.ts b/src/renderer/utils/notifications.ts
index d5785ce3..c5f2bc7d 100644
--- a/src/renderer/utils/notifications.ts
+++ b/src/renderer/utils/notifications.ts
@@ -5,7 +5,7 @@ import type {
   GitifyState,
   SettingsState,
 } from '../types';
-import { Notification } from '../typesGitHub';
+import { type GitifySubject, Notification } from '../typesGitHub';
 import { listNotificationsForAuthenticatedUser } from './api/client';
 import { determineFailureType } from './api/errors';
 import { getAccountUUID } from './auth/utils';
@@ -183,8 +183,16 @@ export async function enrichNotifications(
 
   const enrichedNotifications = await Promise.all(
     notifications.map(async (notification: Notification) => {
-      const additionalSubjectDetails =
-        await getGitifySubjectDetails(notification);
+      let additionalSubjectDetails: GitifySubject = {};
+
+      try {
+        additionalSubjectDetails = await getGitifySubjectDetails(notification);
+      } catch (error) {
+        log.warn(
+          `Error occurred while enriching notification ${notification.subject.title} for repository ${notification.repository.full_name}. Continuing with base notification`,
+          error,
+        );
+      }
 
       return {
         ...notification,


Test patch:
diff --git a/src/renderer/utils/helpers.test.ts b/src/renderer/utils/helpers.test.ts
index 2ab16c3a..3656aaf6 100644
--- a/src/renderer/utils/helpers.test.ts
+++ b/src/renderer/utils/helpers.test.ts
@@ -5,6 +5,11 @@ import {
   mockPersonalAccessTokenAccount,
 } from '../__mocks__/state-mocks';
 
+import {
+  ChevronDownIcon,
+  ChevronLeftIcon,
+  ChevronRightIcon,
+} from '@primer/octicons-react';
 import log from 'electron-log';
 import { defaultSettings } from '../context/App';
 import type { Hostname, Link, SettingsState } from '../types';
@@ -19,6 +24,7 @@ import {
   formatNotificationUpdatedAt,
   generateGitHubWebUrl,
   generateNotificationReferrerId,
+  getChevronDetails,
   getFilterCount,
   getPlatformFromHostname,
   isEnterpriseServerHost,
@@ -629,4 +635,23 @@ describe('renderer/utils/helpers.ts', () => {
       expect(getFilterCount(settings)).toBe(1);
     });
   });
+
+  describe('getChevronDetails', () => {
+    it('should return correct chevron details', () => {
+      expect(getChevronDetails(true, true, 'account')).toEqual({
+        icon: ChevronDownIcon,
+        label: 'Hide account notifications',
+      });
+
+      expect(getChevronDetails(true, false, 'account')).toEqual({
+        icon: ChevronRightIcon,
+        label: 'Show account notifications',
+      });
+
+      expect(getChevronDetails(false, false, 'account')).toEqual({
+        icon: ChevronLeftIcon,
+        label: 'No notifications for account',
+      });
+    });
+  });
 });