Skip to content

Commit

Permalink
fix: remove message listener when embed iframe is detroyed
Browse files Browse the repository at this point in the history
  • Loading branch information
nlepage committed Jul 2, 2024
1 parent 6ff64a2 commit b264ba6
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions mon-pix/app/components/challenge-embed-simulator.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ export default class ChallengeEmbedSimulator extends Component {
@tracked
embedHeight;

_embedMessageListener;

constructor(owner, args) {
super(owner, args);
this.embedHeight = args.embedDocument?.height;
Expand Down Expand Up @@ -42,8 +44,9 @@ export default class ChallengeEmbedSimulator extends Component {

iframe.addEventListener('load', loadListener);

window.addEventListener('message', ({ origin, data }) => {
thisComponent._embedMessageListener = ({ origin, data }) => {
if (!isEmbedAllowedOrigin(origin)) return;
console.log('faaaaaaaaaaaaack', data);
if (isReadyMessage(data) && thisComponent.isSimulatorLaunched) {
iframe.contentWindow.postMessage('launch', '*');
iframe.focus();
Expand All @@ -54,7 +57,9 @@ export default class ChallengeEmbedSimulator extends Component {
if (isAutoLaunchMessage(data)) {
thisComponent.launchSimulator();
}
});
};

window.addEventListener('message', thisComponent._embedMessageListener);
}

@action
Expand Down Expand Up @@ -87,6 +92,11 @@ export default class ChallengeEmbedSimulator extends Component {
iframe.src = 'about:blank';
}

willDestroy() {
super.willDestroy();
window.removeEventListener('message', this._embedMessageListener);
}

get iframe() {
return document.querySelector('.embed__iframe');
}
Expand Down

0 comments on commit b264ba6

Please sign in to comment.