From 99ea147c881cdbd0e9d785b20ee2c6ad9d65c383 Mon Sep 17 00:00:00 2001
From: nightfox <>
Date: Tue, 24 Apr 2018 04:18:26 +0000
Subject: [PATCH] Version 1.17 beta 59: When submitting a vote, the thread_id
 field is now set to the message/poll's message ID, not the message number.

---
 xtrn/DDMsgReader/DDMsgReader.js | 31 ++++++++++++++++++-------------
 xtrn/DDMsgReader/readme.txt     |  4 ++--
 2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js
index 7af0ae817f..1afdd191c8 100644
--- a/xtrn/DDMsgReader/DDMsgReader.js
+++ b/xtrn/DDMsgReader/DDMsgReader.js
@@ -115,10 +115,14 @@
  * 2018-03-25 Eric Oulashin     Version 1.17 beta 58
  *                              For voting, updated to use BallotHdr (791)
  *                              instead of SelectHdr (501).
+ * 2018-04-23 Eric Oulashin     Version 1.17 beta 59
+ *                              When submitting a vote, the thread_id field is now
+ *                              set to the message/poll's message ID, not message number.
  */
 
- // TODO: Add a command for closing a poll (only available to the user who opened the
- // poll).
+// TODO: Support anonymous posts?  Bit values for sub[x].settings:
+//SUB_ANON		=(1<<8);	// Allow anonymous posts on sub
+//SUB_AONLY		=(1<<9);	// Anonymous only
 
 /* Command-line arguments (in -arg=val format, or -arg format to enable an
    option):
@@ -201,8 +205,8 @@ if (system.version_num < 31500)
 }
 
 // Reader version information
-var READER_VERSION = "1.17 Beta 58";
-var READER_DATE = "2018-03-19";
+var READER_VERSION = "1.17 Beta 59";
+var READER_DATE = "2018-04-23";
 
 // Keyboard key codes for displaying on the screen
 var UP_ARROW = ascii(24);
@@ -10065,7 +10069,7 @@ function DigDistMsgReader_PromptAndDeleteMessage(pOffset, pPromptLoc, pClearProm
 					}
 				}
 				// Delete any vote response messages for this message
-				var voteDelRetObj = deleteVoteMsgs(msgbase, msgHeader.number, (this.subBoardCode == "mail"));
+				var voteDelRetObj = deleteVoteMsgs(msgbase, msgHeader.number, msgHeader.id, (this.subBoardCode == "mail"));
 				if (!voteDelRetObj.allVoteMsgsDeleted)
 				{
 					console.print("\1n");
@@ -13591,7 +13595,7 @@ function DigDistMsgReader_DeleteSelectedMessages()
 						delete this.selectedMessages[subBoardCode][msgIdx];
 
 						// Delete any vote response messages that may exist for this message
-						var voteDelRetObj = deleteVoteMsgs(msgBase, msgHdr.number, (subBoardCode == "mail"));
+						var voteDelRetObj = deleteVoteMsgs(msgBase, msgHdr.number, msgHdr.id, (subBoardCode == "mail"));
 						// TODO: If the main messages was deleted, does it matter if vote response messages
 						// are deleted?
 						if (!voteDelRetObj.allVoteMsgsDeleted)
@@ -13981,7 +13985,7 @@ function DigDistMsgReader_VoteOnMessage(pMsgHdr, pRemoveNLsFromVoteText)
 	// saved to the messagebase
 	var voteMsgHdr = new Object();
 	voteMsgHdr.thread_back = pMsgHdr.number;
-	voteMsgHdr.reply_id = pMsgHdr.number;
+	voteMsgHdr.reply_id = pMsgHdr.id;
 	voteMsgHdr.from = (msgbase.cfg.settings & SUB_NAME) == SUB_NAME ? user.name : user.alias;
 	if (pMsgHdr.from.hasOwnProperty("from_net_type"))
 	{
@@ -14248,7 +14252,7 @@ function DigDistMsgReader_GetUpvoteAndDownvoteInfo(pMsgHdr)
 						continue;
 					// If this header's thread_back or reply_id matches the poll message
 					// number, then append the 'user voted' string to the message body.
-					if ((tmpHdrs[tmpProp].thread_back == pMsgHdr.number) || (tmpHdrs[tmpProp].reply_id == pMsgHdr.number))
+					if ((tmpHdrs[tmpProp].thread_back == pMsgHdr.number) || (tmpHdrs[tmpProp].reply_id == pMsgHdr.id))
 					{
 						var tmpMessageBody = msgbase.get_msg_body(false, tmpHdrs[tmpProp].number);
 						if ((tmpHdrs[tmpProp].field_list.length == 0) && (tmpMessageBody.length == 0))
@@ -14394,7 +14398,7 @@ function DigDistMsgReader_GetMsgBody(pMsgHdr)
 							continue;
 						// If this header's thread_back or reply_id matches the poll message
 						// number, then append the 'user voted' string to the message body.
-						if ((tmpHdrs[tmpProp].thread_back == pMsgHdr.number) || (tmpHdrs[tmpProp].reply_id == pMsgHdr.number))
+						if ((tmpHdrs[tmpProp].thread_back == pMsgHdr.number) || (tmpHdrs[tmpProp].reply_id == pMsgHdr.id))
 						{
 							var msgWrittenLocalTime = msgWrittenTimeToLocalBBSTime(tmpHdrs[tmpProp]);
 							var voteDate = strftime("%a %b %d %Y %H:%M:%S", msgWrittenLocalTime);
@@ -18769,13 +18773,14 @@ function numReadableMsgs(pMsgbase, pSubBoardCode)
 // Parameters:
 //  pMsgbase: A MessageBase object containing the messages to be deleted
 //  pMsgNum: The number of the message for which vote messages should be deleted
+//  pMsgID: The ID of the message for which vote messages should be deleted
 //  pIsMailSub: Boolean - Whether or not it's the personal email area
 //
 // Return value: An object containing the following properties:
 //               numVoteMsgs: The number of vote messages for the given message number
 //               numVoteMsgsDeleted: The number of vote messages that were deleted
 //               allVoteMsgsDeleted: Boolean - Whether or not all vote messages were deleted
-function deleteVoteMsgs(pMsgbase, pMsgNum, pIsEmailSub)
+function deleteVoteMsgs(pMsgbase, pMsgNum, pMsgID, pIsEmailSub)
 {
 	var retObj = {
 		numVoteMsgs: 0,
@@ -18800,10 +18805,10 @@ function deleteVoteMsgs(pMsgbase, pMsgNum, pIsEmailSub)
 		{
 			if (msgHdrs[msgHdrsProp] == null)
 				continue;
-			// If this header is a vote header and its thread_back or reply_id matches the given message
-			// number, then we can delete this message.
+			// If this header is a vote header and its thread_back or reply_id matches the given message,
+			// then we can delete this message.
 			var isVoteMsg = (((msgHdrs[msgHdrsProp].attr & MSG_VOTE) == MSG_VOTE) || ((msgHdrs[msgHdrsProp].attr & MSG_UPVOTE) == MSG_UPVOTE) || ((msgHdrs[msgHdrsProp].attr & MSG_DOWNVOTE) == MSG_DOWNVOTE));
-			if (isVoteMsg && (msgHdrs[msgHdrsProp].thread_back == pMsgNum) || (msgHdrs[msgHdrsProp].reply_id == pMsgNum))
+			if (isVoteMsg && (msgHdrs[msgHdrsProp].thread_back == pMsgNum) || (msgHdrs[msgHdrsProp].reply_id == pMsgID))
 			{
 				++retObj.numVoteMsgs;
 				msgWasDeleted = pMsgbase.remove_msg(false, msgHdrs[msgHdrsProp].number);
diff --git a/xtrn/DDMsgReader/readme.txt b/xtrn/DDMsgReader/readme.txt
index b70362a281..be770319e7 100644
--- a/xtrn/DDMsgReader/readme.txt
+++ b/xtrn/DDMsgReader/readme.txt
@@ -1,6 +1,6 @@
                       Digital Distortion Message Reader
-                                 Version 1.17 beta 58
-                           Release date: 2018-03-25
+                                 Version 1.17 beta 59
+                           Release date: 2018-04-23
 
                                      by
 
-- 
GitLab