diff --git a/materialious/android/app/build.gradle b/materialious/android/app/build.gradle index f5cd73c0..0369d805 100644 --- a/materialious/android/app/build.gradle +++ b/materialious/android/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "us.materialio.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 215 - versionName "1.15.7" + versionCode 216 + versionName "1.15.8" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/materialious/electron/materialious.metainfo.xml b/materialious/electron/materialious.metainfo.xml index 14101167..34c43a34 100644 --- a/materialious/electron/materialious.metainfo.xml +++ b/materialious/electron/materialious.metainfo.xml @@ -80,7 +80,11 @@ - + + + https://github.com/Materialious/Materialious/releases/tag/1.15.8 + + https://github.com/Materialious/Materialious/releases/tag/1.15.7 diff --git a/materialious/electron/package.json b/materialious/electron/package.json index a43122cb..49734948 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -1,6 +1,6 @@ { "name": "Materialious", - "version": "1.15.7", + "version": "1.15.8", "description": "Modern material design for YouTube and Invidious.", "author": { "name": "Ward Pearce", diff --git a/materialious/package.json b/materialious/package.json index b49c401e..8d3ec302 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -1,6 +1,6 @@ { "name": "materialious", - "version": "1.15.7", + "version": "1.15.8", "private": true, "scripts": { "dev": "npm run patch:github && vite dev", diff --git a/materialious/src/lib/api/index.ts b/materialious/src/lib/api/index.ts index 47190f53..5feba859 100644 --- a/materialious/src/lib/api/index.ts +++ b/materialious/src/lib/api/index.ts @@ -71,13 +71,18 @@ export function setRegion(url: URL): URL { export async function fetchErrorHandle(response: Response): Promise { if (!response.ok) { let message = 'Internal error'; + + // Attempt to parse error. try { const json = await response.json(); - message = 'errorBacktrace' in json ? json.errorBacktrace : json.error; + message = json.errorBacktrace || json.error || json.message; } catch { // Continue regardless of error } - throw Error(message); + + throw Error( + `${response.status} - ${response.statusText}\n${decodeURIComponent(response.url)}\n${message}` + ); } return response; diff --git a/materialious/src/lib/components/ErrorMsg.svelte b/materialious/src/lib/components/ErrorMsg.svelte index 48abe3b0..71b6d06d 100644 --- a/materialious/src/lib/components/ErrorMsg.svelte +++ b/materialious/src/lib/components/ErrorMsg.svelte @@ -14,8 +14,8 @@ > {#if page.error} -
- {page.error.message} +
+

{page.error.message}

{/if} diff --git a/materialious/src/routes/(app)/+page.ts b/materialious/src/routes/(app)/+page.ts index 37806716..2e5aaa7d 100644 --- a/materialious/src/routes/(app)/+page.ts +++ b/materialious/src/routes/(app)/+page.ts @@ -22,14 +22,17 @@ export async function load() { let popularDisabled: boolean = false; if (!popular) { + let errorMsg: Error | undefined; try { popular = await getPopular(); - } catch (errorMessage: any) { - if (errorMessage.toString() === 'Error: Administrator has disabled this endpoint.') { - popularDisabled = true; - } else { - error(500, errorMessage); - } + } catch (popularError) { + errorMsg = popularError as Error; + } + + if (errorMsg && errorMsg.toString() === 'Error: Administrator has disabled this endpoint.') { + popularDisabled = true; + } else { + throw error(500, errorMsg); } feedCacheStore.set({ ...get(feedCacheStore), popular }); diff --git a/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts b/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts index 297e9eca..8a1f0a8c 100644 --- a/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts +++ b/materialious/src/routes/api/proxy/[urlToProxy]/+server.ts @@ -107,11 +107,21 @@ async function proxyRequest( body = request.body; } - const response = await fetch(urlToProxyObj.toString(), { - ...requestOptions, - body, - signal: AbortSignal.timeout(10000) - }); + let response: Response | undefined; + let errorMsg = ''; + try { + response = await fetch(urlToProxyObj.toString(), { + ...requestOptions, + body, + signal: AbortSignal.timeout(10000) + }); + } catch (err) { + errorMsg = (err as any).toString(); + } + + if (!response || errorMsg) { + throw error(500, errorMsg); + } const responseHeaders = new Headers(response.headers); responseHeaders.set('transfer-encoding', 'chunked'); diff --git a/update_versions.py b/update_versions.py index 5fcbd6e8..07940ff8 100644 --- a/update_versions.py +++ b/update_versions.py @@ -3,7 +3,7 @@ import os import re from datetime import datetime -LATEST_VERSION = "1.15.7" +LATEST_VERSION = "1.15.8" RELEASE_DATE = datetime.now().strftime("%Y-%-m-%d") # Format: YYYY-M-D WORKING_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "materialious")