From c12dd4629da3e0c712c7f0a6578f97e0bf32ed20 Mon Sep 17 00:00:00 2001 From: Adam Setch Date: Mon, 26 Jan 2026 12:38:52 -0500 Subject: [PATCH 1/3] fix: error handling for network connection Signed-off-by: Adam Setch --- src/renderer/utils/api/errors.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/renderer/utils/api/errors.ts b/src/renderer/utils/api/errors.ts index 7bf00f0a8..33bc3149a 100644 --- a/src/renderer/utils/api/errors.ts +++ b/src/renderer/utils/api/errors.ts @@ -46,8 +46,7 @@ export function determineFailureType( } } - // Network-like errors for RequestError (no status or status 0) - if (status === 0 || status === undefined) { + if (status === 500) { return Errors.NETWORK; } } From 3878ee1f9bc5a765c0ebccf534be672ad748ab24 Mon Sep 17 00:00:00 2001 From: Adam Setch Date: Mon, 26 Jan 2026 12:49:52 -0500 Subject: [PATCH 2/3] fix: error handling for network connection Signed-off-by: Adam Setch --- src/renderer/utils/api/errors.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/renderer/utils/api/errors.test.ts b/src/renderer/utils/api/errors.test.ts index c3df40115..119466861 100644 --- a/src/renderer/utils/api/errors.test.ts +++ b/src/renderer/utils/api/errors.test.ts @@ -83,7 +83,7 @@ describe('renderer/utils/api/errors.ts', () => { }); it('network error - no status', () => { - const mockError = new RequestError('Network error', 0, { + const mockError = new RequestError('Network error', 500, { request: { method: 'GET', url: 'https://api.github.com', @@ -94,8 +94,8 @@ describe('renderer/utils/api/errors.ts', () => { expect(result).toBe(Errors.NETWORK); }); - it('unknown error - unhandled 403', () => { - const mockError = new RequestError('Forbidden', 403, { + it('unknown error - unhandled 418', () => { + const mockError = new RequestError('Forbidden', 418, { request: { method: 'GET', url: 'https://api.github.com', From 2ef66d957be8efe411b2c102d78daf6e35822ee7 Mon Sep 17 00:00:00 2001 From: Adam Setch Date: Mon, 26 Jan 2026 12:53:07 -0500 Subject: [PATCH 3/3] fix: error handling for network connection Signed-off-by: Adam Setch --- src/renderer/utils/api/errors.ts | 39 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/renderer/utils/api/errors.ts b/src/renderer/utils/api/errors.ts index 33bc3149a..ae80b3f4d 100644 --- a/src/renderer/utils/api/errors.ts +++ b/src/renderer/utils/api/errors.ts @@ -29,25 +29,26 @@ export function determineFailureType( if (err instanceof RequestError) { const status = err.status; - if (status === 401) { - return Errors.BAD_CREDENTIALS; - } - - if (status === 403) { - if (message.includes("Missing the 'notifications' scope")) { - return Errors.MISSING_SCOPES; - } - - if ( - message.includes('API rate limit exceeded') || - message.includes('You have exceeded a secondary rate limit') - ) { - return Errors.RATE_LIMITED; - } - } - - if (status === 500) { - return Errors.NETWORK; + switch (status) { + case 401: + return Errors.BAD_CREDENTIALS; + case 403: + if (message.includes("Missing the 'notifications' scope")) { + return Errors.MISSING_SCOPES; + } + + if ( + message.includes('API rate limit exceeded') || + message.includes('You have exceeded a secondary rate limit') + ) { + return Errors.RATE_LIMITED; + } + + break; + case 500: + return Errors.NETWORK; + default: + break; } }