From dcd0101c5151c2961864ee7f0a02c47c16a98ded Mon Sep 17 00:00:00 2001
From: Eric Oulashin <eric.oulashin@gmail.com>
Date: Sat, 12 Feb 2022 17:46:16 -0800
Subject: [PATCH] Digital Distortion Area Choosers version 1.22: In the file
 area chooser, fixed a lightbar file directory choosing issue when using name
 collapsing (was using the wrong data structure)

---
 xtrn/DDAreaChoosers/DDFileAreaChooser.js | 47 +++++++++++++++++-------
 xtrn/DDAreaChoosers/DDMsgAreaChooser.js  |  6 ++-
 xtrn/DDAreaChoosers/readme.txt           |  4 +-
 xtrn/DDAreaChoosers/revision_history.txt |  3 ++
 4 files changed, 43 insertions(+), 17 deletions(-)

diff --git a/xtrn/DDAreaChoosers/DDFileAreaChooser.js b/xtrn/DDAreaChoosers/DDFileAreaChooser.js
index 56d24f87cd..c938cf3b85 100644
--- a/xtrn/DDAreaChoosers/DDFileAreaChooser.js
+++ b/xtrn/DDAreaChoosers/DDFileAreaChooser.js
@@ -15,6 +15,10 @@
  *                            instead of using internal lightbar code.
  * 2022-01-15 Eric Oulashin   Version 1.21
  *                            Added directory name collapsing
+ * 2022-02-12 Eric Oulashin   Version 1.22
+ *                            Fixed lightbar file directory choosing issue when
+ *                            using name collapsing (was using the wrong data
+ *                            structure)
  */
 
 /* Command-line arguments:
@@ -52,8 +56,8 @@ if (system.version_num < 31400)
 }
 
 // Version & date variables
-var DD_FILE_AREA_CHOOSER_VERSION = "1.21";
-var DD_FILE_AREA_CHOOSER_VER_DATE = "2022-01-15";
+var DD_FILE_AREA_CHOOSER_VERSION = "1.22";
+var DD_FILE_AREA_CHOOSER_VER_DATE = "2022-02-12";
 
 // Keyboard input key codes
 var CTRL_H = "\x08";
@@ -1289,7 +1293,10 @@ function DDFileAreaChooser_SelectFileArea_Lightbar(pLevel, pLibIdx, pDirIdx)
 				if (chosenFileDirIdx > -1)
 				{
 					// Set the current file directory
-					bbs.curdir_code = file_area.lib_list[chosenIdx].dir_list[chosenFileDirIdx].code;
+					if (this.useDirCollapsing)
+						bbs.curdir_code = this.lib_list[chosenIdx].dir_list[chosenFileDirIdx].code;
+					else
+						bbs.curdir_code = file_area.lib_list[chosenIdx].dir_list[chosenFileDirIdx].code;
 					continueOn = false;
 				}
 				else
@@ -1498,7 +1505,15 @@ function DDFileAreaChooser_CreateLightbarFileDirMenu(pLibIdx, pDirIdx, pLevel)
 				{
 					var showDirMark = false;
 					if ((typeof(bbs.curdir_code) == "string") && (bbs.curdir_code != ""))
-						showDirMark = ((this.libIdx == file_area.dir[bbs.curdir_code].lib_index) && (pDirIdx == file_area.dir[bbs.curdir_code].index));
+					{
+						if (this.areaChooser.lib_list[this.libIdx].dir_list[pDirIdx].hasOwnProperty("subdir_list") && this.areaChooser.lib_list[this.libIdx].dir_list[pDirIdx].subdir_list.length > 0)
+						{
+							for (var subDirIdx = 0; subDirIdx < this.areaChooser.lib_list[this.libIdx].dir_list[pDirIdx].subdir_list.length && !showDirMark; ++subDirIdx)
+								showDirMark = (bbs.curdir_code == this.areaChooser.lib_list[this.libIdx].dir_list[pDirIdx].subdir_list[subDirIdx].code);
+						}
+						else if (this.areaChooser.lib_list[this.libIdx].dir_list[pDirIdx].hasOwnProperty("code"))
+							showDirMark = (bbs.curdir_code == this.areaChooser.lib_list[this.libIdx].dir_list[pDirIdx].code);
+					}
 					// Set the directory description.  And if it has subdirectories,
 					// then append some text indicating so.
 					var dirDesc = this.areaChooser.lib_list[this.libIdx].dir_list[pDirIdx].description;
@@ -1756,16 +1771,22 @@ function numFilesInDir(pLibIdx, pDirIdx)
 {
 	var numFiles = 0;
 
-	// Count the files in the directory.  If it's not a directory, then
-	// increment numFiles.
-	var files = directory(file_area.lib_list[pLibIdx].dir_list[pDirIdx].path + "*.*");
-	numFiles = files.length;
-	// Make sure directories aren't counted: Go through the files array, and
-	// for each directory, decrement numFiles.
-	for (var i in files)
+	// file_area.lib_list[pLibIdx].dir_list[pDirIdx].files was added in Synchronet 3.18c
+	if (file_area.lib_list[pLibIdx].dir_list[pDirIdx].hasOwnProperty("files"))
+		numFiles = +(file_area.lib_list[pLibIdx].dir_list[pDirIdx].files);
+	else
 	{
-		if (file_isdir(files[i]))
-			--numFiles;
+		// Count the files in the directory.  If it's not a directory, then
+		// increment numFiles.
+		var files = directory(file_area.lib_list[pLibIdx].dir_list[pDirIdx].path + "*.*");
+		numFiles = files.length;
+		// Make sure directories aren't counted: Go through the files array, and
+		// for each directory, decrement numFiles.
+		for (var i in files)
+		{
+			if (file_isdir(files[i]))
+				--numFiles;
+		}
 	}
 
 	return numFiles;
diff --git a/xtrn/DDAreaChoosers/DDMsgAreaChooser.js b/xtrn/DDAreaChoosers/DDMsgAreaChooser.js
index c65908aa26..d0ad3d4eca 100644
--- a/xtrn/DDAreaChoosers/DDMsgAreaChooser.js
+++ b/xtrn/DDAreaChoosers/DDMsgAreaChooser.js
@@ -20,6 +20,8 @@
  * 2022-01-15 Eric Oulashin   Version 1.21
  *                            Finished sub-board collapsing (finally) and releasing
  *                            this version.
+ * 2022-02-12 Eric Oulashin   Version 1.22
+ *                            Updated the version to match the file area chooser
  *                                  
 */
 
