feat: build themes into a centralised plugin

This commit is contained in:
SethBurkart123
2025-03-27 21:31:41 +11:00
parent 64bf1d88e8
commit f0c5b1dace
10 changed files with 877 additions and 264 deletions
+15 -19
View File
@@ -3,20 +3,16 @@ import browser from 'webextension-polyfill'
import { closeExtensionPopup } from "@/seqta/utils/Closers/closeExtensionPopup"
import { MenuOptionsOpen, OpenMenuOptions } from "@/seqta/utils/Openers/OpenMenuOptions"
import { deleteTheme } from '@/seqta/ui/themes/deleteTheme';
import { getAvailableThemes } from '@/seqta/ui/themes/getAvailableThemes';
import { saveTheme } from '@/seqta/ui/themes/saveTheme';
import { UpdateThemePreview } from '@/seqta/ui/themes/UpdateThemePreview';
import { getTheme } from '@/seqta/ui/themes/getTheme';
import { setTheme } from '@/seqta/ui/themes/setTheme';
import { disableTheme } from '@/seqta/ui/themes/disableTheme';
import { CloseThemeCreator, OpenThemeCreator } from '@/seqta/ui/ThemeCreator';
import ShareTheme from '@/seqta/ui/themes/shareTheme';
import sendThemeUpdate from '@/seqta/utils/sendThemeUpdate';
import hideSensitiveContent from '@/seqta/ui/dev/hideSensitiveContent';
import { ThemeManager } from '@/plugins/built-in/themes/theme-manager';
const themeManager = ThemeManager.getInstance();
export class MessageHandler {
constructor() {
// @ts-ignore
browser.runtime.onMessage.addListener(this.routeMessage.bind(this));
}
routeMessage(request: any, _sender: any, sendResponse: any) {
@@ -32,46 +28,46 @@ export class MessageHandler {
case 'UpdateThemePreview':
if (request?.save == true) {
const save = async () => {
await saveTheme(request.body)
await themeManager.saveTheme(request.body)
if (request.body.enableTheme) {
await setTheme(request.body.id)
await themeManager.setTheme(request.body.id)
}
sendResponse({ status: 'success' })
sendThemeUpdate()
}
save()
} else {
UpdateThemePreview(request.body);
themeManager.updatePreview(request.body);
sendResponse({ status: 'success' });
}
return true;
case 'GetTheme':
getTheme(request.body.themeID).then((theme) => {
themeManager.getTheme(request.body.themeID).then((theme) => {
sendResponse(theme);
});
return true;
case 'SetTheme':
setTheme(request.body.themeID).then(() => {
themeManager.setTheme(request.body.themeID).then(() => {
sendResponse({ status: 'success' });
});
break;
case 'DisableTheme':
disableTheme().then(() => {
themeManager.disableTheme().then(() => {
sendResponse({ status: 'success' });
});
break;
case 'DeleteTheme':
deleteTheme(request.body.themeID).then(() => {
themeManager.deleteTheme(request.body.themeID).then(() => {
sendResponse({ status: 'success' });
});
break;
case 'ListThemes':
getAvailableThemes().then((themes) => {
themeManager.getAvailableThemes().then((themes) => {
sendResponse(themes);
});
return true;
@@ -84,7 +80,7 @@ export class MessageHandler {
break;
case 'ShareTheme':
ShareTheme(request.body.themeID).then((id) => {
themeManager.shareTheme(request.body.themeID).then((id) => {
sendResponse({ status: 'success', id });
});
return true;
@@ -105,8 +101,8 @@ export class MessageHandler {
break;
default:
console.debug('Unknown request info:', request.info);
}
console.debug('Unknown request info:', request.info);
}
}
editSidebar() {