mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-05 19:24:39 +00:00
4c93bcd0d7
This change introduces JSDoc-style comments to several TypeScript files within your `src/interface` directory to improve code understanding and maintainability, focusing on hooks and utility functions. - `src/interface/hooks/BackgroundDataLoader.ts`: I added comments to all exported functions and the `BackgroundDB` interface, detailing IndexedDB interactions for background image storage. - `src/interface/hooks/SettingsPopup.ts`: I documented the public methods of the `SettingsPopup` singleton, which handles event notifications for settings popup closures. - `src/interface/utils/themeImageHandlers.ts`: I added comments to all exported functions, explaining their roles in managing images within custom themes (uploading, removing, etc.). - `src/interface/hooks/BackgroundUpdates.ts`: I documented the `BackgroundUpdates` singleton class and its methods, used for broadcasting generic background update events. - `src/interface/hooks/ThemeUpdates.ts`: I documented the `ThemeUpdates` singleton class and its methods, responsible for broadcasting theme-related update events.
57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
type ThemeUpdateCallback = () => void;
|
|
|
|
/**
|
|
* A singleton class used to notify listeners about theme-related updates.
|
|
* These updates can include events like theme changes, custom theme modifications,
|
|
* or any other event that might require UI components to refresh their appearance
|
|
* or re-apply theme styles.
|
|
*/
|
|
class ThemeUpdates {
|
|
private static instance: ThemeUpdates;
|
|
private listeners: Set<ThemeUpdateCallback> = new Set();
|
|
|
|
private constructor() {}
|
|
|
|
/**
|
|
* Gets the singleton instance of the ThemeUpdates class.
|
|
* @returns {ThemeUpdates} The singleton instance.
|
|
*/
|
|
public static getInstance(): ThemeUpdates {
|
|
if (!ThemeUpdates.instance) {
|
|
ThemeUpdates.instance = new ThemeUpdates();
|
|
}
|
|
return ThemeUpdates.instance;
|
|
}
|
|
|
|
/**
|
|
* Registers a callback function to be invoked when a theme update is triggered.
|
|
*
|
|
* @param {ThemeUpdateCallback} callback The function to call when a theme update occurs.
|
|
* This callback takes no arguments and returns void.
|
|
*/
|
|
public addListener(callback: ThemeUpdateCallback): void {
|
|
this.listeners.add(callback);
|
|
}
|
|
|
|
/**
|
|
* Unregisters a previously added callback function.
|
|
* After calling this method, the provided callback will no longer be invoked when a theme update is triggered.
|
|
*
|
|
* @param {ThemeUpdateCallback} callback The callback function to remove from the listeners.
|
|
*/
|
|
public removeListener(callback: ThemeUpdateCallback): void {
|
|
this.listeners.delete(callback);
|
|
}
|
|
|
|
/**
|
|
* Invokes all registered listener callbacks, signifying that a theme-related update has occurred.
|
|
* This method should be called whenever a change related to themes happens that requires
|
|
* other parts of the application to be notified.
|
|
*/
|
|
public triggerUpdate(): void {
|
|
this.listeners.forEach((callback) => callback());
|
|
}
|
|
}
|
|
|
|
export const themeUpdates = ThemeUpdates.getInstance();
|