diff options
Diffstat (limited to 'public/src/app/host')
-rw-r--r-- | public/src/app/host/host.service.ts | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/public/src/app/host/host.service.ts b/public/src/app/host/host.service.ts new file mode 100644 index 0000000..31c4746 --- /dev/null +++ b/public/src/app/host/host.service.ts @@ -0,0 +1,44 @@ +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; + }, {}); + } +} |