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