wip on trust subscriptions

pull/34/head
Zlatin Balevsky 2019-12-09 07:37:04 +00:00
parent 300938fa44
commit 662b065116
3 changed files with 38 additions and 5 deletions

View File

@ -62,6 +62,10 @@ class TrustSubscriber {
}
}
}
public boolean isSubscribed(Persona p) {
remoteTrustLists.containsKey(p.destination)
}
private void checkLoop() {
try {

View File

@ -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("<Trusted>");
for (TrustEntry te : core.getTrustService().getGood().values()) {
TEtoXML(te,sb);
TEtoXML(te,sb, core.getTrustSubscriber());
}
sb.append("</Trusted>");
sb.append("<Distrusted>");
for (TrustEntry te : core.getTrustService().getBad().values()) {
TEtoXML(te, sb);
TEtoXML(te, sb, core.getTrustSubscriber());
}
sb.append("</Distrusted>");
@ -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("<Persona>");
sb.append("<User>").append(Util.escapeHTMLinXML(te.getPersona().getHumanReadableName())).append("</User>");
sb.append("<UserB64>").append(te.getPersona().toBase64()).append("</UserB64>");
sb.append("<Reason>").append(Util.escapeHTMLinXML(te.getReason())).append("</Reason>");
sb.append("<Subscribed>").append(trustSubscriber.isSubscribed(te.getPersona())).append("</Subscribed>");
sb.append("</Persona>");
}

View File

@ -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 "<a herf='#' onclick='window.markDistrusted(\"" + this.userB64 + "\"); return false;'>Mark Distrusted</a>"
}
getSubscribeLink() {
return "<a href='#' onclick='window.subscribe(\"" + this.userB64 + "\"); return false;'>Subscribe</a>"
}
}
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 = "<table><thead><tr><th>User</th><th>Reason</th><th>Actions</th></tr></thead><tbody>"
var tableHtml = "<table><thead><tr><th>User</th><th>Reason</th><th>Actions</th><th>Subscribe</th></tr></thead><tbody>"
var isTrusted = (map == trusted)
for (var [ignored, user] of map) {
@ -117,6 +137,13 @@ function updateTable(map, divId) {
}
tableHtml += "</td>"
if (user.subscribed == "true") {
tableHtml += "<td>Subscribed</td>"
} else if (isTrusted) {
tableHtml += "<td>" + user.getSubscribeLink() + "</td>"
}
tableHtml += "</tr>"
}
tableHtml += "</tbody></table>"