import { Injectable } from '@angular/core'; interface HostParams { readonly userId: string; readonly contextType: string; readonly vfcmtUuid: string; readonly lifecycleState: string; readonly isOwner: string; } @Injectable() export class HostService { /* Public Members */ public static getParams(): HostParams { return this.getQueryParamsObj(window.location.hash) as HostParams; } public static disableLoader(): void { this.postMessage('READY', null); } /* Private Methods */ private static postMessage(eventName: string, data: string): void { window.parent.postMessage( { type: eventName, data: data }, '*' ); } private static getQueryParamsObj(query: string): object { return query .substring(7) // removes '?' that always appears as prefix to the query-string .split('&') // splits query-string to "key=value" strings .map(p => p.split('=')) // splits each "key=value" string to [key,value] array .reduce((res, p) => { // converts to a dictionary (object) of params res[p[0]] = p[1]; return res; }, {}); } }