From 2c84c03cafe51508d032cb8c61756f3ed3b6d267 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Thu, 5 Mar 2026 13:10:29 +1300 Subject: [PATCH] Implemented auto load option --- .../lib/components/settings/Filters.svelte | 69 +++++++++++++++++-- .../src/lib/externalSettings/settings.ts | 14 +++- materialious/src/lib/filtering/index.ts | 2 +- materialious/src/lib/i18n/locales/en.json | 3 +- materialious/src/lib/store.ts | 12 ++++ materialious/src/routes/+layout.ts | 22 +++++- 6 files changed, 113 insertions(+), 9 deletions(-) diff --git a/materialious/src/lib/components/settings/Filters.svelte b/materialious/src/lib/components/settings/Filters.svelte index 78904f1e..d7761e8c 100644 --- a/materialious/src/lib/components/settings/Filters.svelte +++ b/materialious/src/lib/components/settings/Filters.svelte @@ -3,10 +3,16 @@ import { ChannelSchema, VideoSchema, type SchemaStructure } from '$lib/filtering/schemas'; import { _ } from '$lib/i18n'; import { titleCase, camelCaseToHuman } from '$lib/letterCasing'; - import { filterContentListStore } from '$lib/store'; + import { + filterContentListStore, + filterContentUrlAutoUpdateStore, + filterContentUrlStore + } from '$lib/store'; import type z from 'zod'; + import { addToast } from '../Toast.svelte'; + import { Clipboard } from '@capacitor/clipboard'; - let remoteFilterListUrl: string = $state(''); + let remoteFilterListUrl: string = $state($filterContentUrlStore ?? ''); let remoteError: string = $state(''); type FilterType = 'channel' | 'video'; @@ -33,11 +39,33 @@ try { contentFilters = await loadContentFilterFromURL(remoteFilterListUrl); filterContentListStore.set(contentFilters); + filterContentUrlStore.set(remoteFilterListUrl); + filterContentUrlAutoUpdateStore.set(false); } catch (errorMsg) { remoteError = (errorMsg as Error).message; } } + async function exportAsJSON() { + await Clipboard.write({ + string: JSON.stringify( + { + version: 'v1', + createdFor: 'materialious', + filterBy: contentFilters + }, + null, + 2 + ) + }); + + addToast({ + data: { + text: $_('player.share.copiedSuccess') + } + }); + } + function addFilter(type: FilterType) { if (!contentFilters) contentFilters = []; @@ -58,6 +86,10 @@ } +
+

{$_('layout.backendEngine.warning')}

+
+