Skip to content

Commit

Permalink
Prevent multiple clicks on the verify button (#290)
Browse files Browse the repository at this point in the history
* Prevent multiple clicks on the verify button

* Fix lint

* use reset on success
  • Loading branch information
ayinloya authored Jul 30, 2024
1 parent 8078dc2 commit c99bd2f
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 48 deletions.
85 changes: 44 additions & 41 deletions example/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ export default function setupForm() {
const button = document.querySelector('#submitForm');
const product = document.querySelector('#product');

const resetButton = () => {
button.textContent = 'Verify with Smile Identity';
button.disabled = false;
};
const getWebToken = async () => {
const payload = { product: product.value };
const fetchConfig = {};
Expand Down Expand Up @@ -50,51 +54,50 @@ export default function setupForm() {
e.preventDefault();
button.textContent = 'Initializing session...';
button.disabled = true;
const tokenResults = await getWebToken();
// debugger;
const {
token,
product,
callback_url,
environment,
partner_id,
signature,
timestamp,
} = tokenResults;

if (window.SmileIdentity) {
window.SmileIdentity({
try {
const tokenResults = await getWebToken();
const {
token,
product,
callback_url,
environment,
demo_mode: true,
use_new_component: true,
previewBVNMFA: true,
document_capture_modes: ['camera', 'upload'],
partner_details: {
partner_id,
signature,
timestamp,
name: 'Demo Account',
logo_url: 'https://via.placeholder.com/50/000000/FFFFFF?text=DA',
policy_url: 'https://smileidentity.com/privacy-privacy',
theme_color: '#000',
},
onSuccess: () => {
button.textContent = 'Verify with Smile Identity';
button.disabled = false;
setActiveScreen(demoCompleteScreen);
},
onClose: () => {
button.textContent = 'Verify with Smile Identity';
button.disabled = false;
},
onError: () => {
button.textContent = 'Verify with Smile Identity';
button.disabled = false;
},
});
partner_id,
signature,
timestamp,
} = tokenResults;

if (window.SmileIdentity) {
window.SmileIdentity({
token,
product,
callback_url,
environment,
// demo_mode: true,
use_new_component: true,
// previewBVNMFA: true,
document_capture_modes: ['camera', 'upload'],
partner_details: {
partner_id,
signature,
timestamp,
name: 'Demo Account',
logo_url: 'https://via.placeholder.com/50/000000/FFFFFF?text=DA',
policy_url: 'https://smileidentity.com/privacy-privacy',
theme_color: '#000',
},
onSuccess: () => {
resetButton();
},
onClose: () => {
resetButton();
},
onError: () => {
resetButton();
},
});
}
} catch (error) {
resetButton();
}
});
}
7 changes: 4 additions & 3 deletions packages/embed/src/js/basic-kyc.js
Original file line number Diff line number Diff line change
Expand Up @@ -737,6 +737,7 @@ import { version as sdkVersion } from '../../package.json';
}

async function handleFormSubmit(event) {
event.target.disabled = true;
event.preventDefault();
resetForm();
const form = IDInfoForm.querySelector('form');
Expand All @@ -747,6 +748,7 @@ import { version as sdkVersion } from '../../package.json';
const isInvalid = validateInputs(payload);

if (isInvalid) {
event.target.disabled = false;
return;
}

Expand All @@ -758,16 +760,15 @@ import { version as sdkVersion } from '../../package.json';
};

try {
event.target.disabled = true;
await submitIdInfoForm();
complete();
event.target.disabled = false;
} catch (error) {
event.target.disabled = false;
displayErrorMessage('Something went wrong');
console.error(
`SmileIdentity - ${error.name || error.message}: ${error.cause}`,
);
} finally {
event.target.disabled = false;
}
}

Expand Down
9 changes: 6 additions & 3 deletions packages/embed/src/js/biometric-kyc.js
Original file line number Diff line number Diff line change
Expand Up @@ -740,10 +740,13 @@ import { version as sdkVersion } from '../../package.json';
}

async function handleFormSubmit(event) {
if (event && event.target) event.target.disabled = true;

if (event) {
event.preventDefault();
resetForm();
}

const form = IDInfoForm.querySelector('form');

const formData = new FormData(form);
Expand All @@ -752,6 +755,7 @@ import { version as sdkVersion } from '../../package.json';
const isInvalid = validateInputs(payload);

if (isInvalid) {
if (event && event.target) event.target.disabled = false;
return;
}

Expand All @@ -763,20 +767,19 @@ import { version as sdkVersion } from '../../package.json';
};

try {
if (event && event.target) event.target.disabled = true;
[uploadURL, fileToUpload] = await Promise.all([
getUploadURL(),
createZip(),
]);

uploadZip(fileToUpload, uploadURL);
if (event && event.target) event.target.disabled = false;
} catch (error) {
if (event && event.target) event.target.disabled = false;
displayErrorMessage('Something went wrong');
console.error(
`SmileIdentity - ${error.name || error.message}: ${error.cause}`,
);
} finally {
if (event && event.target) event.target.disabled = false;
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/embed/src/js/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ window.SmileIdentity = (function () {
'#smile-identity-hosted-web-integration',
);

iframe.remove();
iframe?.remove();

if (config.onClose && userTriggered) {
config.onClose();
Expand Down

0 comments on commit c99bd2f

Please sign in to comment.