src/lib/fs/cms/page/tpp-loader.service.ts
Properties |
|
Methods |
constructor(platformId: string)
|
||||||
Defined in src/lib/fs/cms/page/tpp-loader.service.ts:10
|
||||||
Parameters :
|
Async getSnap |
getSnap()
|
Defined in src/lib/fs/cms/page/tpp-loader.service.ts:16
|
Returns :
Promise | null
|
Private Async loadTPP |
loadTPP()
|
Defined in src/lib/fs/cms/page/tpp-loader.service.ts:22
|
Returns :
Promise | null
|
Private TPP_SNAP_PROMISE |
Type : Promise<SNAP>
|
Defined in src/lib/fs/cms/page/tpp-loader.service.ts:10
|
import { Inject, Injectable, PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import { SNAP } from './fs-tpp-api.data';
import { isHeadlessTestEnv } from "../../util/helper";
@Injectable({
providedIn: 'root',
})
export class TppLoaderService {
private TPP_SNAP_PROMISE: Promise<SNAP>;
constructor(@Inject(PLATFORM_ID) private platformId: string) {
this.TPP_SNAP_PROMISE = this.loadTPP();
}
async getSnap(): Promise<SNAP> | null {
if (isPlatformBrowser(this.platformId)) {
return await this.TPP_SNAP_PROMISE;
}
}
private async loadTPP(): Promise<SNAP> | null {
if (isPlatformBrowser(this.platformId) && !isHeadlessTestEnv()) {
/* eslint-disable */
return new Promise((resolve, reject) => {
console.debug('load OCM 3.0');
const fsHost = document.referrer;
const url = fsHost.endsWith('/') ? `${fsHost}fs5webedit/live/live.js` : `${fsHost}/fs5webedit/live/live.js`;
const scriptTag = document.body.appendChild(document.createElement('script'));
scriptTag.onerror = scriptTag.onload = async () => {
if (!('TPP_SNAP' in window)) {
reject(new Error(`Unable to load TPP_SNAP via '${url}'.`));
}
if (!(await (window as any).TPP_SNAP.isConnected)) {
reject(new Error(`Unable to set up TPP_SNAP via '${url}'.`));
}
console.debug('loaded TPP_SNAP via %o', url);
console.info('Preview successfully initialized.');
resolve((window as any).TPP_SNAP);
};
scriptTag.src = url;
});
//tslint: enable
}
return null;
}
}