diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js index be95b72bcd26314672f8c15f1c24b0d98f8c9968..a3b311b8207081bd3178dff7db065b57fa202e04 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 4dc9016fd6ebdf3b8abbfb39a78860614f9b832c..f8319e3b1e6b3349c5f17ec0b05b2cbfc0e51bc5 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 3cabe176b29df1d8fa44c981b7f11da2b2169037..1a23f4c33cf0112f83fa7dcc3db2405b62b5755c 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),