@@ -138,23 +82,6 @@
/>
-
- {#if $invidiousAuthStore && $invidiousInstanceStore}
- {$_('layout.backendEngine.importExport')}
-
-
-
-
-
-
-
- {/if}
{:else}
{$_('layout.backendEngine.fallbacks')}
{#each engineFallbacks as fallback (fallback)}
diff --git a/materialious/src/lib/components/settings/ExportImport.svelte b/materialious/src/lib/components/settings/ExportImport.svelte
index 708d0e4e..c2d345de 100644
--- a/materialious/src/lib/components/settings/ExportImport.svelte
+++ b/materialious/src/lib/components/settings/ExportImport.svelte
@@ -2,10 +2,64 @@
import { _ } from '$lib/i18n';
import { exportSubscriptionsAsFile, importSubscriptionsFromFile } from '$lib/importExport';
import { addToast, toaster } from '../Toast.svelte';
+ import { getSubscriptions } from '$lib/api';
+ import { importSubscriptions } from '$lib/importExport';
+ import { postSubscribeInvidious } from '$lib/api/invidious/subscribe';
+ import { getSubscriptionsInvidious } from '$lib/api/invidious/feed';
+ import { backendInUseStore, invidiousAuthStore, invidiousInstanceStore } from '$lib/store';
+
+ async function importInvidiousSubs() {
+ const importedSubs = await getSubscriptionsInvidious();
+
+ addToast({
+ data: {
+ text: $_('layout.backendEngine.importingToMaterialious')
+ },
+ id: 'import-to-materialious',
+ closeDelay: 0
+ });
+
+ await importSubscriptions(importedSubs);
+
+ toaster.removeToast('import-to-materialious');
+
+ addToast({
+ data: {
+ text: $_('layout.backendEngine.importingToMaterialiousFinished')
+ }
+ });
+ }
+
+ async function exportMaterialiousSubs() {
+ const subs = await getSubscriptions();
+
+ addToast({
+ data: {
+ text: $_('layout.backendEngine.exportingToInvidious')
+ },
+ id: 'export-to-invidious',
+ closeDelay: 0
+ });
+
+ const subPromises: Promise[] = [];
+ for (const sub of subs) {
+ subPromises.push(postSubscribeInvidious(sub.authorId));
+ }
+
+ await Promise.all(subPromises);
+
+ toaster.removeToast('export-to-invidious');
+
+ addToast({
+ data: {
+ text: $_('layout.backendEngine.exportingToInvidiousFinished')
+ }
+ });
+ }
-