From 7ec6257ac0d00db980ce713df8ad3378334c630f Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Sun, 15 Dec 2019 19:02:51 +0000 Subject: [PATCH] implement closing browses --- .../java/com/muwire/webui/BrowseServlet.java | 15 ++++++++++++- webui/src/main/js/browse.js | 21 ++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/webui/src/main/java/com/muwire/webui/BrowseServlet.java b/webui/src/main/java/com/muwire/webui/BrowseServlet.java index 1fbdce72..97dabbe2 100644 --- a/webui/src/main/java/com/muwire/webui/BrowseServlet.java +++ b/webui/src/main/java/com/muwire/webui/BrowseServlet.java @@ -188,8 +188,21 @@ public class BrowseServlet extends HttpServlet { try { Thread.sleep(100); } catch (InterruptedException ignore) {} + } else if (action.equals("close")) { + String personaB64 = req.getParameter("host"); + if (personaB64 == null) { + resp.sendError(403,"Bad param"); + return; + } + Persona host; + try { + host = new Persona(new ByteArrayInputStream(Base64.decode(personaB64))); + } catch (Exception bad) { + resp.sendError(403,"Bad param"); + return; + } + browseManager.getBrowses().remove(host); } - // TODO: implement canceling of browse } @Override diff --git a/webui/src/main/js/browse.js b/webui/src/main/js/browse.js index 0ecb11c1..4d14d7c6 100644 --- a/webui/src/main/js/browse.js +++ b/webui/src/main/js/browse.js @@ -42,6 +42,11 @@ class Browse { return "" + this.host + "" } + + getCloseLink() { + var link = new Link("[X]", "close", [this.hostB64]) + return link.render() + } } function initBrowse() { @@ -55,6 +60,18 @@ var resultsByInfoHash = new Map() var browseKey = null var browseOrder = null +function close(b64) { + var xmlhttp = new XMLHttpRequest() + xmlhttp.onreadystatechange = function() { + if (this.readyState == 4 && this.status == 200) { + refreshActive() + } + } + xmlhttp.open("POST", "/MuWire/Browse", true) + xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + xmlhttp.send("action=close&host=" + b64) +} + function showCertificates(hostB64, infoHash) { var fetch = new CertificateFetch(hostB64, infoHash) certificateFetches.set(fetch.divId, fetch) @@ -128,9 +145,11 @@ function refreshActive() { for (i = 0;i < activeBrowses.length; i++) { var browse = activeBrowses[i] var browseLink = browse.getBrowseLink() + var closeLink = browse.getCloseLink() + var nameHtml = "
" + browseLink + "

" + closeLink + "

" var mapping = new Map() - mapping.set("Host", browseLink) + mapping.set("Host", nameHtml) mapping.set("Status", browse.status) var percent = browse.receivedResults + "/" + browse.totalResults