Compare commits

...

2 Commits

3 changed files with 21 additions and 4 deletions

View File

@ -90,7 +90,24 @@ export default class EventBus {
}
}
private cloneContext(context: EventBusContext = {}): EventBusContext {
return {
stopPropagation: context.stopPropagation,
origin: context.origin,
frameUrl: context.frameUrl,
visitedBusses: context.visitedBusses ? [...context.visitedBusses] : undefined,
commandId: context.commandId,
comms: context.comms ? {
forwardTo: context.comms.forwardTo,
sourceFrame: context.comms?.sourceFrame ? { ...context.comms?.sourceFrame } : undefined
} : undefined,
borderCrossings: context.borderCrossings ? { ...context.borderCrossings } : undefined
};
}
send(command: string, commandData: any, context: EventBusContext = {}) {
context = this.cloneContext(context); // Firefox throws an error if we don't clone the context.
if (context.visitedBusses?.includes(this.uuid)) {
console.warn('this bus was already visited before. Doing nothing.');
return;

View File

@ -266,11 +266,11 @@ class CommsServer {
* @param frame
*/
private async sendToOtherFrames(message, context) {
const sender = context.comms.sourceFrame;
const sender = context.comms?.sourceFrame;
const enrichedMessage = {
message,
_sourceFrame: context.comms.sourceFrame,
_sourceFrame: context.comms?.sourceFrame,
_sourcePort: context.comms.port
}

View File

@ -99,14 +99,14 @@ export default class IframeManager {
} else {
this.iframeList.push({
...data,
...context.comms.sourceFrame
...context.comms?.sourceFrame
});
}
}
private handleFrameDestroyed(context) {
// tab IDs should be the same for all items, making frameId sufficiently unique to filter stuff
this.iframeList = this.iframeList.filter(x => x.frameId !== context.comms.sourceFrame.frameId);
this.iframeList = this.iframeList.filter(x => x.frameId !== context.comms?.sourceFrame?.frameId);
}
}