|
@@ -4,6 +4,9 @@ const path = require("path");
|
|
|
const envPaths = require("env-paths");
|
|
|
const fs = require("fs");
|
|
|
|
|
|
+const homedir = require('os').homedir();
|
|
|
+const supportingPath = path.join(homedir, ".ssb/flume/contacts2.json");
|
|
|
+
|
|
|
const debug = require("debug")("oasis");
|
|
|
const highlightJs = require("highlight.js");
|
|
|
|
|
@@ -48,6 +51,8 @@ const {
|
|
|
ul,
|
|
|
} = require("hyperaxe");
|
|
|
|
|
|
+const { about, blob, vote } = require("../models")({});
|
|
|
+
|
|
|
const lodash = require("lodash");
|
|
|
const markdown = require("./markdown");
|
|
|
|
|
@@ -929,19 +934,15 @@ const generatePreview = ({ previewData, contentWarning, action }) => {
|
|
|
matches.map((m) => {
|
|
|
let relationship = { emoji: "", desc: "" };
|
|
|
if (m.rel.followsMe && m.rel.following) {
|
|
|
- // mutuals get the handshake emoji
|
|
|
relationship.emoji = "☍";
|
|
|
relationship.desc = i18n.relationshipMutuals;
|
|
|
} else if (m.rel.following) {
|
|
|
- // if we're following that's an eyes emoji
|
|
|
relationship.emoji = "☌";
|
|
|
relationship.desc = i18n.relationshipFollowing;
|
|
|
} else if (m.rel.followsMe) {
|
|
|
- // follower has waving-hand emoji
|
|
|
relationship.emoji = "⚼";
|
|
|
relationship.desc = i18n.relationshipTheyFollow;
|
|
|
} else {
|
|
|
- // no relationship has question mark emoji
|
|
|
relationship.emoji = "❓";
|
|
|
relationship.desc = i18n.relationshipNotFollowing;
|
|
|
}
|
|
@@ -1011,7 +1012,8 @@ exports.previewView = ({ previewData, contentWarning }) => {
|
|
|
return exports.publishView(preview, previewData.text, contentWarning);
|
|
|
};
|
|
|
|
|
|
-exports.peersView = ({ peers }) => {
|
|
|
+exports.peersView = async ({ peers }) => {
|
|
|
+
|
|
|
const startButton = form(
|
|
|
{ action: "/settings/conn/start", method: "post" },
|
|
|
button({ type: "submit" }, i18n.startNetworking)
|
|
@@ -1050,20 +1052,95 @@ exports.peersView = ({ peers }) => {
|
|
|
);
|
|
|
});
|
|
|
|
|
|
+ const supportedList = (supporting)
|
|
|
+ var supporting = JSON.parse(fs.readFileSync(supportingPath, "utf8")).value;
|
|
|
+ var arr = [];
|
|
|
+ var keys = Object.keys(supporting);
|
|
|
+ var data = Object.entries(supporting[keys[0]]);
|
|
|
+ Object.entries(data).forEach(([key, value]) => {
|
|
|
+ if (value[1]===1){
|
|
|
+ var supported = (value[0])
|
|
|
+ if (!arr.includes(supported)) {
|
|
|
+ arr.push(
|
|
|
+ li(
|
|
|
+ a(
|
|
|
+ { href: `/author/${encodeURIComponent(supported)}` },
|
|
|
+ supported
|
|
|
+ )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var supports = arr;
|
|
|
+
|
|
|
+ const blockedList = (supporting)
|
|
|
+ var supporting = JSON.parse(fs.readFileSync(supportingPath, "utf8")).value;
|
|
|
+ var arr = [];
|
|
|
+ var keys = Object.keys(supporting);
|
|
|
+ var data = Object.entries(supporting[keys[0]]);
|
|
|
+ Object.entries(data).forEach(([key, value]) => {
|
|
|
+ if (value[1]===-1){
|
|
|
+ var blocked = (value[0])
|
|
|
+ if (!arr.includes(blocked)) {
|
|
|
+ arr.push(
|
|
|
+ li(
|
|
|
+ a(
|
|
|
+ { href: `/author/${encodeURIComponent(blocked)}` },
|
|
|
+ blocked
|
|
|
+ )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var blocks = arr;
|
|
|
+
|
|
|
+ const recommendedList = (supporting)
|
|
|
+ var supporting = JSON.parse(fs.readFileSync(supportingPath, "utf8")).value;
|
|
|
+ var arr = [];
|
|
|
+ var keys = Object.keys(supporting);
|
|
|
+ var data = Object.entries(supporting[keys[0]]);
|
|
|
+ Object.entries(data).forEach(([key, value]) => {
|
|
|
+ if (value[1]===-2){
|
|
|
+ var recommended = (value[0])
|
|
|
+ if (!arr.includes(recommended)) {
|
|
|
+ arr.push(
|
|
|
+ li(
|
|
|
+ a(
|
|
|
+ { href: `/author/${encodeURIComponent(recommended)}` },
|
|
|
+ recommended
|
|
|
+ )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var recommends = arr;
|
|
|
+
|
|
|
return template(
|
|
|
i18n.peers,
|
|
|
section(
|
|
|
{ class: "message" },
|
|
|
h1(i18n.peerConnections),
|
|
|
connButtons,
|
|
|
- p(i18n.connectionsIntro),
|
|
|
+ h1(i18n.online, " (", peerList.length, ")"),
|
|
|
peerList.length > 0 ? ul(peerList) : i18n.noConnections,
|
|
|
p(i18n.connectionActionIntro),
|
|
|
+ h1(i18n.supported, " (", supports.length, ")"),
|
|
|
+ supports.length > 0 ? ul(supports): i18n.noSupportedConnections,
|
|
|
+ p(i18n.connectionActionIntro),
|
|
|
+ h1(i18n.recommended, " (", recommends.length, ")"),
|
|
|
+ recommends.length > 0 ? ul(recommends): i18n.noRecommendedConnections,
|
|
|
+ p(i18n.connectionActionIntro),
|
|
|
+ h1(i18n.blocked, " (", blocks.length, ")"),
|
|
|
+ blocks.length > 0 ? ul(blocks): i18n.noBlockedConnections,
|
|
|
+ p(i18n.connectionActionIntro),
|
|
|
)
|
|
|
);
|
|
|
};
|
|
|
|
|
|
-exports.invitesView = ({ invites }) => {
|
|
|
+exports.invitesView = ({ invites }) => {
|
|
|
return template(
|
|
|
i18n.invites,
|
|
|
section(
|