From: Art Cancro Date: Sat, 16 Jul 2022 17:08:16 +0000 (-0400) Subject: Mailbox refresh is working completely now. X-Git-Tag: v958~48 X-Git-Url: https://code.citadel.org/?a=commitdiff_plain;h=8c42352092296d1b01ad9204d7b3447e83de6a9a;p=citadel.git Mailbox refresh is working completely now. --- diff --git a/webcit-ng/README.txt b/webcit-ng/README.txt index 56b320021..25e90ab29 100644 --- a/webcit-ng/README.txt +++ b/webcit-ng/README.txt @@ -7,8 +7,8 @@ layered with as little spaghetti as possible. Please don't mess with this yet. I'm only pushing it upstream so it gets backed up. -DESIGN GOALS: -------------- +DESIGN GOALS +------------ * Hold as little state as possible @@ -29,7 +29,8 @@ REST format URLs will generally take the form of: /ctdl/objectClass/[container/]object[/operation] -We are using: +We are using +------------ * libcitadel for information about the Citadel server, some string handling, and the JSON encoder * Expat for DAV handling diff --git a/webcit-ng/room_functions.c b/webcit-ng/room_functions.c index d2e75f55b..67b3e9082 100644 --- a/webcit-ng/room_functions.c +++ b/webcit-ng/room_functions.c @@ -80,7 +80,6 @@ void json_stat(struct http_transaction *h, struct ctdlsession *c) { ctdl_printf(c, "STAT"); ctdl_readline(c, buf, sizeof(buf)); - syslog(LOG_DEBUG, "%s", buf); if (buf[0] == '2') { JsonValue *j = NewJsonObject(HKEY("stat")); extract_token(field, &buf[4], 0, '|', sizeof field); diff --git a/webcit-ng/static/js/view_mail.js b/webcit-ng/static/js/view_mail.js index b53cb7adc..c104c4298 100644 --- a/webcit-ng/static/js/view_mail.js +++ b/webcit-ng/static/js/view_mail.js @@ -8,7 +8,6 @@ var selected_message = 0; // Remember the last message that was selected var RefreshMailboxInterval; // We store our refresh timer here -var last_mtime; // Watch this mailbox using the room's mtime // Render a message into the mailbox view @@ -140,8 +139,7 @@ function mail_display() { = "
" ; - last_mtime = 0; // Keep track of room's mod time so we know when to refresh - refresh_mail_display(); + render_mailbox_display(); try { // if this was already set up, clear it so there aren't multiple clearInterval(RefreshMailboxInterval); } @@ -151,7 +149,7 @@ function mail_display() { } -// Display or refresh the mailbox +// Refresh the mailbox, either for the first time or whenever needed function refresh_mail_display() { // If the "ctdl-mailbox-pane" no longer exists, the user has navigated to a different part of the site, @@ -166,12 +164,23 @@ function refresh_mail_display() { return; } - if (last_mtime == 0) { - last_mtime = room_mtime; + // Ask the server if the room has been written to since our last look at it. + url = "/ctdl/r/" + escapeHTMLURI(current_room) + "/stat"; + fetch_stat = async() => { + response = await fetch(url); + stat = await(response.json()); + if (stat.room_mtime > room_mtime) { + room_mtime = stat.room_mtime; + render_mailbox_display(); + } } - console.log("refresh_mail_display() last_mtime is " + last_mtime + " FIXME"); + fetch_stat(); +} + + +// This is where the rendering of the message list in the mailbox view is performed. +function render_mailbox_display() { - // Now go to the server. url = "/ctdl/r/" + escapeHTMLURI(current_room) + "/mailbox"; fetch_mailbox = async() => { response = await fetch(url);