From 7cee1f14da1fcbf54946983e0b61397fc85dec17 Mon Sep 17 00:00:00 2001 From: Thomas Lynch Date: Sat, 2 Apr 2022 04:29:16 +1100 Subject: [PATCH] fix regression with moveposts and deleteposts when running markdown again for quotes small change to diceroll, just use bind, no need to return the function like that --- CHANGELOG.md | 4 ++++ helpers/posting/diceroll.js | 2 +- helpers/posting/markdown.js | 2 +- helpers/posting/message.js | 2 +- models/forms/deletepost.js | 15 ++++++--------- models/forms/moveposts.js | 17 +++++++---------- package-lock.json | 4 ++-- package.json | 2 +- 8 files changed, 23 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index edea3bc3..06ed2305 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +### 0.5.2 + - Fix regression in remarkup of posts during moving, deleting, cyclic threads, etc due to permissions. + - Small internal change to how dicerolls are processed. + ### 0.5.1 - Small change to expanding spoilered files. - Bugfix outdated bans template mixin. diff --git a/helpers/posting/diceroll.js b/helpers/posting/diceroll.js index f9c90222..0b380a7a 100644 --- a/helpers/posting/diceroll.js +++ b/helpers/posting/diceroll.js @@ -5,7 +5,7 @@ module.exports = { regexPrepare: /##(?[1-9][0-9]{0,1})d(?1[0-9]{1,8}|[2-9][0-9]{0,8})(?:(?[+-])(?[1-9][0-9]{0,8}))?(?=[1-9][0-9]{0,8})?/gmi, regexMarkdown: /##(?[1-9][0-9]{0,1})d(?1[0-9]{1,8}|[2-9][0-9]{0,8})(?:(?[+-])(?[1-9][0-9]{0,8}))?=(?[1-9][0-9]{0,8})/gmi, - prepare: (force) => (match, numdice, numsides, operator, modifier, value) => { + prepare: (force, match, numdice, numsides, operator, modifier, value) => { if (!force && value) { return match; } diff --git a/helpers/posting/markdown.js b/helpers/posting/markdown.js index 888d489f..be90e363 100644 --- a/helpers/posting/markdown.js +++ b/helpers/posting/markdown.js @@ -59,7 +59,7 @@ module.exports = { //every other chunk will be a code block if (i % 2 === 0) { chunks[i] = chunks[i].replace( - diceroll.regexPrepare, diceroll.prepare(force)); + diceroll.regexPrepare, diceroll.prepare.bind(null, force)); } } return chunks.join(''); diff --git a/helpers/posting/message.js b/helpers/posting/message.js index 9bae03ec..7d8c9d25 100644 --- a/helpers/posting/message.js +++ b/helpers/posting/message.js @@ -4,7 +4,7 @@ const quoteHandler = require(__dirname+'/quotes.js') , { markdown } = require(__dirname+'/markdown.js') , sanitizeOptions = require(__dirname+'/sanitizeoptions.js') - , Permission = require(__dirname+'/../permissions.js') + , Permission = require(__dirname+'/../permission.js') , roleManager = require(__dirname+'/../rolemanager.js') , sanitize = require('sanitize-html'); diff --git a/models/forms/deletepost.js b/models/forms/deletepost.js index d5215882..2a91d02b 100644 --- a/models/forms/deletepost.js +++ b/models/forms/deletepost.js @@ -5,12 +5,10 @@ const uploadDirectory = require(__dirname+'/../../helpers/files/uploadDirectory. , Mongo = require(__dirname+'/../../db/db.js') , { Posts, Files } = require(__dirname+'/../../db/') , Socketio = require(__dirname+'/../../socketio.js') - , quoteHandler = require(__dirname+'/../../helpers/posting/quotes.js') - , { markdown } = require(__dirname+'/../../helpers/posting/markdown.js') + , { prepareMarkdown } = require(__dirname+'/../../helpers/posting/markdown.js') + , messageHandler = require(__dirname+'/../../helpers/posting/message.js') , config = require(__dirname+'/../../config.js') , { func: pruneFiles } = require(__dirname+'/../../schedules/tasks/prune.js') - , sanitize = require('sanitize-html') - , sanitizeOptions = require(__dirname+'/../../helpers/posting/sanitizeoptions.js'); module.exports = async (posts, board, all=false) => { @@ -127,9 +125,8 @@ module.exports = async (posts, board, all=false) => { await Promise.all(remarkupPosts.map(async post => { //doing these all at once if (post.nomarkup && post.nomarkup.length > 0) { //is this check even necessary? how would it have a quote with no message //redo the markup - let message = markdown(post.nomarkup); - const { quotedMessage, threadQuotes, crossQuotes } = await quoteHandler.process(post.board, message, post.thread); - message = sanitize(quotedMessage, sanitizeOptions.after); + const nomarkup = prepareMarkdown(post.nomarkup, false); + const { message, quotes, crossquotes } = await messageHandler(nomarkup, post.board, post.thread, null); bulkWrites.push({ 'updateOne': { 'filter': { @@ -137,8 +134,8 @@ module.exports = async (posts, board, all=false) => { }, 'update': { '$set': { - 'quotes': threadQuotes, - 'crossquotes': crossQuotes, + 'quotes': quotes, + 'crossquotes': crossquotes, 'message': message } } diff --git a/models/forms/moveposts.js b/models/forms/moveposts.js index 450ee6a9..d343949c 100644 --- a/models/forms/moveposts.js +++ b/models/forms/moveposts.js @@ -4,11 +4,9 @@ const uploadDirectory = require(__dirname+'/../../helpers/files/uploadDirectory. , { remove } = require('fs-extra') , { Posts } = require(__dirname+'/../../db/') , Socketio = require(__dirname+'/../../socketio.js') - , quoteHandler = require(__dirname+'/../../helpers/posting/quotes.js') - , { markdown } = require(__dirname+'/../../helpers/posting/markdown.js') + , { prepareMarkdown } = require(__dirname+'/../../helpers/posting/markdown.js') + , messageHandler = require(__dirname+'/../../helpers/posting/message.js') , { createHash } = require('crypto') - , sanitize = require('sanitize-html') - , sanitizeOptions = require(__dirname+'/../../helpers/posting/sanitizeoptions.js'); module.exports = async (req, res) => { @@ -128,14 +126,13 @@ module.exports = async (req, res) => { postUpdate.userId = userId; } if (post.nomarkup && post.nomarkup.length > 0) { - let message = markdown(post.nomarkup); - let { quotedMessage, threadQuotes, crossQuotes } = await quoteHandler.process(post.board, message, post.thread); // req.body.move_to_thread); - message = sanitize(quotedMessage, sanitizeOptions.after); + const nomarkup = prepareMarkdown(post.nomarkup, false); + const { message, quotes, crossquotes } = await messageHandler(nomarkup, post.board, post.thread, null); bulkWrites.push({ 'updateMany': { 'filter': { '_id': { - '$in': threadQuotes.map(q => q._id) + '$in': quotes.map(q => q._id) } }, 'update': { @@ -145,8 +142,8 @@ module.exports = async (req, res) => { } } }); - postUpdate.quotes = threadQuotes; - postUpdate.crossquotes = crossQuotes; + postUpdate.quotes = quotes; + postUpdate.crossquotes = crossquotes; postUpdate.message = message; } if (Object.keys(postUpdate).length > 0) { diff --git a/package-lock.json b/package-lock.json index 8235ffad..6ab40cbf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "jschan", - "version": "0.5.1", + "version": "0.5.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "jschan", - "version": "0.5.1", + "version": "0.5.2", "license": "AGPL-3.0-only", "dependencies": { "@fatchan/express-fileupload": "^1.3.1", diff --git a/package.json b/package.json index a65f5496..09751a9c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jschan", - "version": "0.5.1", + "version": "0.5.2", "migrateVersion": "0.5.0", "description": "", "main": "server.js",