Skip to content

Commit

Permalink
Fix closing pages (#342)
Browse files Browse the repository at this point in the history
* Fix postMessage not received by parent window
  • Loading branch information
ayinloya authored Sep 30, 2024
1 parent 8c49f13 commit 1301664
Show file tree
Hide file tree
Showing 10 changed files with 67 additions and 27 deletions.
5 changes: 4 additions & 1 deletion example/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,13 @@ export default function setupForm() {
environment,
use_new_component: true,
//demo_mode: true,
// previewBVNMFA: true,
previewBVNMFA: true,
hide_attribution: true,
document_capture_modes: ['camera', 'upload'],
allow_agent_mode: true,
consent_required: {
NG: ['BVN'],
},
partner_details: {
partner_id,
signature,
Expand Down
8 changes: 6 additions & 2 deletions packages/embed/src/js/basic-kyc.js
Original file line number Diff line number Diff line change
Expand Up @@ -855,10 +855,14 @@ import { version as sdkVersion } from '../../package.json';
const message = userTriggered
? 'SmileIdentity::Close'
: 'SmileIdentity::Close::System';
referenceWindow.postMessage(message, '*');
[referenceWindow.parent, referenceWindow].forEach((win) => {
win.postMessage(message, '*');
});
}

function handleSuccess() {
referenceWindow.postMessage('SmileIdentity::Success', '*');
[referenceWindow.parent, referenceWindow].forEach((win) => {
win.postMessage('SmileIdentity::Success', '*');
});
}
})();
13 changes: 9 additions & 4 deletions packages/embed/src/js/biometric-kyc.js
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ import { version as sdkVersion } from '../../package.json';
SmartCameraWeb.addEventListener(
'smart-camera-web.close',
() => {
closeWindow();
closeWindow(true);
},
false,
);
Expand Down Expand Up @@ -569,7 +569,7 @@ import { version as sdkVersion } from '../../package.json';
EndUserConsent.addEventListener(
'end-user-consent.totp.denied.contact-methods-outdated',
(event) => {
referenceWindow.postMessage(
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated',
'*',
);
Expand Down Expand Up @@ -950,10 +950,15 @@ import { version as sdkVersion } from '../../package.json';
const message = userTriggered
? 'SmileIdentity::Close'
: 'SmileIdentity::Close::System';
referenceWindow.postMessage(message, '*');
[referenceWindow.parent, referenceWindow].forEach((win) =>
win.postMessage(message, '*'),
);
}

function handleSuccess() {
referenceWindow.postMessage('SmileIdentity::Success', '*');
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::Success',
'*',
);
}
})();
20 changes: 13 additions & 7 deletions packages/embed/src/js/doc-verification.js
Original file line number Diff line number Diff line change
Expand Up @@ -513,15 +513,15 @@ import { version as sdkVersion } from '../../package.json';
SmartCameraWeb.addEventListener(
'close',
() => {
closeWindow();
closeWindow(true);
},
false,
);

SmartCameraWeb.addEventListener(
'smart-camera-web.close',
() => {
closeWindow();
closeWindow(true);
},
false,
);
Expand All @@ -534,11 +534,11 @@ import { version as sdkVersion } from '../../package.json';
false,
);

CloseIframeButtons.forEach((button) => {
CloseIframeButtons?.forEach((button) => {
button.addEventListener(
'click',
() => {
closeWindow();
closeWindow(true);
},
false,
);
Expand Down Expand Up @@ -728,11 +728,17 @@ import { version as sdkVersion } from '../../package.json';
return fileUploaded;
}

function closeWindow() {
referenceWindow.postMessage('SmileIdentity::Close', '*');
function closeWindow(userTriggered) {
const message = userTriggered
? 'SmileIdentity::Close'
: 'SmileIdentity::Close::System';
(referenceWindow.parent || referenceWindow).postMessage(message, '*');
}

function handleSuccess() {
referenceWindow.postMessage('SmileIdentity::Success', '*');
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::Success',
'*',
);
}
})();
9 changes: 6 additions & 3 deletions packages/embed/src/js/e-signature.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ function getHumanSize(numberOfBytes) {
const message = userTriggered
? 'SmileIdentity::Close'
: 'SmileIdentity::Close::System';
referenceWindow.postMessage(message, '*');
(referenceWindow.parent || referenceWindow).postMessage(message, '*');
}

// NOTE: In order to support prior integrations, we have `live` and
Expand All @@ -44,11 +44,14 @@ function getHumanSize(numberOfBytes) {
referenceWindow.postMessage('SmileIdentity::ChildPageReady', '*');

function handleSuccess() {
referenceWindow.postMessage('SmileIdentity::Success', '*');
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::Success',
'*',
);
}

function handleBadDocuments(error) {
referenceWindow.postMessage(
(referenceWindow.parent || referenceWindow).postMessage(
{
message: 'SmileIdentity::Error',
data: {
Expand Down
11 changes: 8 additions & 3 deletions packages/embed/src/js/ekyc.js
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,7 @@ import { version as sdkVersion } from '../../package.json';
EndUserConsent.addEventListener(
'end-user-consent.totp.denied.contact-methods-outdated',
(event) => {
referenceWindow.postMessage(
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::ConsentDenied::TOTP::ContactMethodsOutdated',
'*',
);
Expand Down Expand Up @@ -855,10 +855,15 @@ import { version as sdkVersion } from '../../package.json';
const message = userTriggered
? 'SmileIdentity::Close'
: 'SmileIdentity::Close::System';
referenceWindow.postMessage(message, '*');
[referenceWindow.parent, referenceWindow].forEach((win) => {
win.postMessage(message, '*');
});
}

function handleSuccess() {
referenceWindow.postMessage('SmileIdentity::Success', '*');
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::Success',
'*',
);
}
})();
10 changes: 8 additions & 2 deletions packages/embed/src/js/enhanced-document-verification.js
Original file line number Diff line number Diff line change
Expand Up @@ -531,10 +531,16 @@ import { version as sdkVersion } from '../../package.json';
}

function closeWindow() {
referenceWindow.postMessage('SmileIdentity::Close', '*');
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::Close',
'*',
);
}

function handleSuccess() {
referenceWindow.postMessage('SmileIdentity::Success', '*');
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::Success',
'*',
);
}
})();
5 changes: 4 additions & 1 deletion packages/embed/src/js/product-selection.js
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,10 @@
}

function closeWindow() {
referenceWindow.postMessage('SmileIdentity::Close', '*');
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::Close',
'*',
);
}

function publishMessage() {
Expand Down
7 changes: 5 additions & 2 deletions packages/embed/src/js/smartselfie-auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -317,10 +317,13 @@ import { version as sdkVersion } from '../../package.json';
const message = userTriggered
? 'SmileIdentity::Close'
: 'SmileIdentity::Close::System';
referenceWindow.postMessage(message, '*');
(referenceWindow.parent || referenceWindow).postMessage(message, '*');
}

function handleSuccess() {
referenceWindow.postMessage('SmileIdentity::Success', '*');
(referenceWindow.parent || referenceWindow).postMessage(
'SmileIdentity::Success',
'*',
);
}
})();
Original file line number Diff line number Diff line change
Expand Up @@ -624,8 +624,10 @@ class TotpConsent extends HTMLElement {
}

closeWindow() {
const referenceWindow = this.window.parent;
referenceWindow.postMessage('SmileIdentity::Close', '*');
const referenceWindow = window.parent;
[referenceWindow.parent, referenceWindow].forEach((win) => {
win.postMessage('SmileIdentity::Close', '*');
});
}

handleBackClick() {
Expand Down

0 comments on commit 1301664

Please sign in to comment.