Skip to content

Commit

Permalink
fix: remove PostMessage EventListener on close
Browse files Browse the repository at this point in the history
  • Loading branch information
shanejonas committed Sep 23, 2020
1 parent 045365c commit 844af19
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions src/transports/PostMessageWindowTransport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class PostMessageTransport extends Transport {
this.uri = uri;
this.postMessageID = `post-message-transport-${Math.random()}`;
}

public createWindow(uri: string): Promise<Window | null> {
return new Promise((resolve, reject) => {
let frame: Window | null;
Expand All @@ -33,19 +34,22 @@ class PostMessageTransport extends Transport {
}, 3000);
});
}

private messageHandler = (ev: MessageEvent) => {
if (ev.origin === window.origin) {
return;
}
this.transportRequestManager.resolveResponse(JSON.stringify(ev.data));
}

public connect(): Promise<any> {
const urlRegex = /^(http|https):\/\/.*$/;
return new Promise(async (resolve, reject) => {
if (!urlRegex.test(this.uri)) {
reject(new Error("Bad URI"));
}
this.frame = await this.createWindow(this.uri);
window.addEventListener("message", (ev: MessageEvent) => {
if (ev.origin === window.origin) {
return;
}
this.transportRequestManager.resolveResponse(JSON.stringify(ev.data));
});
window.addEventListener("message", this.messageHandler);
resolve();
});
}
Expand All @@ -60,6 +64,7 @@ class PostMessageTransport extends Transport {

public close(): void {
if (this.frame) {
window.removeEventListener("message", this.messageHandler);
(this.frame as Window).close();
}
}
Expand Down

0 comments on commit 844af19

Please sign in to comment.