From 9d7dab84f19ee88327d7a0722fbedb765efb0ae6 Mon Sep 17 00:00:00 2001 From: SethBurkart123 Date: Fri, 14 Feb 2025 18:04:38 +1100 Subject: [PATCH] feat: remove background migration --- src/SEQTA.ts | 4 - src/seqta/ui/themes/downloadTheme.ts | 6 +- src/seqta/utils/migrateBackgrounds.ts | 127 -------------------------- 3 files changed, 3 insertions(+), 134 deletions(-) delete mode 100644 src/seqta/utils/migrateBackgrounds.ts diff --git a/src/SEQTA.ts b/src/SEQTA.ts index 3f704b1b..7c7c11b9 100644 --- a/src/SEQTA.ts +++ b/src/SEQTA.ts @@ -38,7 +38,6 @@ import documentLoadCSS from '@/css/documentload.scss?inline' import renderSvelte from '@/interface/main' import Settings from '@/interface/pages/settings.svelte' import { settingsPopup } from './interface/hooks/SettingsPopup' -import { migrateBackgrounds } from './seqta/utils/migrateBackgrounds' let SettingsClicked = false export let MenuOptionsOpen = false @@ -546,10 +545,7 @@ export async function finishLoad() { if (settingsState.justupdated && !document.getElementById('whatsnewbk')) { OpenWhatsNewPopup(); - - /* Background Migration script */ } - migrateBackgrounds(); } async function DeleteWhatsNew() { diff --git a/src/seqta/ui/themes/downloadTheme.ts b/src/seqta/ui/themes/downloadTheme.ts index 763e210d..b3b648bc 100644 --- a/src/seqta/ui/themes/downloadTheme.ts +++ b/src/seqta/ui/themes/downloadTheme.ts @@ -49,14 +49,14 @@ export const StoreDownloadTheme = async (theme: { themeContent: Theme }) => { export const InstallTheme = async (themeData: ThemeContent) => { const strippedCoverImage = stripBase64Prefix(themeData.coverImage); - console.log('1!') + const coverImageBlob = base64ToBlob(strippedCoverImage); - console.log('2!') + const images = themeData.images.map((image) => ({ ...image, blob: base64ToBlob(stripBase64Prefix(image.data)) })); - console.log('3!') + let availableThemes = await localforage.getItem('customThemes') as string[]; if (availableThemes && !availableThemes.includes(themeData.id)) { availableThemes.push(themeData.id); diff --git a/src/seqta/utils/migrateBackgrounds.ts b/src/seqta/utils/migrateBackgrounds.ts deleted file mode 100644 index f2b36694..00000000 --- a/src/seqta/utils/migrateBackgrounds.ts +++ /dev/null @@ -1,127 +0,0 @@ -import browser from 'webextension-polyfill'; -import base64ToBlob from './base64ToBlob'; -import { openDatabase, writeData } from '@/interface/hooks/BackgroundDataLoader'; -import { backgroundUpdates } from '@/interface/hooks/BackgroundUpdates'; -import { loadBackground } from '@/seqta/ui/ImageBackgrounds'; - -const MIGRATION_STATE_KEY = 'background_migration_state'; - -interface MigrationState { - lastProcessedId: string | null; - total: number; - processed: number; - completed: boolean; -} - -export const migrateBackgrounds = async (): Promise => { - console.info('Migrating backgrounds...'); - - const savedState = localStorage.getItem(MIGRATION_STATE_KEY); - const migrationState: MigrationState = savedState - ? JSON.parse(savedState) - : { lastProcessedId: null, total: 0, processed: 0, completed: false }; - - if (migrationState.completed) { - console.info('Migration already completed'); - return; - } - - return new Promise((resolve, reject) => { - const iframe = document.createElement('iframe'); - iframe.style.display = 'none'; - - const handleMessage = async (event: MessageEvent) => { - if (event.source !== iframe.contentWindow) return; - - switch (event.data.type) { - case 'GET_LAST_PROCESSED_ID': - iframe.contentWindow?.postMessage({ - type: 'LAST_PROCESSED_ID', - id: migrationState.lastProcessedId - }, '*'); - break; - - case 'BACKGROUND_DATA': - try { - const { id, data, mediaType, total, processed, isSelected } = event.data.payload; - const mimeType = mediaType === 'image' ? 'image/png' : 'video/mp4'; - const blob = base64ToBlob(data, mimeType); - - await storeBackground({ - id, - blob, - type: mediaType - }); - - if (isSelected) { - localStorage.setItem('selectedBackground', id); - await loadBackground(); - } - - migrationState.lastProcessedId = id; - migrationState.total = total; - migrationState.processed = processed; - localStorage.setItem(MIGRATION_STATE_KEY, JSON.stringify(migrationState)); - - console.log(`Migrated background: ${id} (${processed}/${total})`); - } catch (error) { - console.error('Error handling background data:', error); - } - break; - - case 'MIGRATION_COMPLETE': - console.info('Migration completed successfully'); - migrationState.completed = true; - localStorage.setItem(MIGRATION_STATE_KEY, JSON.stringify(migrationState)); - window.removeEventListener('message', handleMessage); - iframe.remove(); - backgroundUpdates.triggerUpdate(); - resolve(); - break; - - case 'MIGRATION_ERROR': - console.error('Migration failed:', event.data.error); - window.removeEventListener('message', handleMessage); - iframe.remove(); - reject(new Error(event.data.error)); - break; - } - }; - - window.addEventListener('message', handleMessage); - - const startPinging = () => { - const pingInterval = setInterval(() => { - iframe.contentWindow?.postMessage({ type: 'PING' }, '*'); - }, 500); - - const messageHandler = (event: MessageEvent) => { - if (event.source === iframe.contentWindow) { - clearInterval(pingInterval); - window.removeEventListener('message', messageHandler); - iframe.contentWindow?.postMessage({ type: 'START_MIGRATION' }, '*'); - } - }; - - window.addEventListener('message', messageHandler); - }; - - iframe.src = browser.runtime.getURL('seqta/utils/migration/migrate.html'); - document.body.appendChild(iframe); - startPinging(); - }); -}; - -const storeBackground = async (data: { - id: string; - blob: Blob; - type: 'image' | 'video'; -}): Promise => { - try { - await openDatabase(); - await writeData(data.id, data.type, data.blob); - } catch (error) { - console.error('Error storing background:', error); - throw error; - } -}; \ No newline at end of file