From 5d66ede2ea1e73ba0ad8bf949bd74992e7a78582 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 6 Apr 2018 15:33:38 -0400 Subject: [PATCH] move broadcaster to jslib --- src/angular/services/broadcaster.service.ts | 33 +++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/angular/services/broadcaster.service.ts diff --git a/src/angular/services/broadcaster.service.ts b/src/angular/services/broadcaster.service.ts new file mode 100644 index 0000000000..fe747e7b0b --- /dev/null +++ b/src/angular/services/broadcaster.service.ts @@ -0,0 +1,33 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class BroadcasterService { + subscribers: Map any> = new Map any>(); + + send(message: any, id?: string) { + if (id != null) { + if (this.subscribers.has(id)) { + this.subscribers.get(id)(message); + } + return; + } + + this.subscribers.forEach((value) => { + value(message); + }); + } + + subscribe(id: string, messageCallback: (message: any) => any) { + if (this.subscribers.has(id)) { + return; + } + + this.subscribers.set(id, messageCallback); + } + + unsubscribe(id: string) { + if (this.subscribers.has(id)) { + this.subscribers.delete(id); + } + } +}