Initial hack at mail folder list
authorArt Cancro <ajc@citadel.org>
Sat, 14 Jan 2023 20:00:43 +0000 (15:00 -0500)
committerArt Cancro <ajc@citadel.org>
Sat, 14 Jan 2023 20:00:43 +0000 (15:00 -0500)
webcit-ng/static/index.html
webcit-ng/static/js/mail_folder_list.js [new file with mode: 0644]
webcit-ng/static/js/views.js

index 057aabdb1bc300a62160eb44719ae6fda5cb839d..801ad90037cc4cf754bd7335ef05de63a7e50333 100644 (file)
@@ -69,6 +69,7 @@
 <script type="text/javascript" src="js/views.js"></script>
 <script type="text/javascript" src="js/view_forum.js"></script>
 <script type="text/javascript" src="js/view_mail.js"></script>
+<script type="text/javascript" src="js/mail_folder_list.js"></script>
 <script type="text/javascript" src="js/roomlist.js"></script>
 <script type="text/javascript" src="js/user_profile.js"></script>
 <script>
diff --git a/webcit-ng/static/js/mail_folder_list.js b/webcit-ng/static/js/mail_folder_list.js
new file mode 100644 (file)
index 0000000..9f408f1
--- /dev/null
@@ -0,0 +1,43 @@
+// Display the mail folder list
+//
+// Copyright (c) 2016-2022 by the citadel.org team
+//
+// This program is open source software.  Use, duplication, or
+// disclosure are subject to the GNU General Public License v3.
+
+
+// Display the mail folder list in the specified div
+function display_mail_folder_list(target_div) {
+
+       display_mail_folder_list_async = async(target_div) => {
+               let rendered_list = "hi from display_mail_folder_list_async()";
+
+               // load the room list from the Citadel Server
+               response = await fetch("/ctdl/r/", { method: "GET" } );
+               if (response.ok) {
+                       roomlist = await response.json();
+                       rendered_list = render_mail_folder_list(roomlist);
+               }
+               else {
+                       rendered_list = "&#10060; " + response.status;
+               }
+
+               document.getElementById(target_div).innerHTML = rendered_list;
+       }
+
+       document.getElementById(target_div).innerHTML = "<img src=\"/ctdl/s/images/throbber.gif\" />";  // show throbber
+       document.getElementById(target_div).style.display = "block";
+       display_mail_folder_list_async(target_div);
+}
+
+
+// Given a JSON object containing the output of the `/ctdl/r` API call, return a rendered mail folder list.
+function render_mail_folder_list(roomlist_json) {
+       let rendered_list = "";
+
+       for (let i=0; i<roomlist_json.length; ++i) {
+               rendered_list += roomlist_json[i].name + "<br>";
+       }
+
+       return rendered_list;
+}
index e3896dd302b7ae863c3cdba859d570cc6d9efb73..49323ee16896e1c2e9eb7280b9a7998ddb91ee37 100644 (file)
@@ -40,7 +40,7 @@ function render_room_view() {
                case views.VIEW_MAILBOX:
                case views.VIEW_DRAFTS:
                        document.getElementById("ctdl-sidebar-button-mail").classList.add("ctdl-sidebar-button-selected");
-                       document.getElementById("ctdl_mail_folder_list").style.display = "block";       // show folder list
+                       display_mail_folder_list("ctdl_mail_folder_list");
                        view_render_mail();
                        break;