From 0928a7736d62414864b3786d1dcd79f4edfc9b16 Mon Sep 17 00:00:00 2001 From: Yulong Ruan Date: Fri, 14 Jul 2023 10:49:25 +0800 Subject: [PATCH] unsubscribe update current workspace to saved object client when workspace plugin stopped Signed-off-by: Yulong Ruan --- src/plugins/workspace/public/plugin.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/plugins/workspace/public/plugin.ts b/src/plugins/workspace/public/plugin.ts index 3d7101b5e92e..c221e892aa58 100644 --- a/src/plugins/workspace/public/plugin.ts +++ b/src/plugins/workspace/public/plugin.ts @@ -14,10 +14,12 @@ import { import { WORKSPACE_APP_ID } from '../common/constants'; import { mountDropdownList } from './mount'; import { getWorkspaceIdFromUrl } from '../../../core/public/utils'; +import type { Subscription } from 'rxjs'; export class WorkspacesPlugin implements Plugin<{}, {}> { private coreSetup?: CoreSetup; private coreStart?: CoreStart; + private currentWorkspaceSubscription?: Subscription; private getWorkspaceIdFromURL(): string | null { return getWorkspaceIdFromUrl(window.location.href); } @@ -86,9 +88,11 @@ export class WorkspacesPlugin implements Plugin<{}, {}> { private _changeSavedObjectCurrentWorkspace() { if (this.coreStart) { - this.coreStart.workspaces.client.currentWorkspaceId$.subscribe((currentWorkspaceId) => { - this.coreStart?.savedObjects.client.setCurrentWorkspace(currentWorkspaceId); - }); + return this.coreStart.workspaces.client.currentWorkspaceId$.subscribe( + (currentWorkspaceId) => { + this.coreStart?.savedObjects.client.setCurrentWorkspace(currentWorkspaceId); + } + ); } } @@ -105,7 +109,11 @@ export class WorkspacesPlugin implements Plugin<{}, {}> { workspaces: core.workspaces, chrome: core.chrome, }); - this._changeSavedObjectCurrentWorkspace(); + this.currentWorkspaceSubscription = this._changeSavedObjectCurrentWorkspace(); return {}; } + + public stop() { + this.currentWorkspaceSubscription?.unsubscribe(); + } }