From a5d1c942b2ecfd6e2cad57c7c33fbcc0fed7837e Mon Sep 17 00:00:00 2001 From: Thomas Lynch Date: Tue, 25 May 2021 03:39:58 +0000 Subject: [PATCH] fix issue in lowering min/max settings conflict in some situations update settings forms to not allow negatives for some inputs --- controllers/forms/boardsettings.js | 4 ++++ helpers/schema.js | 14 ++++++++++---- views/pages/managesettings.pug | 8 ++++---- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/controllers/forms/boardsettings.js b/controllers/forms/boardsettings.js index 46fba413..af7c3823 100644 --- a/controllers/forms/boardsettings.js +++ b/controllers/forms/boardsettings.js @@ -40,6 +40,10 @@ module.exports = { { result: numberBody(req.body.bump_limit, globalLimits.bumpLimit.min, globalLimits.bumpLimit.max), expected: true, error: `Bump Limit must be ${globalLimits.bumpLimit.min}-${globalLimits.bumpLimit.max}` }, { result: numberBody(req.body.thread_limit, globalLimits.threadLimit.min, globalLimits.threadLimit.max), expected: true, error: `Threads Limit must be ${globalLimits.threadLimit.min}-${globalLimits.threadLimit.max}` }, { result: numberBody(req.body.max_files, 0, globalLimits.postFiles.max), expected: true, error: `Max files must be 0-${globalLimits.postFiles.max}` }, + { result: numberBody(req.body.min_thread_message_length, 0, globalLimits.fieldLength.message), expected: true, error: `Min thread message length must be 0-${globalLimits.fieldLength.message}` }, + { result: numberBody(req.body.min_reply_message_length, 0, globalLimits.fieldLength.message), expected: true, error: `Min reply message length must be 0-${globalLimits.fieldLength.message}` }, + { result: numberBody(req.body.max_thread_message_length, 0, globalLimits.fieldLength.message), expected: true, error: `Max thread message length must be 0-${globalLimits.fieldLength.message}` }, + { result: numberBody(req.body.max_reply_message_length, 0, globalLimits.fieldLength.message), expected: true, error: `Max reply message length must be 0-${globalLimits.fieldLength.message}` }, { result: minmaxBody(req.body.min_thread_message_length, req.body.max_thread_message_length), expected: true, error: 'Min and max thread message lengths must not violate eachother' }, { result: minmaxBody(req.body.min_reply_message_length, req.body.max_reply_message_length), expected: true, error: 'Min and max reply message lengths must not violate eachother' }, { result: numberBodyVariable(req.body.min_thread_message_length, res.locals.board.settings.minThreadMessageLength, diff --git a/helpers/schema.js b/helpers/schema.js index 9f5875b6..9baf07f6 100644 --- a/helpers/schema.js +++ b/helpers/schema.js @@ -25,14 +25,20 @@ module.exports = { //same, but with old/new fallbacks for settings that can adjust a dependency at same time numberBodyVariable: (data, minOld, minNew, maxOld, maxNew) => { - if (!minNew) { + if (minNew == null) { minNew = minOld; } - if (!maxNew) { + if (maxNew == null) { maxNew = maxOld; } - const varMin = Math.min(minOld, minNew) || minOld; - const varMax = Math.max(maxOld, maxNew) || maxOld; + const varMin = Math.min(minOld, minNew); + if (isNaN(varMin)) { + varMin = minOld; + } + const varMax = Math.max(maxOld, maxNew); + if (isNaN(varMax)) { + varMax = maxOld; + } return typeof data === 'number' && (varMin <= data && varMax >= data); }, diff --git a/views/pages/managesettings.pug b/views/pages/managesettings.pug index 780dad79..776212aa 100644 --- a/views/pages/managesettings.pug +++ b/views/pages/managesettings.pug @@ -171,16 +171,16 @@ block content input(type='checkbox', name='disable_reply_subject', value='true' checked=board.settings.disableReplySubject) .row .label Min Thread Message Length - input(type='number' name='min_thread_message_length' value=board.settings.minThreadMessageLength max=globalLimits.fieldLength.message) + input(type='number' name='min_thread_message_length' value=board.settings.minThreadMessageLength min=0 max=globalLimits.fieldLength.message) .row .label Min Reply Message Length - input(type='number' name='min_reply_message_length' value=board.settings.minReplyMessageLength max=globalLimits.fieldLength.message) + input(type='number' name='min_reply_message_length' value=board.settings.minReplyMessageLength min=0 max=globalLimits.fieldLength.message) .row .label Max Thread Message Length - input(type='number' name='max_thread_message_length' value=board.settings.maxThreadMessageLength max=globalLimits.fieldLength.message) + input(type='number' name='max_thread_message_length' value=board.settings.maxThreadMessageLength min=0 max=globalLimits.fieldLength.message) .row .label Max Reply Message Length - input(type='number' name='max_reply_message_length' value=board.settings.maxReplyMessageLength max=globalLimits.fieldLength.message) + input(type='number' name='max_reply_message_length' value=board.settings.maxReplyMessageLength min=0 max=globalLimits.fieldLength.message) .row h4.mv-5 Limits: .row