From eacaedaf3d13aef60cf06c6680177997752ac59a Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sun, 8 Dec 2019 21:05:29 +0000 Subject: [PATCH] automatically update active browse if the revision has changed --- .../java/com/muwire/webui/BrowseManager.java | 7 +++++++ .../java/com/muwire/webui/BrowseServlet.java | 1 + webui/src/main/js/browse.js | 21 +++++++++++++------ webui/src/main/webapp/BrowseHost.jsp | 1 - 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/webui/src/main/java/com/muwire/webui/BrowseManager.java b/webui/src/main/java/com/muwire/webui/BrowseManager.java index 0d5fccaa..3adf6735 100644 --- a/webui/src/main/java/com/muwire/webui/BrowseManager.java +++ b/webui/src/main/java/com/muwire/webui/BrowseManager.java @@ -27,6 +27,7 @@ public class BrowseManager { if (browse == null) return; // hmm browse.status = e.getStatus(); + browse.revision++; if (browse.status == BrowseStatus.FETCHING) browse.totalResults = e.getTotalResults(); } @@ -36,6 +37,7 @@ public class BrowseManager { if (browse == null) return; browse.results.add(e); + browse.revision++; } void browse(Persona p) { @@ -62,6 +64,7 @@ public class BrowseManager { private final Persona persona; private volatile BrowseStatus status; private volatile int totalResults; + private volatile long revision; private final List results = Collections.synchronizedList(new ArrayList<>()); Browse(Persona persona) { @@ -79,5 +82,9 @@ public class BrowseManager { public List getResults() { return results; } + + public long getRevision() { + return revision; + } } } diff --git a/webui/src/main/java/com/muwire/webui/BrowseServlet.java b/webui/src/main/java/com/muwire/webui/BrowseServlet.java index f32b8aa3..91c8d590 100644 --- a/webui/src/main/java/com/muwire/webui/BrowseServlet.java +++ b/webui/src/main/java/com/muwire/webui/BrowseServlet.java @@ -49,6 +49,7 @@ public class BrowseServlet extends HttpServlet { sb.append("").append(browse.getStatus()).append(""); sb.append("").append(browse.getTotalResults()).append(""); sb.append("").append(browse.getResults().size()).append(""); + sb.append("").append(browse.getRevision()).append(""); sb.append(""); }); sb.append(""); diff --git a/webui/src/main/js/browse.js b/webui/src/main/js/browse.js index 0199e6c9..1ff93bbc 100644 --- a/webui/src/main/js/browse.js +++ b/webui/src/main/js/browse.js @@ -9,12 +9,13 @@ class Result { } class Browse { - constructor(host, hostB64, status, totalResults, receivedResults) { + constructor(host, hostB64, status, totalResults, receivedResults, revision) { this.host = host this.hostB64 = hostB64 this.totalResults = totalResults this.receivedResults = receivedResults this.status = status + this.revision = revision } } @@ -31,6 +32,11 @@ function refreshActive() { var xmlhttp = new XMLHttpRequest() xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { + + var currentBrowse = null + if (currentHost != null) + currentBrowse = browsesByHost.get(currentHost) + var xmlDoc = this.responseXML var browses = xmlDoc.getElementsByTagName("Browse") var i @@ -40,8 +46,9 @@ function refreshActive() { var status = browses[i].getElementsByTagName("BrowseStatus")[0].childNodes[0].nodeValue; var totalResults = browses[i].getElementsByTagName("TotalResults")[0].childNodes[0].nodeValue; var count = browses[i].getElementsByTagName("ResultsCount")[0].childNodes[0].nodeValue; + var revision = browses[i].getElementsByTagName("Revision")[0].childNodes[0].nodeValue; - var browse = new Browse(host, hostB64, status, totalResults, count) + var browse = new Browse(host, hostB64, status, totalResults, count, revision) browsesByHost.set(host, browse) } @@ -62,6 +69,12 @@ function refreshActive() { var tableDiv = document.getElementById("activeBrowses") tableDiv.innerHTML = tableHtml + + if (currentBrowse != null) { + var newBrowse = browsesByHost.get(currentHost) + if (currentBrowse.revision < newBrowse.revision) + showResults(currentHost) + } } } xmlhttp.open("GET", "/MuWire/Browse?section=status", true) @@ -74,10 +87,6 @@ function getBrowseLink(host, text) { function showResults(host) { - var refreshLink = getBrowseLink(host, "Refresh") - var linkDiv = document.getElementById("refresh-link") - linkDiv.innerHTML = refreshLink - var browse = browsesByHost.get(host) var xmlhttp = new XMLHttpRequest() xmlhttp.onreadystatechange = function() { diff --git a/webui/src/main/webapp/BrowseHost.jsp b/webui/src/main/webapp/BrowseHost.jsp index ed92377d..cbd87243 100644 --- a/webui/src/main/webapp/BrowseHost.jsp +++ b/webui/src/main/webapp/BrowseHost.jsp @@ -37,7 +37,6 @@ String pagetitle="Browse Host";
-