diff --git a/app/javascript/submission_form/crop_canvas.js b/app/javascript/submission_form/crop_canvas.js index 977c5ade..472d2764 100644 --- a/app/javascript/submission_form/crop_canvas.js +++ b/app/javascript/submission_form/crop_canvas.js @@ -1,4 +1,4 @@ -function cropCanvasAndExportToPNG (canvas) { +function cropCanvasAndExportToPNG (canvas, { errorOnTooSmall } = { errorOnTooSmall: false }) { const ctx = canvas.getContext('2d') const width = canvas.width @@ -33,6 +33,10 @@ function cropCanvasAndExportToPNG (canvas) { croppedCanvas.height = croppedHeight const croppedCtx = croppedCanvas.getContext('2d') + if (errorOnTooSmall && (croppedWidth < 20 || croppedHeight < 20)) { + return Promise.reject(new Error('Image too small')) + } + croppedCtx.drawImage(canvas, leftmost, topmost, croppedWidth, croppedHeight, 0, 0, croppedWidth, croppedHeight) return new Promise((resolve, reject) => { diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index a8e33fcc..a8c5ecf9 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -1000,7 +1000,11 @@ export default { this.isSubmitting = false }) }).catch(error => { - console.log(error) + if (error?.message === 'Image too small') { + alert('Signature is too small - please redraw.') + } else { + console.log(error) + } }).finally(() => { this.isSubmitting = false }) diff --git a/app/javascript/submission_form/signature_step.vue b/app/javascript/submission_form/signature_step.vue index 9253db50..c9644f99 100644 --- a/app/javascript/submission_form/signature_step.vue +++ b/app/javascript/submission_form/signature_step.vue @@ -41,7 +41,7 @@ @@ -56,7 +56,7 @@ :data-tip="t('take_photo')" >