From 5ccc67f55c45c162a05e3a027e7ea49d215bb34d Mon Sep 17 00:00:00 2001 From: WardPearce Date: Wed, 11 Feb 2026 20:38:20 +1300 Subject: [PATCH] Added backend option --- materialious/src/lib/api/index.ts | 7 ++- .../lib/components/settings/Interface.svelte | 52 ++++++++++++++----- materialious/src/lib/i18n/locales/en.json | 1 + materialious/src/lib/store.ts | 8 ++- 4 files changed, 51 insertions(+), 17 deletions(-) diff --git a/materialious/src/lib/api/index.ts b/materialious/src/lib/api/index.ts index f35ac880..af91b420 100644 --- a/materialious/src/lib/api/index.ts +++ b/materialious/src/lib/api/index.ts @@ -3,6 +3,7 @@ import { Capacitor } from '@capacitor/core'; import { get } from 'svelte/store'; import { authStore, + backendInUseStore, deArrowInstanceStore, deArrowThumbnailInstanceStore, instanceStore, @@ -199,9 +200,11 @@ export async function getSearch( options: SearchOptions, fetchOptions?: RequestInit ): Promise { - searchSetDefaults(options); + if (get(backendInUseStore) === 'yt') { + return await getSearchYTjs(search, options); + } - await getSearchYTjs(search, options); + searchSetDefaults(options); const path = buildPath('search'); path.search = new URLSearchParams({ ...options, q: search }).toString(); diff --git a/materialious/src/lib/components/settings/Interface.svelte b/materialious/src/lib/components/settings/Interface.svelte index ee16603e..d2a3ea28 100644 --- a/materialious/src/lib/components/settings/Interface.svelte +++ b/materialious/src/lib/components/settings/Interface.svelte @@ -16,6 +16,7 @@ import ColorPicker from 'svelte-awesome-color-picker'; import { authStore, + backendInUseStore, darkModeStore, feedCacheStore, instanceStore, @@ -116,6 +117,11 @@ ui('#dialog-settings'); } + async function setBackend(event: Event) { + const select = event.target as HTMLSelectElement; + backendInUseStore.set(select.value as 'ivg' | 'yt'); + } + function allowInsecureRequests() { if (!Capacitor.isNativePlatform()) return; interfaceAllowInsecureRequests.set(!$interfaceAllowInsecureRequests); @@ -147,20 +153,38 @@ {#if Capacitor.isNativePlatform()} -
- -
+
+ + + arrow_drop_down +
+ + {#if $backendInUseStore === 'ivg'} +
+ +
+ {:else} +
+ {/if} {#if isMobile()} {#if invalidInstance} diff --git a/materialious/src/lib/i18n/locales/en.json b/materialious/src/lib/i18n/locales/en.json index 0176424d..6fbc465e 100644 --- a/materialious/src/lib/i18n/locales/en.json +++ b/materialious/src/lib/i18n/locales/en.json @@ -15,6 +15,7 @@ "videos": "videos", "cancel": "Cancel", "create": "Create", + "backend": "Backend", "filters": { "filters": "Filters", "type": "Type", diff --git a/materialious/src/lib/store.ts b/materialious/src/lib/store.ts index 9dcf1856..fe437ccd 100644 --- a/materialious/src/lib/store.ts +++ b/materialious/src/lib/store.ts @@ -24,8 +24,8 @@ import type { VideoBase, VideoPlay } from './api/model'; -import { ensureNoTrailingSlash } from './misc'; import type { PhasedDescription } from './description'; +import { ensureNoTrailingSlash } from './misc'; function createListenerFunctions(): { callListeners: (eventKey: string, newValue: any) => void; @@ -101,6 +101,12 @@ export const instanceStore: Writable = persist( 'invidiousInstance' ); +export const backendInUseStore: Writable<'ivg' | 'yt'> = persist( + writable('ivg'), + createStorage(), + 'backendInUse' +); + export const authStore: Writable = persist( writable(null), createStorage(),