mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-05-12 16:08:42 +00:00
140 lines
4.5 KiB
TypeScript
140 lines
4.5 KiB
TypeScript
import {
|
|
inject,
|
|
injectable,
|
|
postConstruct,
|
|
} from '@theia/core/shared/inversify';
|
|
import { Emitter } from '@theia/core/lib/common/event';
|
|
import { JsonRpcProxy } from '@theia/core/lib/common/messaging/proxy-factory';
|
|
import { DisposableCollection } from '@theia/core/lib/common/disposable';
|
|
import { FrontendApplicationContribution } from '@theia/core/lib/browser/frontend-application';
|
|
import {
|
|
NotificationServiceClient,
|
|
NotificationServiceServer,
|
|
} from '../common/protocol/notification-service';
|
|
import {
|
|
AttachedBoardsChangeEvent,
|
|
BoardsPackage,
|
|
LibraryPackage,
|
|
Config,
|
|
Sketch,
|
|
} from '../common/protocol';
|
|
import {
|
|
FrontendApplicationStateService,
|
|
FrontendApplicationState,
|
|
} from '@theia/core/lib/browser/frontend-application-state';
|
|
|
|
@injectable()
|
|
export class NotificationCenter
|
|
implements NotificationServiceClient, FrontendApplicationContribution
|
|
{
|
|
@inject(NotificationServiceServer)
|
|
protected readonly server: JsonRpcProxy<NotificationServiceServer>;
|
|
|
|
@inject(FrontendApplicationStateService)
|
|
private readonly appStateService: FrontendApplicationStateService;
|
|
|
|
protected readonly indexUpdatedEmitter = new Emitter<void>();
|
|
protected readonly daemonStartedEmitter = new Emitter<string>();
|
|
protected readonly daemonStoppedEmitter = new Emitter<void>();
|
|
protected readonly configChangedEmitter = new Emitter<{
|
|
config: Config | undefined;
|
|
}>();
|
|
protected readonly platformInstalledEmitter = new Emitter<{
|
|
item: BoardsPackage;
|
|
}>();
|
|
protected readonly platformUninstalledEmitter = new Emitter<{
|
|
item: BoardsPackage;
|
|
}>();
|
|
protected readonly libraryInstalledEmitter = new Emitter<{
|
|
item: LibraryPackage;
|
|
}>();
|
|
protected readonly libraryUninstalledEmitter = new Emitter<{
|
|
item: LibraryPackage;
|
|
}>();
|
|
protected readonly attachedBoardsChangedEmitter =
|
|
new Emitter<AttachedBoardsChangeEvent>();
|
|
protected readonly recentSketchesChangedEmitter = new Emitter<{
|
|
sketches: Sketch[];
|
|
}>();
|
|
private readonly onAppStateDidChangeEmitter =
|
|
new Emitter<FrontendApplicationState>();
|
|
|
|
protected readonly toDispose = new DisposableCollection(
|
|
this.indexUpdatedEmitter,
|
|
this.daemonStartedEmitter,
|
|
this.daemonStoppedEmitter,
|
|
this.configChangedEmitter,
|
|
this.platformInstalledEmitter,
|
|
this.platformUninstalledEmitter,
|
|
this.libraryInstalledEmitter,
|
|
this.libraryUninstalledEmitter,
|
|
this.attachedBoardsChangedEmitter
|
|
);
|
|
|
|
readonly onIndexUpdated = this.indexUpdatedEmitter.event;
|
|
readonly onDaemonStarted = this.daemonStartedEmitter.event;
|
|
readonly onDaemonStopped = this.daemonStoppedEmitter.event;
|
|
readonly onConfigChanged = this.configChangedEmitter.event;
|
|
readonly onPlatformInstalled = this.platformInstalledEmitter.event;
|
|
readonly onPlatformUninstalled = this.platformUninstalledEmitter.event;
|
|
readonly onLibraryInstalled = this.libraryInstalledEmitter.event;
|
|
readonly onLibraryUninstalled = this.libraryUninstalledEmitter.event;
|
|
readonly onAttachedBoardsChanged = this.attachedBoardsChangedEmitter.event;
|
|
readonly onRecentSketchesChanged = this.recentSketchesChangedEmitter.event;
|
|
readonly onAppStateDidChange = this.onAppStateDidChangeEmitter.event;
|
|
|
|
@postConstruct()
|
|
protected init(): void {
|
|
this.server.setClient(this);
|
|
this.toDispose.push(
|
|
this.appStateService.onStateChanged((state) =>
|
|
this.onAppStateDidChangeEmitter.fire(state)
|
|
)
|
|
);
|
|
}
|
|
|
|
onStop(): void {
|
|
this.toDispose.dispose();
|
|
}
|
|
|
|
notifyIndexUpdated(): void {
|
|
this.indexUpdatedEmitter.fire();
|
|
}
|
|
|
|
notifyDaemonStarted(port: string): void {
|
|
this.daemonStartedEmitter.fire(port);
|
|
}
|
|
|
|
notifyDaemonStopped(): void {
|
|
this.daemonStoppedEmitter.fire();
|
|
}
|
|
|
|
notifyConfigChanged(event: { config: Config | undefined }): void {
|
|
this.configChangedEmitter.fire(event);
|
|
}
|
|
|
|
notifyPlatformInstalled(event: { item: BoardsPackage }): void {
|
|
this.platformInstalledEmitter.fire(event);
|
|
}
|
|
|
|
notifyPlatformUninstalled(event: { item: BoardsPackage }): void {
|
|
this.platformUninstalledEmitter.fire(event);
|
|
}
|
|
|
|
notifyLibraryInstalled(event: { item: LibraryPackage }): void {
|
|
this.libraryInstalledEmitter.fire(event);
|
|
}
|
|
|
|
notifyLibraryUninstalled(event: { item: LibraryPackage }): void {
|
|
this.libraryUninstalledEmitter.fire(event);
|
|
}
|
|
|
|
notifyAttachedBoardsChanged(event: AttachedBoardsChangeEvent): void {
|
|
this.attachedBoardsChangedEmitter.fire(event);
|
|
}
|
|
|
|
notifyRecentSketchesChanged(event: { sketches: Sketch[] }): void {
|
|
this.recentSketchesChangedEmitter.fire(event);
|
|
}
|
|
}
|