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)
}
// Main message listener
// @ts-ignore
browser.runtime.onMessage.addListener((request: any, _: any, sendResponse: (response?: any) => void) => {
switch (request.type) {
@@ -38,7 +38,7 @@ browser.runtime.onMessage.addListener((request: any, _: any, sendResponse: (resp
sendResponse(response);
});
});
return true; // Keep message channel open for async response
return true;
case 'githubTab':
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');
}
return true;
return false;
});
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.storage.local.remove(['justupdated']);
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 });
migrateLegacySettings();
}
});
+1 -1
View File
@@ -26,4 +26,4 @@ if (!mountPoint) {
}
InjectCustomIcons()
renderSvelte(Settings, mountPoint)
renderSvelte(Settings, mountPoint, { standalone: true })
+1
View File
@@ -59,6 +59,7 @@
if (!standalone) return;
initializeSettingsState();
console.log('settingsState', $settingsState);
StandaloneStore.setStandalone(true);
});
</script>
+7 -4
View File
@@ -1,8 +1,6 @@
export interface SettingsState {
DarkMode: boolean;
selectedTheme: string;
animatedbk: boolean;
bksliderinput: string;
customshortcuts: CustomShortcut[];
defaultmenuorder: any[];
lessonalert: boolean;
@@ -37,9 +35,14 @@ export interface SettingsState {
defaultPage: string;
devMode?: boolean;
originalDarkMode?: boolean;
assessmentsAverage?: boolean;
lettergrade: boolean;
newsSource?: string;
// depreciated keys
animatedbk: boolean;
bksliderinput: string;
lettergrade: boolean;
assessmentsAverage?: boolean;
notificationCollector?: boolean;
}
interface ToggleItem {