mirror of
https://github.com/arduino/arduino-ide.git
synced 2025-06-15 16:46:32 +00:00
110 lines
3.1 KiB
TypeScript
110 lines
3.1 KiB
TypeScript
import { injectable } from '@theia/core/shared/inversify';
|
|
import type {
|
|
NotificationServiceServer,
|
|
NotificationServiceClient,
|
|
AttachedBoardsChangeEvent,
|
|
BoardsPackage,
|
|
LibraryPackage,
|
|
ConfigState,
|
|
Sketch,
|
|
ProgressMessage,
|
|
IndexUpdateWillStartParams,
|
|
IndexUpdateDidCompleteParams,
|
|
IndexUpdateDidFailParams,
|
|
} from '../common/protocol';
|
|
|
|
@injectable()
|
|
export class NotificationServiceServerImpl
|
|
implements NotificationServiceServer
|
|
{
|
|
private readonly clients: NotificationServiceClient[] = [];
|
|
|
|
notifyDidReinitialize(): void {
|
|
this.clients.forEach((client) => client.notifyDidReinitialize());
|
|
}
|
|
|
|
notifyIndexUpdateWillStart(params: IndexUpdateWillStartParams): void {
|
|
this.clients.forEach((client) => client.notifyIndexUpdateWillStart(params));
|
|
}
|
|
|
|
notifyIndexUpdateDidProgress(progressMessage: ProgressMessage): void {
|
|
this.clients.forEach((client) =>
|
|
client.notifyIndexUpdateDidProgress(progressMessage)
|
|
);
|
|
}
|
|
|
|
notifyIndexUpdateDidComplete(params: IndexUpdateDidCompleteParams): void {
|
|
this.clients.forEach((client) =>
|
|
client.notifyIndexUpdateDidComplete(params)
|
|
);
|
|
}
|
|
|
|
notifyIndexUpdateDidFail(params: IndexUpdateDidFailParams): void {
|
|
this.clients.forEach((client) => client.notifyIndexUpdateDidFail(params));
|
|
}
|
|
|
|
notifyDaemonDidStart(port: string): void {
|
|
this.clients.forEach((client) => client.notifyDaemonDidStart(port));
|
|
}
|
|
|
|
notifyDaemonDidStop(): void {
|
|
this.clients.forEach((client) => client.notifyDaemonDidStop());
|
|
}
|
|
|
|
notifyPlatformDidInstall(event: { item: BoardsPackage }): void {
|
|
this.clients.forEach((client) => client.notifyPlatformDidInstall(event));
|
|
}
|
|
|
|
notifyPlatformDidUninstall(event: { item: BoardsPackage }): void {
|
|
this.clients.forEach((client) => client.notifyPlatformDidUninstall(event));
|
|
}
|
|
|
|
notifyLibraryDidInstall(event: {
|
|
item: LibraryPackage | 'zip-install';
|
|
}): void {
|
|
this.clients.forEach((client) => client.notifyLibraryDidInstall(event));
|
|
}
|
|
|
|
notifyLibraryDidUninstall(event: { item: LibraryPackage }): void {
|
|
this.clients.forEach((client) => client.notifyLibraryDidUninstall(event));
|
|
}
|
|
|
|
notifyAttachedBoardsDidChange(event: AttachedBoardsChangeEvent): void {
|
|
this.clients.forEach((client) =>
|
|
client.notifyAttachedBoardsDidChange(event)
|
|
);
|
|
}
|
|
|
|
notifyConfigDidChange(event: ConfigState): void {
|
|
this.clients.forEach((client) => client.notifyConfigDidChange(event));
|
|
}
|
|
|
|
notifyRecentSketchesDidChange(event: { sketches: Sketch[] }): void {
|
|
this.clients.forEach((client) =>
|
|
client.notifyRecentSketchesDidChange(event)
|
|
);
|
|
}
|
|
|
|
setClient(client: NotificationServiceClient): void {
|
|
this.clients.push(client);
|
|
}
|
|
|
|
disposeClient(client: NotificationServiceClient): void {
|
|
const index = this.clients.indexOf(client);
|
|
if (index === -1) {
|
|
console.warn(
|
|
'Could not dispose notification service client. It was not registered.'
|
|
);
|
|
return;
|
|
}
|
|
this.clients.splice(index, 1);
|
|
}
|
|
|
|
dispose(): void {
|
|
for (const client of this.clients) {
|
|
this.disposeClient(client);
|
|
}
|
|
this.clients.length = 0;
|
|
}
|
|
}
|