From f539097160a4d8e066e05d195ea1a1419312ce63 Mon Sep 17 00:00:00 2001
From: Eric Oulashin <eric.oulashin@gmail.com>
Date: Thu, 7 Jul 2022 17:00:36 -0700
Subject: [PATCH] Fixed a few errors (a couple related to "use strct", and a
 couple new errors related to deleting a message, upvoting, and viewing
 tallies).

---
 xtrn/DDMsgReader/DDMsgReader.js | 55 +++++++++++++++++++--------------
 1 file changed, 31 insertions(+), 24 deletions(-)

diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js
index cd2a495dc2..8e059c09b6 100644
--- a/xtrn/DDMsgReader/DDMsgReader.js
+++ b/xtrn/DDMsgReader/DDMsgReader.js
@@ -4483,16 +4483,6 @@ function DigDistMsgReader_ReadMessageEnhanced(pOffset, pAllowChgArea)
 		refreshEnhancedRdrHelpLine: false
 	};
 	
-	// This is a scrollbar update function for use when viewing the header info/kludge lines.
-	function msgInfoScrollbarUpdateFn(pFractionToLastPage)
-	{
-		var infoSolidBlockStartRow = msgReaderObj.msgAreaTop + Math.floor(numNonSolidInfoScrollBlocks * pFractionToLastPage);
-		if (infoSolidBlockStartRow != lastInfoSolidBlockStartRow)
-			msgReaderObj.UpdateEnhancedReaderScollbar(infoSolidBlockStartRow, lastInfoSolidBlockStartRow, numInfoSolidScrollBlocks);
-		lastInfoSolidBlockStartRow = infoSolidBlockStartRow;
-		console.gotoxy(1, console.screen_rows);
-	}
-
 	// Get the message header.  Don't expand fields since we may need to save
 	// the header later with the MSG_READ attribute.
 	//var msgHeader = this.GetMsgHdrByIdx(pOffset, false);
@@ -4594,6 +4584,28 @@ function DigDistMsgReader_ReadMessageEnhanced_Scrollable(msgHeader, allowChgMsgA
 		refreshEnhancedRdrHelpLine: false
 	};
 
+	// This is a scrollbar update function for use when viewing the message.
+	function msgScrollbarUpdateFn(pFractionToLastPage)
+	{
+		// Update the scrollbar position for the message, depending on the
+		// value of pFractionToLastMessage.
+		fractionToLastPage = pFractionToLastPage;
+		solidBlockStartRow = msgReaderObj.msgAreaTop + Math.floor(numNonSolidScrollBlocks * pFractionToLastPage);
+		if (solidBlockStartRow != solidBlockLastStartRow)
+			msgReaderObj.UpdateEnhancedReaderScollbar(solidBlockStartRow, solidBlockLastStartRow, numSolidScrollBlocks);
+		solidBlockLastStartRow = solidBlockStartRow;
+		console.gotoxy(1, console.screen_rows);
+	}
+	// This is a scrollbar update function for use when viewing the header info/kludge lines.
+	function msgInfoScrollbarUpdateFn(pFractionToLastPage)
+	{
+		var infoSolidBlockStartRow = msgReaderObj.msgAreaTop + Math.floor(numNonSolidInfoScrollBlocks * pFractionToLastPage);
+		if (infoSolidBlockStartRow != lastInfoSolidBlockStartRow)
+			msgReaderObj.UpdateEnhancedReaderScollbar(infoSolidBlockStartRow, lastInfoSolidBlockStartRow, numInfoSolidScrollBlocks);
+		lastInfoSolidBlockStartRow = infoSolidBlockStartRow;
+		console.gotoxy(1, console.screen_rows);
+	}
+
 	// We could word-wrap the message to ensure words aren't split across lines, but
 	// doing so could make some messages look bad (i.e., messages with drawing characters),
 	// and word_wrap also might not handle ANSI or other color/attribute codes..
@@ -4645,17 +4657,6 @@ function DigDistMsgReader_ReadMessageEnhanced_Scrollable(msgHeader, allowChgMsgA
 	// with scrollTextLines().
 	var msgAreaHeight = this.msgAreaBottom - this.msgAreaTop + 1;
 	var msgReaderObj = this;
-	function msgScrollbarUpdateFn(pFractionToLastPage)
-	{
-		// Update the scrollbar position for the message, depending on the
-		// value of pFractionToLastMessage.
-		fractionToLastPage = pFractionToLastPage;
-		solidBlockStartRow = msgReaderObj.msgAreaTop + Math.floor(numNonSolidScrollBlocks * pFractionToLastPage);
-		if (solidBlockStartRow != solidBlockLastStartRow)
-			msgReaderObj.UpdateEnhancedReaderScollbar(solidBlockStartRow, solidBlockLastStartRow, numSolidScrollBlocks);
-		solidBlockLastStartRow = solidBlockStartRow;
-		console.gotoxy(1, console.screen_rows);
-	}
 
 	var msgHasAttachments = msgHdrHasAttachmentFlag(msgHeader);
 	// User input loop
@@ -13851,7 +13852,7 @@ function DigDistMsgReader_VoteOnMessage(pMsgHdr, pRemoveNLsFromVoteText)
 	// message header
 	if (!retObj.userQuit && (retObj.errorMsg.length == 0))
 	{
-		console.print("\x01n  Submitting.."); // TODO: Does this look good?
+		console.print("\x01n  Submitting..");
 		retObj.savedVote = msgbase.vote_msg(voteMsgHdr);
 		// If the save was successful, then update
 		// this.hdrsForCurrentSubBoard with the updated
@@ -13867,7 +13868,13 @@ function DigDistMsgReader_VoteOnMessage(pMsgHdr, pRemoveNLsFromVoteText)
 					if (tmpHdrs.hasOwnProperty(pMsgHdr.number))
 					{
 						this.hdrsForCurrentSubBoard[originalMsgIdx] = tmpHdrs[pMsgHdr.number];
-						retObj.updatedHdr = pMsgHdr;
+						// Originally, this script assigned retObj.updatedHdr as follows:
+						//retObj.updatedHdr = pMsgHdr;
+						// However, after an update, there were a couple errors that total_votes and upvotes
+						// were read-only, so it wuldn't assign to them, so now we copy pMsgHdr this way:
+						retObj.updatedHdr = {};
+						for (var prop in pMsgHdr)
+							retObj.updatedHdr[prop] = pMsgHdr[prop];
 						if (this.hdrsForCurrentSubBoard[originalMsgIdx].hasOwnProperty("total_votes"))
 							retObj.updatedHdr.total_votes = this.hdrsForCurrentSubBoard[originalMsgIdx].total_votes;
 						if (this.hdrsForCurrentSubBoard[originalMsgIdx].hasOwnProperty("upvotes"))
@@ -17225,7 +17232,7 @@ function deleteVoteMsgs(pMsgbase, pMsgNum, pMsgID, pIsEmailSub)
 			if (isVoteMsg && (msgHdrs[msgHdrsProp].thread_back == pMsgNum) || (msgHdrs[msgHdrsProp].reply_id == pMsgID))
 			{
 				++retObj.numVoteMsgs;
-				msgWasDeleted = pMsgbase.remove_msg(false, msgHdrs[msgHdrsProp].number);
+				var msgWasDeleted = pMsgbase.remove_msg(false, msgHdrs[msgHdrsProp].number);
 				retObj.allVoteMsgsDeleted = (retObj.allVoteMsgsDeleted && msgWasDeleted);
 				if (msgWasDeleted)
 					++retObj.numVoteMsgsDeleted;
-- 
GitLab