browse links from search results

This commit is contained in:
Zlatin Balevsky
2019-12-08 12:31:02 +00:00
parent 949b616fdd
commit c3e1298ea3
4 changed files with 45 additions and 7 deletions

View File

@@ -46,6 +46,14 @@ public class BrowseManager {
core.getEventBus().publish(event);
}
boolean isBrowsing(Persona p) {
Browse browse = browses.get(p);
if (browse == null)
return false;
return browse.status == BrowseStatus.CONNECTING ||
browse.status == BrowseStatus.FETCHING;
}
Map<Persona, Browse> getBrowses(){
return browses;
}

View File

@@ -116,7 +116,6 @@ public class BrowseServlet extends HttpServlet {
return;
}
browseManager.browse(host);
resp.sendRedirect("/MuWire/BrowseHost.jsp");
} else if (action.equals("download")) {
if (core == null) {
resp.sendError(403, "Not initialized");

View File

@@ -22,6 +22,7 @@ public class SearchServlet extends HttpServlet {
private SearchManager searchManager;
private ConnectionCounter connectionCounter;
private DownloadManager downloadManager;
private BrowseManager browseManager;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
@@ -64,6 +65,7 @@ public class SearchServlet extends HttpServlet {
sb.append("</Sender>");
sb.append("<SenderB64>").append(sender.toBase64()).append("</SenderB64>");
sb.append("<Browse>").append(resultsFromSender.iterator().next().getBrowse()).append("</Browse>");
sb.append("<Browsing>").append(browseManager.isBrowsing(sender)).append("</Browsing>");
resultsFromSender.forEach(result -> {
sb.append("<Result>");
sb.append("<Name>");
@@ -114,6 +116,7 @@ public class SearchServlet extends HttpServlet {
sb.append("<Sender>").append(Util.escapeHTMLinXML(result.getSender().getHumanReadableName())).append("</Sender>");
sb.append("<SenderB64>").append(result.getSender().toBase64()).append("</SenderB64>");
sb.append("<Browse>").append(result.getBrowse()).append("</Browse>");
sb.append("<Browsing>").append(browseManager.isBrowsing(result.getSender())).append("</Browsing>");
if (result.getComment() != null) {
sb.append("<Comment>")
.append(Util.escapeHTMLinXML(result.getComment()))
@@ -156,6 +159,7 @@ public class SearchServlet extends HttpServlet {
searchManager = (SearchManager) config.getServletContext().getAttribute("searchManager");
connectionCounter = (ConnectionCounter) config.getServletContext().getAttribute("connectionCounter");
downloadManager = (DownloadManager) config.getServletContext().getAttribute("downloadManager");
browseManager = (BrowseManager) config.getServletContext().getAttribute("browseManager");
}
}

View File

@@ -35,6 +35,7 @@ class ResultsBySender {
this.sender = xmlNode.getElementsByTagName("Sender")[0].childNodes[0].nodeValue;
this.senderB64 = xmlNode.getElementsByTagName("SenderB64")[0].childNodes[0].nodeValue;
this.browse = xmlNode.getElementsByTagName("Browse")[0].childNodes[0].nodeValue;
this.browsing = xmlNode.getElementsByTagName("Browsing")[0].childNodes[0].nodeValue;
this.results = new Map();
var resultNodes = xmlNode.getElementsByTagName("Result");
var i;
@@ -79,6 +80,7 @@ class ResultByFile {
this.sender = xmlNode.getElementsByTagName("Sender")[0].childNodes[0].nodeValue;
this.senderB64 = xmlNode.getElementsByTagName("SenderB64")[0].childNodes[0].nodeValue;
this.browse = xmlNode.getElementsByTagName("Browse")[0].childNodes[0].nodeValue;
this.browsing = xmlNode.getElementsByTagName("Browsing")[0].childNodes[0].nodeValue;
this.comment = null;
var comment = xmlNode.getElementsByTagName("Comment")
if (comment.length == 1)
@@ -218,7 +220,13 @@ function updateFile(fileInfoHash) {
}
}
table += "</td>";
table += "<td>" + result.browse + "</td>"
if (result.browse == "true") {
if (result.browsing == "true")
table += "<td>Browsing</td>"
else {
table += "<td><span id='browse-link-" + result.senderB64 + "'>" + getBrowseLink(result.senderB64) + "</span></td>"
}
}
table += "</tr>";
}
table += "</tbody></table>";
@@ -239,10 +247,12 @@ function updateUUIDBySender(resultUUID) {
table += "<tr><td><a href='#' onclick='updateSender(\""+senderName+"\");return false;'>"
table += senderName;
table += "</a></td>";
if (senderBatch.browse)
table += "<td>true</td>"
else
table += "<td>false</td>"
if (senderBatch.browse == "true") {
if (senderBatch.browsing == "true")
table += "<td>Browsing</td>"
else
table += "<td><span id='browse-link-" + senderBatch.senderB64 + "'>" + getBrowseLink(senderBatch.senderB64) + "</span></td>"
}
table += "</tr>";
}
table += "</tbody></table>";
@@ -376,6 +386,23 @@ function refreshGroupByFile() {
xmlhttp.send();
}
function getBrowseLink(host) {
return "<a href='#' onclick='window.browse(\"" + host + "\"); return false;'>Browse</a>"
}
function browse(host) {
var xmlhttp = new XMLHttpRequest()
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var linkSpan = document.getElementById("browse-link-"+host)
linkSpan.innerHTML = "Browsing"
}
}
xmlhttp.open("POST", "/MuWire/Browse", true)
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send("action=browse&host="+host)
}
function initGroupBySender() {
setInterval(refreshGroupBySender, 3000);
setTimeout(refreshGroupBySender, 1);
@@ -384,4 +411,4 @@ function initGroupBySender() {
function initGroupByFile() {
setInterval(refreshGroupByFile, 3000);
setTimeout(refreshGroupByFile, 1);
}
}