From 8f7615c8d69ca58c84c83af303dbda143c0daa4f Mon Sep 17 00:00:00 2001 From: arturovt Date: Tue, 14 Jan 2025 06:53:24 +0200 Subject: [PATCH] refactor(docs-infra): lazy-load `EmbeddedTutorialManager` in editor UI state (#59509) In this commit, we lazy-load the `EmbeddedTutorialManager` in the editor UI state as done in other parts of the code. PR Close #59509 --- adev/src/app/editor/editor-ui-state.service.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/adev/src/app/editor/editor-ui-state.service.ts b/adev/src/app/editor/editor-ui-state.service.ts index b1b3ea7af83..de0dafd2c06 100644 --- a/adev/src/app/editor/editor-ui-state.service.ts +++ b/adev/src/app/editor/editor-ui-state.service.ts @@ -6,13 +6,13 @@ * found in the LICENSE file at https://angular.dev/license */ -import {DestroyRef, inject, Injectable, signal} from '@angular/core'; +import {EnvironmentInjector, inject, Injectable, signal} from '@angular/core'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; -import {filter, map, Subject} from 'rxjs'; +import {filter, from, map, Subject, switchMap} from 'rxjs'; import {TutorialMetadata, TutorialType} from '@angular/docs'; -import {EmbeddedTutorialManager} from './embedded-tutorial-manager.service'; +import {injectEmbeddedTutorialManager} from './inject-embedded-tutorial-manager'; export interface EditorUiStateConfig { displayOnlyInteractiveTerminal: boolean; @@ -23,8 +23,7 @@ export const DEFAULT_EDITOR_UI_STATE: EditorUiStateConfig = { @Injectable() export class EditorUiState { - private readonly embeddedTutorialManager = inject(EmbeddedTutorialManager); - private readonly destroyRef = inject(DestroyRef); + private readonly environmentInjector = inject(EnvironmentInjector); private readonly stateChanged = new Subject(); @@ -41,11 +40,13 @@ export class EditorUiState { } private handleTutorialChange() { - this.embeddedTutorialManager.tutorialChanged$ + from(injectEmbeddedTutorialManager(this.environmentInjector)) .pipe( - map(() => this.embeddedTutorialManager.type()), + switchMap((embeddedTutorialManager) => + embeddedTutorialManager.tutorialChanged$.pipe(map(() => embeddedTutorialManager.type())), + ), filter((tutorialType): tutorialType is TutorialMetadata['type'] => Boolean(tutorialType)), - takeUntilDestroyed(this.destroyRef), + takeUntilDestroyed(), ) .subscribe((tutorialType) => { if (tutorialType === TutorialType.CLI) {