From 56e428691100f5f1d432863a41f8e2ae27f4afec Mon Sep 17 00:00:00 2001 From: Eric Oulashin <nightfox@synchro.net> Date: Fri, 24 Mar 2023 18:49:37 +0000 Subject: [PATCH] DDMsgReader: Bug fix for deleting multiple selected messages --- xtrn/DDMsgReader/DDMsgReader.js | 39 ++++++++++++++++++--------- xtrn/DDMsgReader/readme.txt | 4 +-- xtrn/DDMsgReader/revision_history.txt | 5 ++++ 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js index be95b72bcd..a3b311b820 100644 --- a/xtrn/DDMsgReader/DDMsgReader.js +++ b/xtrn/DDMsgReader/DDMsgReader.js @@ -108,6 +108,10 @@ * so that screen updates work better after pausing output. * Also, when running a new message scan (not new-to-you), the current * sub-board being scanned is now outputted. + * 2023-03-24 Eric Oulashin Version 1.69 + * Bug fix for deleting multiple selected messages: When updating message + * headers in the cached arrays, don't try to save them back to the database, + * because that was already done (this avoids a 'header has expanded fields' error). */ "use strict"; @@ -213,8 +217,8 @@ var ansiterm = require("ansiterm_lib.js", 'expand_ctrl_a'); // Reader version information -var READER_VERSION = "1.68"; -var READER_DATE = "2023-03-15"; +var READER_VERSION = "1.69"; +var READER_DATE = "2023-03-24"; // Keyboard key codes for displaying on the screen var UP_ARROW = ascii(24); @@ -1686,15 +1690,20 @@ function msgNumToIdxFromMsgbase(pSubCode, pMsgNum) // pApply: Optional boolean - Whether or not to apply the attribute or remove it. Defaults to true. // pSubBoardCode: Optional - An internal sub-board code. If not specified, then // this method will default to this.subBoardCode. -function DigDistMsgReader_RefreshSearchResultMsgHdr(pMsgIndex, pAttrib, pApply, pSubBoardCode) +// pWriteHdrToMsgbase: Optional boolean - Whether or not to also save the message to the messagebase. Defaults to true. +function DigDistMsgReader_RefreshSearchResultMsgHdr(pMsgIndex, pAttrib, pApply, pSubBoardCode, pWriteHdrToMsgbase) { if (typeof(pMsgIndex) != "number") return; var applyAttr = (typeof(pApply) === "boolean" ? pApply : true); - var subCode = (typeof(pSubBoardCode) == "string" ? pSubBoardCode : this.subBoardCode); + var subCode = (typeof(pSubBoardCode) === "string" ? pSubBoardCode : this.subBoardCode); + var writeHdrToMsgbase = (typeof(pWriteHdrToMsgbase) === "boolean" ? pWriteHdrToMsgbase : true); var msgbase = new MsgBase(subCode); - if (msgbase.open()) + var continueOn = true; + if (writeHdrToMsgbase) + continueOn = msgbase.open(); + if (continueOn) { if (this.msgSearchHdrs.hasOwnProperty(subCode)) { @@ -1707,8 +1716,11 @@ function DigDistMsgReader_RefreshSearchResultMsgHdr(pMsgIndex, pAttrib, pApply, this.msgSearchHdrs[this.subBoardCode].indexed[pMsgIndex].attr = this.msgSearchHdrs[this.subBoardCode].indexed[pMsgIndex].attr | pAttrib; else this.msgSearchHdrs[this.subBoardCode].indexed[pMsgIndex].attr = this.msgSearchHdrs[this.subBoardCode].indexed[pMsgIndex].attr ^ pAttrib; - var msgOffsetFromHdr = this.msgSearchHdrs[this.subBoardCode].indexed[pMsgIndex].offset; - msgbase.put_msg_header(true, msgOffsetFromHdr, this.msgSearchHdrs[this.subBoardCode].indexed[pMsgIndex]); + if (writeHdrToMsgbase) + { + var msgOffsetFromHdr = this.msgSearchHdrs[this.subBoardCode].indexed[pMsgIndex].offset; + msgbase.put_msg_header(true, msgOffsetFromHdr, this.msgSearchHdrs[this.subBoardCode].indexed[pMsgIndex]); + } } } else @@ -1717,11 +1729,13 @@ function DigDistMsgReader_RefreshSearchResultMsgHdr(pMsgIndex, pAttrib, pApply, if (this.msgSearchHdrs[this.subBoardCode].indexed.hasOwnProperty(pMsgIndex)) { this.msgSearchHdrs[this.subBoardCode].indexed[pMsgIndex] = msgHeader; - msgbase.put_msg_header(true, msgHeader.offset, msgHeader); + if (writeHdrToMsgbase) + msgbase.put_msg_header(true, msgHeader.offset, msgHeader); } } } - msgbase.close(); + if (writeHdrToMsgbase) + msgbase.close(); } } @@ -1758,10 +1772,11 @@ function DigDistMsgReader_RefreshHdrInSubBoardHdrs(pMsgIndex, pAttrib, pApply) // pApply: Optional boolean - Whether or not to apply the attribute or remove it. Defaults to true. // pSubBoardCode: Optional - An internal sub-board code. If not specified, then // this method will default to this.subBoardCode. -function DigDistMsgReader_RefreshHdrInSavedArrays(pMsgIndex, pAttrib, pApply, pSubBoardCode) +// pWriteHdrToMsgbase: Optional boolean - Whether or not to also save the message to the messagebase. Defaults to true. +function DigDistMsgReader_RefreshHdrInSavedArrays(pMsgIndex, pAttrib, pApply, pSubBoardCode, pWriteHdrToMsgbase) { var applyAttr = (typeof(pApply) === "boolean" ? pApply : true); - this.RefreshSearchResultMsgHdr(pMsgIndex, pAttrib, applyAttr, pSubBoardCode); + this.RefreshSearchResultMsgHdr(pMsgIndex, pAttrib, applyAttr, pSubBoardCode, pWriteHdrToMsgbase); this.RefreshHdrInSubBoardHdrs(pMsgIndex, pAttrib, applyAttr); } @@ -14317,7 +14332,7 @@ function DigDistMsgReader_DeleteOrUndeleteSelectedMessages(pDelete) // Refresh the message header in the header arrays (if it exists there) and // remove the message index from the selectedMessages object. Also, delete // or undelete any vote response messages that may exist for this message. - this.RefreshHdrInSavedArrays(msgIdxNumber, MSG_DELETE, markAsDeleted, subBoardCode); + this.RefreshHdrInSavedArrays(msgIdxNumber, MSG_DELETE, markAsDeleted, subBoardCode, false); var voteDelRetObj = toggleVoteMsgsDeleted(msgBase, msgHdr.number, msgHdr.id, markAsDeleted, (subBoardCode == "mail")); if (!voteDelRetObj.allVoteMsgsAffected) { diff --git a/xtrn/DDMsgReader/readme.txt b/xtrn/DDMsgReader/readme.txt index 4dc9016fd6..f8319e3b1e 100644 --- a/xtrn/DDMsgReader/readme.txt +++ b/xtrn/DDMsgReader/readme.txt @@ -1,6 +1,6 @@ Digital Distortion Message Reader - Version 1.68 - Release date: 2023-03-15 + Version 1.69 + Release date: 2023-03-24 by diff --git a/xtrn/DDMsgReader/revision_history.txt b/xtrn/DDMsgReader/revision_history.txt index 3cabe176b2..1a23f4c33c 100644 --- a/xtrn/DDMsgReader/revision_history.txt +++ b/xtrn/DDMsgReader/revision_history.txt @@ -5,6 +5,11 @@ Revision History (change log) ============================= Version Date Description ------- ---- ----------- +1.69 2023-03-24 Bug fix for deleting multiple selected messages: When + updating message headers in the cached arrays, don't try + to save them back to the database, because that was + already done (this avoids a 'header has expanded fields' + error). 1.68 2023-03-15 Makes use of console.aborted when displaying help screens so that screen updates work better after pausing output. Also, when running a new message scan (not new-to-you), -- GitLab