Implementation of getTag of the current user
documentation of getTag Adding map for test of getTag
This commit is contained in:
parent
96545c618a
commit
2f9cc393a7
9 changed files with 354 additions and 3 deletions
|
@ -15,6 +15,7 @@ import type { UserInputChatEvent } from './UserInputChatEvent';
|
|||
import type { DataLayerEvent } from "./DataLayerEvent";
|
||||
import type { LayerEvent } from './LayerEvent';
|
||||
import type { SetPropertyEvent } from "./setPropertyEvent";
|
||||
import type { TagEvent } from "./TagEvent";
|
||||
|
||||
export interface TypedMessageEvent<T> extends MessageEvent {
|
||||
data: T
|
||||
|
@ -36,11 +37,11 @@ export type IframeEventMap = {
|
|||
displayBubble: null
|
||||
removeBubble: null
|
||||
onPlayerMove: undefined
|
||||
onDataLayerChange: undefined
|
||||
showLayer: LayerEvent
|
||||
hideLayer: LayerEvent
|
||||
setProperty: SetPropertyEvent
|
||||
getDataLayer: undefined
|
||||
getTag: undefined
|
||||
}
|
||||
export interface IframeEvent<T extends keyof IframeEventMap> {
|
||||
type: T;
|
||||
|
@ -60,6 +61,7 @@ export interface IframeResponseEventMap {
|
|||
hasPlayerMoved: HasPlayerMovedEvent
|
||||
dataLayer: DataLayerEvent
|
||||
menuItemClicked: MenuItemClickedEvent
|
||||
tagList: TagEvent
|
||||
}
|
||||
export interface IframeResponseEvent<T extends keyof IframeResponseEventMap> {
|
||||
type: T;
|
||||
|
|
10
front/src/Api/Events/TagEvent.ts
Normal file
10
front/src/Api/Events/TagEvent.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
import * as tg from "generic-type-guard";
|
||||
|
||||
export const isTagEvent =
|
||||
new tg.IsInterface().withProperties({
|
||||
list: tg.isArray(tg.isString),
|
||||
}).get();
|
||||
/**
|
||||
* A message sent from the iFrame to the game to show/hide a layer.
|
||||
*/
|
||||
export type TagEvent = tg.GuardedType<typeof isTagEvent>;
|
|
@ -19,6 +19,7 @@ import { Math } from 'phaser';
|
|||
import type { DataLayerEvent } from "./Events/DataLayerEvent";
|
||||
import { isMenuItemRegisterEvent } from './Events/MenuItemRegisterEvent';
|
||||
import type { MenuItemClickedEvent } from './Events/MenuItemClickedEvent';
|
||||
import type { TagEvent } from "./Events/TagEvent";
|
||||
|
||||
|
||||
/**
|
||||
|
@ -77,6 +78,10 @@ class IframeListener {
|
|||
|
||||
private readonly _registerMenuCommandStream: Subject<string> = new Subject();
|
||||
public readonly registerMenuCommandStream = this._registerMenuCommandStream.asObservable();
|
||||
|
||||
private readonly _tagListStream: Subject<string> = new Subject();
|
||||
public readonly tagListStream = this._tagListStream.asObservable();
|
||||
|
||||
private readonly iframes = new Set<HTMLIFrameElement>();
|
||||
private readonly scripts = new Map<string, HTMLIFrameElement>();
|
||||
private sendPlayerMove: boolean = false;
|
||||
|
@ -145,12 +150,21 @@ class IframeListener {
|
|||
this._dataLayerChangeStream.next();
|
||||
} else if (payload.type == "registerMenuCommand" && isMenuItemRegisterEvent(payload.data)) {
|
||||
this._registerMenuCommandStream.next(payload.data.menutItem)
|
||||
} else if (payload.type == "getTag") {
|
||||
this._tagListStream.next();
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
|
||||
}
|
||||
|
||||
sendUserTagList(tagList: TagEvent){
|
||||
this.postMessage({
|
||||
'type' : 'tagList',
|
||||
'data' : tagList
|
||||
})
|
||||
}
|
||||
|
||||
sendDataLayerEvent(dataLayerEvent: DataLayerEvent) {
|
||||
this.postMessage({
|
||||
'type' : 'dataLayer',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue