From d594c8e7ea4f5421868f4e571446ee7d1948eb06 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Thu, 27 Jul 2023 11:39:43 +0200 Subject: [PATCH] cancel any old subscription if the language changes --- .../localization-api/registry/translation.registry.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/libs/localization-api/registry/translation.registry.ts b/src/Umbraco.Web.UI.Client/src/libs/localization-api/registry/translation.registry.ts index c5d76e949e..0c093e1892 100644 --- a/src/Umbraco.Web.UI.Client/src/libs/localization-api/registry/translation.registry.ts +++ b/src/Umbraco.Web.UI.Client/src/libs/localization-api/registry/translation.registry.ts @@ -1,6 +1,6 @@ import { hasDefaultExport, loadExtension } from '@umbraco-cms/backoffice/extension-api'; import { UmbBackofficeExtensionRegistry } from '@umbraco-cms/backoffice/extension-registry'; -import { ReplaySubject } from '@umbraco-cms/backoffice/external/rxjs'; +import { ReplaySubject, Subscription } from '@umbraco-cms/backoffice/external/rxjs'; export type UmbTranslationDictionary = Map; @@ -8,6 +8,7 @@ export class UmbTranslationRegistry { #extensionRegistry; #innerDictionary = new ReplaySubject(1); #innerDictionaryValue: UmbTranslationDictionary = new Map(); + #subscription?: Subscription; constructor(umbExtensionRegistry: UmbBackofficeExtensionRegistry) { this.#extensionRegistry = umbExtensionRegistry; @@ -21,8 +22,13 @@ export class UmbTranslationRegistry { // Reset the inner dictionary. this.#innerDictionaryValue = new Map(); + // Cancel any previous subscription. + if (this.#subscription) { + this.#subscription.unsubscribe(); + } + // Load new translations - this.#extensionRegistry.extensionsOfType('translations').subscribe(async (extensions) => { + this.#subscription = this.#extensionRegistry.extensionsOfType('translations').subscribe(async (extensions) => { await Promise.all( extensions .filter((x) => x.meta.culture === userCulture || x.meta.culture === fallbackCulture)