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();
}
});