diff --git a/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy b/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy
index 038f1a9f..218404fc 100644
--- a/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy
+++ b/core/src/main/groovy/com/muwire/core/trust/TrustSubscriber.groovy
@@ -62,6 +62,10 @@ class TrustSubscriber {
}
}
}
+
+ public boolean isSubscribed(Persona p) {
+ remoteTrustLists.containsKey(p.destination)
+ }
private void checkLoop() {
try {
diff --git a/webui/src/main/java/com/muwire/webui/TrustServlet.java b/webui/src/main/java/com/muwire/webui/TrustServlet.java
index 2cfc4e8f..ba43472e 100644
--- a/webui/src/main/java/com/muwire/webui/TrustServlet.java
+++ b/webui/src/main/java/com/muwire/webui/TrustServlet.java
@@ -16,6 +16,7 @@ import com.muwire.core.trust.TrustEvent;
import com.muwire.core.trust.TrustLevel;
import com.muwire.core.trust.TrustService;
import com.muwire.core.trust.TrustService.TrustEntry;
+import com.muwire.core.trust.TrustSubscriber;
import com.muwire.core.trust.TrustSubscriptionEvent;
import net.i2p.data.Base64;
@@ -44,13 +45,13 @@ public class TrustServlet extends HttpServlet {
sb.append("");
for (TrustEntry te : core.getTrustService().getGood().values()) {
- TEtoXML(te,sb);
+ TEtoXML(te,sb, core.getTrustSubscriber());
}
sb.append("");
sb.append("");
for (TrustEntry te : core.getTrustService().getBad().values()) {
- TEtoXML(te, sb);
+ TEtoXML(te, sb, core.getTrustSubscriber());
}
sb.append("");
@@ -168,11 +169,12 @@ public class TrustServlet extends HttpServlet {
trustManager = (TrustManager) config.getServletContext().getAttribute("trustManager");
}
- private static void TEtoXML(TrustEntry te, StringBuilder sb) {
+ private static void TEtoXML(TrustEntry te, StringBuilder sb, TrustSubscriber trustSubscriber) {
sb.append("");
sb.append("").append(Util.escapeHTMLinXML(te.getPersona().getHumanReadableName())).append("");
sb.append("").append(te.getPersona().toBase64()).append("");
sb.append("").append(Util.escapeHTMLinXML(te.getReason())).append("");
+ sb.append("").append(trustSubscriber.isSubscribed(te.getPersona())).append("");
sb.append("");
}
diff --git a/webui/src/main/js/trustUsers.js b/webui/src/main/js/trustUsers.js
index ceb592e7..63068d85 100644
--- a/webui/src/main/js/trustUsers.js
+++ b/webui/src/main/js/trustUsers.js
@@ -2,7 +2,11 @@ class Persona {
constructor(xmlNode) {
this.user = xmlNode.getElementsByTagName("User")[0].childNodes[0].nodeValue
this.userB64 = xmlNode.getElementsByTagName("UserB64")[0].childNodes[0].nodeValue
- this.reason = xmlNode.getElementsByTagName("Reason")[0].childNodes[0].nodeValue
+ this.subscribed = xmlNode.getElementsByTagName("Subscribed")[0].childNodes[0].nodeValue
+ this.reason = ""
+ try {
+ this.reason = xmlNode.getElementsByTagName("Reason")[0].childNodes[0].nodeValue
+ } catch (ignore) {}
}
getTrustedLink() {
@@ -16,12 +20,28 @@ class Persona {
getDistrustedLink() {
return "Mark Distrusted"
}
+
+ getSubscribeLink() {
+ return "Subscribe"
+ }
}
var trusted = new Map()
var distrusted = new Map()
var revision = -1
+function subscribe(host) {
+ var xmlhttp = new XMLHttpRequest()
+ xmlhttp.onreadystatechange = function() {
+ if (this.readyState == 4 && this.status == 200) {
+ refreshUsers()
+ }
+ }
+ xmlhttp.open("POST","/MuWire/Trust", true)
+ xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
+ xmlhttp.send("action=subscribe&persona=" + host)
+}
+
function markTrusted(host) {
var linkSpan = document.getElementById("trusted-link-"+host)
linkSpan.innerHTML = ""
@@ -99,7 +119,7 @@ function cancelDistrust(host) {
function updateTable(map, divId) {
var divElement = document.getElementById(divId)
- var tableHtml = "
User | Reason | Actions |
"
+ var tableHtml = "User | Reason | Actions | Subscribe |
"
var isTrusted = (map == trusted)
for (var [ignored, user] of map) {
@@ -117,6 +137,13 @@ function updateTable(map, divId) {
}
tableHtml += ""
+ if (user.subscribed == "true") {
+ tableHtml += "Subscribed | "
+ } else if (isTrusted) {
+ tableHtml += "" + user.getSubscribeLink() + " | "
+ }
+
+
tableHtml += ""
}
tableHtml += "
"