From 6ac54eae4b020eb89525f87173da3811e769cf6c Mon Sep 17 00:00:00 2001 From: SethBurkart123 Date: Sat, 3 May 2025 20:17:53 +1000 Subject: [PATCH] feat: add default enabled toggle --- src/plugins/built-in/globalSearch/src/core/index.ts | 1 + src/plugins/core/manager.ts | 9 +++++---- src/plugins/core/types.ts | 1 + src/plugins/index.ts | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/plugins/built-in/globalSearch/src/core/index.ts b/src/plugins/built-in/globalSearch/src/core/index.ts index 6fa61712..a27d0b1e 100644 --- a/src/plugins/built-in/globalSearch/src/core/index.ts +++ b/src/plugins/built-in/globalSearch/src/core/index.ts @@ -58,6 +58,7 @@ const globalSearchPlugin: Plugin = { version: "1.0.0", settings: settingsInstance.settings, disableToggle: true, + defaultEnabled: false, styles: styles, run: async (api) => { diff --git a/src/plugins/core/manager.ts b/src/plugins/core/manager.ts index c0b438ba..1bf55045 100644 --- a/src/plugins/core/manager.ts +++ b/src/plugins/core/manager.ts @@ -84,7 +84,7 @@ export class PluginManager { if (plugin.disableToggle) { const settings = await browser.storage.local.get(`plugin.${pluginId}.settings`); const pluginSettings = settings[`plugin.${pluginId}.settings`] as PluginSettingsStorage | undefined; - const enabled = pluginSettings?.enabled ?? true; + const enabled = pluginSettings?.enabled ?? plugin.defaultEnabled ?? true; if (!enabled) { console.info(`Plugin "${pluginId}" is disabled, skipping initialization`); return; @@ -185,6 +185,7 @@ export class PluginManager { result.id = key; result.title = result.title || key; result.description = result.description || ''; + result.defaultEnabled = plugin.defaultEnabled ?? true; return [key, result]; }); @@ -196,7 +197,7 @@ export class PluginManager { title: plugin.name, description: plugin.description, type: 'boolean', - default: true + default: plugin.defaultEnabled ?? true } ]) } @@ -205,7 +206,7 @@ export class PluginManager { name: plugin.name, description: plugin.description, settings: Object.fromEntries(settingsEntries), - disableToggle: plugin.disableToggle + disableToggle: plugin.disableToggle, }; }); } @@ -258,7 +259,7 @@ export class PluginManager { if (!plugin?.disableToggle) continue; const enabled = (change.newValue as PluginSettingsStorage)?.enabled ?? true; - const wasEnabled = (change.oldValue as PluginSettingsStorage)?.enabled ?? true; + const wasEnabled = (change.oldValue as PluginSettingsStorage)?.enabled ?? plugin.defaultEnabled ?? true; if (enabled !== wasEnabled) { this.handlePluginStateChange(pluginId, enabled); diff --git a/src/plugins/core/types.ts b/src/plugins/core/types.ts index c5f48f01..03c2d732 100644 --- a/src/plugins/core/types.ts +++ b/src/plugins/core/types.ts @@ -98,5 +98,6 @@ export interface Plugin { settings: T; styles?: string; // Optional CSS styles for the plugin disableToggle?: boolean; // Optional flag to show/hide the plugin's enable/disable toggle in settings + defaultEnabled?: boolean; // Optional flag to set the plugin's default enabled state run: (api: PluginAPI) => void | Promise | (() => void) | Promise<(() => void)>; } \ No newline at end of file diff --git a/src/plugins/index.ts b/src/plugins/index.ts index 06db08b5..1dedf16f 100644 --- a/src/plugins/index.ts +++ b/src/plugins/index.ts @@ -7,7 +7,7 @@ import themesPlugin from './built-in/themes'; import animatedBackgroundPlugin from './built-in/animatedBackground'; import assessmentsAveragePlugin from './built-in/assessmentsAverage'; import globalSearchPlugin from './built-in/globalSearch/src/core'; -import testPlugin from './built-in/test'; +//import testPlugin from './built-in/test'; // Initialize plugin manager const pluginManager = PluginManager.getInstance(); @@ -19,7 +19,7 @@ pluginManager.registerPlugin(assessmentsAveragePlugin); pluginManager.registerPlugin(notificationCollectorPlugin); pluginManager.registerPlugin(timetablePlugin); pluginManager.registerPlugin(globalSearchPlugin); -pluginManager.registerPlugin(testPlugin); +//pluginManager.registerPlugin(testPlugin); export { init as Monofile } from './monofile';