@@ -62,8 +64,8 @@ if (system.version_num < 31400)
 }
 
 // Version & date variables
-var DD_MSG_AREA_CHOOSER_VERSION = "1.21";
-var DD_MSG_AREA_CHOOSER_VER_DATE = "2022-01-15";
+var DD_MSG_AREA_CHOOSER_VERSION = "1.22";
+var DD_MSG_AREA_CHOOSER_VER_DATE = "2022-02-12";
 
 // Keyboard input key codes
 var CTRL_H = "\x08";
diff --git a/xtrn/DDAreaChoosers/readme.txt b/xtrn/DDAreaChoosers/readme.txt
index dd01c2fc4c..e13f786b94 100644
--- a/xtrn/DDAreaChoosers/readme.txt
+++ b/xtrn/DDAreaChoosers/readme.txt
@@ -1,6 +1,6 @@
                      Digital Distortion Area Choosers
-                              Version 1.21
-                        Release date: 2022-01-15
+                              Version 1.22
+                        Release date: 2022-02-12
 
                                   by
 
diff --git a/xtrn/DDAreaChoosers/revision_history.txt b/xtrn/DDAreaChoosers/revision_history.txt
index d9a2ef2d9f..2894016089 100644
--- a/xtrn/DDAreaChoosers/revision_history.txt
+++ b/xtrn/DDAreaChoosers/revision_history.txt
@@ -5,6 +5,9 @@ Revision History (change log)
 =============================
 Version  Date         Description
 -------  ----         -----------
+1.22     2022-01-12   In the file area chooser, fixed a lightbar file directory
+                      choosing issue when using name collapsing (was using the
+                      wrong data structure)
 1.21     2022-01-15   Now supports message sub-board & file directory name
                       collapsing, allowing simplified file directory and message
                       sub-board lists for ones with common groups, adding a 3rd
-- 
GitLab