diff --git a/materialious/src/lib/android/http/androidRequests.ts b/materialious/src/lib/android/http/androidRequests.ts index ba1f1f6a..7a44ecac 100644 --- a/materialious/src/lib/android/http/androidRequests.ts +++ b/materialious/src/lib/android/http/androidRequests.ts @@ -1,21 +1,41 @@ import { goto } from "$app/navigation"; import { Capacitor } from "@capacitor/core"; -import { capacitorFetch } from "./capacitorFetch"; - -export const localProxy = 'http://localhost:3000/'; if (Capacitor.getPlatform() === 'android') { const originalFetch = window.fetch; - window.fetch = async ( - requestInput: string | URL | Request, requestOptions?: RequestInit - ): Promise => { - if (requestInput.toString().startsWith(localProxy)) { - return originalFetch(requestInput, requestOptions); + const corsProxyUrl: string = 'http://localhost:3000/'; + + window.fetch = async (requestInput: string | URL | Request, requestOptions?: RequestInit): Promise => { + let requestUrl: string; + + if (typeof requestInput === 'string') { + requestUrl = requestInput; + } else if ('url' in requestInput) { + requestUrl = requestInput.url; + } else { + requestUrl = requestInput.toString(); } - return capacitorFetch(requestInput, requestOptions); + if (!requestUrl.startsWith(corsProxyUrl) && !requestUrl.startsWith('/') && !requestUrl.startsWith('blob:')) { + requestInput = corsProxyUrl + requestUrl; + } + + // Use the original fetch with the proxied URL and options + return originalFetch(requestInput, requestOptions); + }; + + const currentOrigin: string = window.location.protocol + '//' + window.location.host; + const originalXhrOpen = XMLHttpRequest.prototype.open; + + XMLHttpRequest.prototype.open = function (...args: any[]): void { + const targetOriginMatch = /^https?:\/\/([^\/]+)/i.exec(args[1]); + if (targetOriginMatch && targetOriginMatch[0].toLowerCase() !== currentOrigin) { + args[1] = corsProxyUrl + args[1]; + } + /* @ts-ignore */ + return originalXhrOpen.apply(this, args); }; setTimeout(() => goto('/', { replaceState: true }), 10); -} \ No newline at end of file +} diff --git a/materialious/src/lib/api/model.ts b/materialious/src/lib/api/model.ts index a6c58151..5511e43a 100644 --- a/materialious/src/lib/api/model.ts +++ b/materialious/src/lib/api/model.ts @@ -1,4 +1,3 @@ -import type { YT } from "youtubei.js"; export interface Image { url: string; @@ -101,7 +100,6 @@ export interface VideoPlay extends Video { captions: Captions[]; storyboards?: StoryBoard[]; fallbackPatch?: 'youtubejs' | 'piped'; - youtubeJsPatchInfo?: YT.VideoInfo; } export interface StoryBoard { diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index 741b433c..b28e1149 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -1,6 +1,5 @@