From 28b4ea55d868df56868e9d02f30be193f1899dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Wed, 15 Mar 2023 20:17:52 +0100 Subject: [PATCH] make observer re-subscribe on hostConnected if unsubscribed by hostDisconnected --- .../libs/observable-api/observer.controller.ts | 4 ---- .../libs/observable-api/observer.ts | 13 +++++++++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts index 38f51421cc..cc223e1d48 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.controller.ts @@ -22,8 +22,4 @@ export class UmbObserverController extends UmbObserver implement host.addController(this); } - - hostConnected() { - return; - } } diff --git a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts index bf7210c284..0ce9ce6fef 100644 --- a/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts +++ b/src/Umbraco.Web.UI.Client/libs/observable-api/observer.ts @@ -1,15 +1,20 @@ import { Observable, Subscription } from 'rxjs'; export class UmbObserver { + #source!: Observable; + #callback!: (_value: T) => void; #subscription!: Subscription; constructor(source: Observable, callback: (_value: T) => void) { - this.#subscription = source.subscribe((value) => { - callback(value); - }); + this.#source = source; + this.#subscription = source.subscribe(callback); } - // Notice controller class implements empty hostConnected(). + hostConnected() { + if (this.#subscription.closed) { + this.#subscription = this.#source.subscribe(this.#callback); + } + } hostDisconnected() { this.#subscription.unsubscribe();