summaryrefslogtreecommitdiffstats
path: root/public/src/app/host
diff options
context:
space:
mode:
Diffstat (limited to 'public/src/app/host')
-rw-r--r--public/src/app/host/host.service.ts44
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;
+ }, {});
+ }
+}