From 6423c14c71a04bfa15a4289d7a51ff876d2232f8 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 8 Aug 2020 18:25:55 +0800 Subject: Add observable api for subscription hub. --- Timeline/ClientApp/src/app/data/SubscriptionHub.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'Timeline/ClientApp/src') diff --git a/Timeline/ClientApp/src/app/data/SubscriptionHub.ts b/Timeline/ClientApp/src/app/data/SubscriptionHub.ts index 8a74c939..24f1885d 100644 --- a/Timeline/ClientApp/src/app/data/SubscriptionHub.ts +++ b/Timeline/ClientApp/src/app/data/SubscriptionHub.ts @@ -1,4 +1,5 @@ import { pull } from 'lodash'; +import { Observable } from 'rxjs'; export type Subscriber = (data: TData) => void; @@ -155,6 +156,17 @@ export class SubscriptionHub return line.subscribe(subscriber); } + getObservable(key: TKey): Observable { + return new Observable((observer) => { + const sub = this.subscribe(key, (data) => { + observer.next(data); + }); + return () => { + sub.unsubscribe(); + }; + }); + } + getLine(key: TKey): ISubscriptionLine | null { const keyString = this.keyToString(key); return this.subscriptionLineMap.get(keyString)?.line ?? null; -- cgit v1.2.3