From cc1f831a6a6481b457b081769f26da246bec6862 Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 9 May 2023 23:32:06 +0200 Subject: [PATCH] don't allow setting image quality to empty value, #3894 --- .../app/widgets/type_widgets/options/images/images.js | 2 +- src/services/image.js | 2 +- src/services/options.js | 10 +++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/public/app/widgets/type_widgets/options/images/images.js b/src/public/app/widgets/type_widgets/options/images/images.js index 38eae0db8..c6ceb6e04 100644 --- a/src/public/app/widgets/type_widgets/options/images/images.js +++ b/src/public/app/widgets/type_widgets/options/images/images.js @@ -48,7 +48,7 @@ export default class ImageOptions extends OptionsWidget { this.updateOption('imageMaxWidthHeight', this.$imageMaxWidthHeight.val())); this.$imageJpegQuality.on('change', () => - this.updateOption('imageJpegQuality', this.$imageJpegQuality.val())); + this.updateOption('imageJpegQuality', this.$imageJpegQuality.val().trim() || "75")); this.$downloadImagesAutomatically = this.$widget.find(".download-images-automatically"); diff --git a/src/services/image.js b/src/services/image.js index ac9d9cfd1..1dc624e95 100644 --- a/src/services/image.js +++ b/src/services/image.js @@ -134,7 +134,7 @@ function saveImage(parentNoteId, uploadBuffer, originalName, shrinkImageSwitch, } async function shrinkImage(buffer, originalName) { - let jpegQuality = optionService.getOptionInt('imageJpegQuality'); + let jpegQuality = optionService.getOptionInt('imageJpegQuality', 0); if (jpegQuality < 10 || jpegQuality > 100) { jpegQuality = 75; diff --git a/src/services/options.js b/src/services/options.js index 9d227ec4c..d2b1404fd 100644 --- a/src/services/options.js +++ b/src/services/options.js @@ -10,7 +10,7 @@ function getOptionOrNull(name) { // e.g. in initial sync becca is not loaded because DB is not initialized option = sql.getRow("SELECT * FROM options WHERE name = ?", name); } - + return option ? option.value : null; } @@ -27,13 +27,17 @@ function getOption(name) { /** * @returns {number} */ -function getOptionInt(name) { +function getOptionInt(name, defaultValue = undefined) { const val = getOption(name); const intVal = parseInt(val); if (isNaN(intVal)) { - throw new Error(`Could not parse "${val}" into integer for option "${name}"`); + if (defaultValue === undefined) { + throw new Error(`Could not parse "${val}" into integer for option "${name}"`); + } else { + return defaultValue; + } } return intVal;