35 lines
1.5 KiB
TypeScript
35 lines
1.5 KiB
TypeScript
|
|
import { Injectable } from '@angular/core';
|
||
|
|
import { Observable, map } from 'rxjs';
|
||
|
|
import { ConfigService } from '../../core/config/config.service';
|
||
|
|
import { BrandingEngineService } from '../../theme/runtime/branding-engine.service';
|
||
|
|
import { ThemeEngineService } from '../../theme/runtime/theme-engine.service';
|
||
|
|
import { PageRendererService } from '../../dynamic-renderer/page-renderer/page-renderer.service';
|
||
|
|
import { PageRenderModel } from '../../dynamic-renderer/page-renderer/page-renderer.model';
|
||
|
|
import { WidgetRegistryBootstrapService } from '../../widgets/registry/widget-registry.bootstrap.service';
|
||
|
|
|
||
|
|
@Injectable({ providedIn: 'root' })
|
||
|
|
export class WebsiteRuntimeFacade {
|
||
|
|
constructor(
|
||
|
|
private readonly configService: ConfigService,
|
||
|
|
private readonly pageRenderer: PageRendererService,
|
||
|
|
private readonly registryBootstrap: WidgetRegistryBootstrapService,
|
||
|
|
private readonly themeEngine: ThemeEngineService,
|
||
|
|
private readonly brandingEngine: BrandingEngineService
|
||
|
|
) {}
|
||
|
|
|
||
|
|
initializeRuntime(): void {
|
||
|
|
this.registryBootstrap.registerDefaults();
|
||
|
|
this.themeEngine.initialize();
|
||
|
|
this.brandingEngine.initialize();
|
||
|
|
}
|
||
|
|
|
||
|
|
getPageRenderModel(pageKey: string): Observable<PageRenderModel | null> {
|
||
|
|
return this.configService.loadBootstrap().pipe(
|
||
|
|
map(bootstrap => {
|
||
|
|
const page = bootstrap.pages.find(p => p.key === pageKey && p.visible !== false);
|
||
|
|
return page ? this.pageRenderer.toRenderModel(page) : null;
|
||
|
|
})
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|