mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 03:34:40 +00:00
feat: add auto migration
This commit is contained in:
+45
-4
@@ -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();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -26,4 +26,4 @@ if (!mountPoint) {
|
||||
}
|
||||
|
||||
InjectCustomIcons()
|
||||
renderSvelte(Settings, mountPoint)
|
||||
renderSvelte(Settings, mountPoint, { standalone: true })
|
||||
@@ -59,6 +59,7 @@
|
||||
|
||||
if (!standalone) return;
|
||||
initializeSettingsState();
|
||||
console.log('settingsState', $settingsState);
|
||||
StandaloneStore.setStandalone(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user