-
Notifications
You must be signed in to change notification settings - Fork 528
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Feat/plugin system improvement (#8080)
* refactor: handleRowSelection method in PluginListComponent * feat: added status updates and notifications for plugin events, refactored plugin listener and notification services, and updated plugin components to handle new status updates * refactor desktop menu and plugin system: update imports, add plugin event manager, and modify plugin manager and plugin interfaces (cherry picked from commit 8edb57d) (cherry picked from commit 10a24572db7829ffbd53f05d3b5675c38a7b6a5b)
- Loading branch information
Showing
9 changed files
with
184 additions
and
33 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
29 changes: 29 additions & 0 deletions
29
packages/desktop-libs/src/lib/plugin-system/events/plugin-event.manager.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import EventEmitter from 'events'; | ||
|
||
export enum PluginEvent { | ||
NOTIFY = 'on::plugin::notify' | ||
} | ||
|
||
export class PluginEventManager extends EventEmitter { | ||
private static _instance: PluginEventManager; | ||
|
||
private constructor() { | ||
super(); | ||
this.removeAllListeners(PluginEvent.NOTIFY); | ||
} | ||
|
||
public static getInstance(): PluginEventManager { | ||
if (!this._instance) { | ||
this._instance = new PluginEventManager(); | ||
} | ||
return PluginEventManager._instance; | ||
} | ||
|
||
public notify(message?: string): void { | ||
this.emit(PluginEvent.NOTIFY, message); | ||
} | ||
|
||
public listen<T>(listener: (message?: string) => T) { | ||
this.on(PluginEvent.NOTIFY, listener.bind(this)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 5 additions & 4 deletions
9
packages/desktop-libs/src/lib/plugin-system/shared/interfaces/plugin.interface.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,10 @@ | ||
export interface IPlugin { | ||
name: string; | ||
version: string; | ||
initialize(): void; | ||
dispose(): void; | ||
activate(): void; | ||
deactivate(): void; | ||
initialize(): Promise<void> | void; | ||
dispose(): Promise<void> | void; | ||
activate(): Promise<void> | void; | ||
deactivate(): Promise<void> | void; | ||
component?(): void; | ||
menu?: Electron.MenuItemConstructorOptions; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.