added trigger message code
This commit is contained in:
parent
3cf0a9ee84
commit
5472d220ba
9 changed files with 267 additions and 99 deletions
51
front/src/Api/iframe/Ui/TriggerMessage.ts
Normal file
51
front/src/Api/iframe/Ui/TriggerMessage.ts
Normal file
|
@ -0,0 +1,51 @@
|
|||
|
||||
import { removeTriggerMessage, triggerMessage, TriggerMessageEvent } from '../../Events/ui/TriggerMessageEvent';
|
||||
import { sendToWorkadventure } from '../IframeApiContribution';
|
||||
function uuidv4() {
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
||||
const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
|
||||
return v.toString(16);
|
||||
});
|
||||
}
|
||||
|
||||
export let triggerMessageInstance: TriggerMessage | undefined = undefined
|
||||
|
||||
|
||||
|
||||
export class TriggerMessage {
|
||||
uuid: string
|
||||
|
||||
constructor(private message: string, private callback: () => void) {
|
||||
this.uuid = uuidv4()
|
||||
if (triggerMessageInstance) {
|
||||
triggerMessageInstance.remove();
|
||||
}
|
||||
triggerMessageInstance = this;
|
||||
this.create();
|
||||
}
|
||||
|
||||
create(): this {
|
||||
sendToWorkadventure({
|
||||
type: triggerMessage,
|
||||
data: {
|
||||
message: this.message,
|
||||
uuid: this.uuid
|
||||
} as TriggerMessageEvent
|
||||
})
|
||||
return this
|
||||
}
|
||||
|
||||
remove() {
|
||||
sendToWorkadventure({
|
||||
type: removeTriggerMessage,
|
||||
data: {
|
||||
uuid: this.uuid
|
||||
} as TriggerMessageEvent
|
||||
})
|
||||
triggerMessageInstance = undefined
|
||||
}
|
||||
|
||||
trigger() {
|
||||
this.callback();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue