feat: add auto migration

This commit is contained in:
SethBurkart123
2025-03-31 18:27:53 +11:00
parent a4033862c9
commit e928399066
4 changed files with 54 additions and 9 deletions
+45 -4
View File
@@ -14,7 +14,7 @@ function reloadSeqtaPages() {
result.then(open, console.error) result.then(open, console.error)
} }
// Main message listener // @ts-ignore
browser.runtime.onMessage.addListener((request: any, _: any, sendResponse: (response?: any) => void) => { browser.runtime.onMessage.addListener((request: any, _: any, sendResponse: (response?: any) => void) => {
switch (request.type) { switch (request.type) {
@@ -38,7 +38,7 @@ browser.runtime.onMessage.addListener((request: any, _: any, sendResponse: (resp
sendResponse(response); sendResponse(response);
}); });
}); });
return true; // Keep message channel open for async response return true;
case 'githubTab': case 'githubTab':
browser.tabs.create({ url: 'github.com/BetterSEQTA/BetterSEQTA-Plus' }); browser.tabs.create({ url: 'github.com/BetterSEQTA/BetterSEQTA-Plus' });
@@ -56,7 +56,7 @@ browser.runtime.onMessage.addListener((request: any, _: any, sendResponse: (resp
console.log('Unknown request type'); console.log('Unknown request type');
} }
return true; return false;
}); });
const DefaultValues: SettingsState = { const DefaultValues: SettingsState = {
@@ -154,11 +154,52 @@ function SetStorageValue(object: any) {
} }
} }
async function migrateLegacySettings() {
const storage = await browser.storage.local.get(null) as unknown as SettingsState;
// Animated Background Migration
if ('animatedbk' in storage || 'bksliderinput' in storage) {
const animatedSettings = {
enabled: storage.animatedbk ?? true,
speed: storage.bksliderinput ? parseFloat(storage.bksliderinput) / 100 * 2 : 1
};
await browser.storage.local.set({ 'plugin.animated-background.settings': animatedSettings });
}
// Assessments Average Migration
if ('assessmentsAverage' in storage || 'lettergrade' in storage) {
const assessmentsSettings = {
enabled: storage.assessmentsAverage ?? true,
lettergrade: storage.lettergrade ?? false
};
await browser.storage.local.set({ 'plugin.assessments-average.settings': assessmentsSettings });
}
if ('selectedTheme' in storage) {
const themesSettings = { enabled: true };
await browser.storage.local.set({ 'plugin.themes.settings': themesSettings });
}
if (storage.notificationCollector !== false) {
await browser.storage.local.set({ 'plugin.notificationCollector.settings': { enabled: true } });
} else {
await browser.storage.local.set({ 'plugin.notificationCollector.settings': { enabled: false } });
}
const keysToRemove = [
'animatedbk',
'bksliderinput',
'assessmentsAverage',
'lettergrade'
];
await browser.storage.local.remove(keysToRemove);
}
browser.runtime.onInstalled.addListener(function (event) { browser.runtime.onInstalled.addListener(function (event) {
browser.storage.local.remove(['justupdated']); browser.storage.local.remove(['justupdated']);
browser.storage.local.remove(['data']); browser.storage.local.remove(['data']);
if ( event.reason == 'install', event.reason == 'update' ) { if ( event.reason == 'install' || event.reason == 'update' ) {
browser.storage.local.set({ justupdated: true }); browser.storage.local.set({ justupdated: true });
migrateLegacySettings();
} }
}); });
+1 -1
View File
@@ -26,4 +26,4 @@ if (!mountPoint) {
} }
InjectCustomIcons() InjectCustomIcons()
renderSvelte(Settings, mountPoint) renderSvelte(Settings, mountPoint, { standalone: true })
+1
View File
@@ -59,6 +59,7 @@
if (!standalone) return; if (!standalone) return;
initializeSettingsState(); initializeSettingsState();
console.log('settingsState', $settingsState);
StandaloneStore.setStandalone(true); StandaloneStore.setStandalone(true);
}); });
</script> </script>
+7 -4
View File
@@ -1,8 +1,6 @@
export interface SettingsState { export interface SettingsState {
DarkMode: boolean; DarkMode: boolean;
selectedTheme: string; selectedTheme: string;
animatedbk: boolean;
bksliderinput: string;
customshortcuts: CustomShortcut[]; customshortcuts: CustomShortcut[];
defaultmenuorder: any[]; defaultmenuorder: any[];
lessonalert: boolean; lessonalert: boolean;
@@ -37,9 +35,14 @@ export interface SettingsState {
defaultPage: string; defaultPage: string;
devMode?: boolean; devMode?: boolean;
originalDarkMode?: boolean; originalDarkMode?: boolean;
assessmentsAverage?: boolean;
lettergrade: boolean;
newsSource?: string; newsSource?: string;
// depreciated keys
animatedbk: boolean;
bksliderinput: string;
lettergrade: boolean;
assessmentsAverage?: boolean;
notificationCollector?: boolean;
} }
interface ToggleItem { interface ToggleItem {