Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

wait for iframe to load #60

Merged
merged 3 commits into from
Nov 24, 2021
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions packages/openlogin/src/Modal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export class Modal {
name: "modal_iframe_rpc",
target: "modal_rpc",
targetWindow: this.iframeElem.contentWindow,
targetOrigin: this.modalUrl,
})
);
this.verifierStream = this.mux.createStream("verifier");
Expand All @@ -58,6 +59,12 @@ export class Modal {
this.iframeElem = iframeElem;
this._hideModal();
document.body.appendChild(this.iframeElem);
return new Promise<void>((resolve) => {
iframeElem.onload = () => {
this.initialized = true;
resolve();
};
});
}

_showModal(): void {
Expand Down
2 changes: 1 addition & 1 deletion packages/openlogin/src/OpenLogin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ class OpenLogin {
async init(): Promise<void> {
if (this.state.support3PC) {
await Promise.all([this.modal.init(), this.updateOriginData()]);
this.provider.init({ iframeElem: this.modal.iframeElem });
this.provider.init({ iframeElem: this.modal.iframeElem, iframeUrl: this.state.iframeUrl });
this._syncState(getHashQueryParams(this.state.replaceUrlOnRedirect));
const res = await this._check3PCSupport();
this.state.support3PC = !!res.support3PC;
Expand Down
6 changes: 5 additions & 1 deletion packages/openlogin/src/Provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,17 @@ export default class Provider extends SafeEventEmitter {

rpcStream: PostMessageStream;

iframeUrl: string;

rpcEngine: JRPCEngine;

initialized: boolean;

mux: ObjectMultiplex;

init({ iframeElem }: { iframeElem: HTMLIFrameElement }): void {
init({ iframeElem, iframeUrl }: { iframeElem: HTMLIFrameElement; iframeUrl: string }): void {
this.iframeElem = iframeElem;
this.iframeUrl = iframeUrl;
this.setupStream();
this.initialized = true;
}
Expand All @@ -35,6 +38,7 @@ export default class Provider extends SafeEventEmitter {
name: "embed_rpc",
target: "iframe_rpc",
targetWindow: this.iframeElem.contentWindow,
targetOrigin: this.iframeUrl,
});

this.mux = setupMultiplex(this.rpcStream);
Expand Down