respect privacy better. hides who is in a private thread, does not show private messages in user feed, also does not show like/vote as thread replies
This commit is contained in:
@@ -120,6 +120,9 @@ exports.init = function (sbot, config) {
|
|||||||
|
|
||||||
pull(
|
pull(
|
||||||
sbot.createUserStream({ id: feedId, reverse: true, limit: showAll ? -1 : (ext == 'rss' ? 25 : 10) }),
|
sbot.createUserStream({ id: feedId, reverse: true, limit: showAll ? -1 : (ext == 'rss' ? 25 : 10) }),
|
||||||
|
pull.filter(function (data) {
|
||||||
|
return 'object' === typeof data.value.content
|
||||||
|
}),
|
||||||
pull.collect(function (err, logs) {
|
pull.collect(function (err, logs) {
|
||||||
if (err) return respond(res, 500, err.stack || err)
|
if (err) return respond(res, 500, err.stack || err)
|
||||||
res.writeHead(200, {
|
res.writeHead(200, {
|
||||||
@@ -150,34 +153,34 @@ exports.init = function (sbot, config) {
|
|||||||
|
|
||||||
getAbout(feedId, function (err, about) {
|
getAbout(feedId, function (err, about) {
|
||||||
pull(
|
pull(
|
||||||
sbot.createUserStream({ id: feedId }),
|
sbot.createUserStream({ id: feedId }),
|
||||||
pull.filter((msg) => {
|
pull.filter((msg) => {
|
||||||
return !msg.value ||
|
return !msg.value ||
|
||||||
msg.value.content.type == 'contact' ||
|
msg.value.content.type == 'contact' ||
|
||||||
(msg.value.content.type == 'channel' &&
|
(msg.value.content.type == 'channel' &&
|
||||||
typeof msg.value.content.subscribed != 'undefined')
|
typeof msg.value.content.subscribed != 'undefined')
|
||||||
}),
|
}),
|
||||||
pull.collect(function (err, msgs) {
|
pull.collect(function (err, msgs) {
|
||||||
msgs.forEach((msg) => {
|
msgs.forEach((msg) => {
|
||||||
if (msg.value.content.type == 'contact')
|
if (msg.value.content.type == 'contact')
|
||||||
{
|
{
|
||||||
if (msg.value.content.following)
|
if (msg.value.content.following)
|
||||||
following[msg.value.content.contact] = 1
|
following[msg.value.content.contact] = 1
|
||||||
else
|
else
|
||||||
delete following[msg.value.content.contact]
|
delete following[msg.value.content.contact]
|
||||||
}
|
}
|
||||||
else // channel subscription
|
else // channel subscription
|
||||||
{
|
{
|
||||||
if (msg.value.content.subscribed)
|
if (msg.value.content.subscribed)
|
||||||
channelSubscriptions[msg.value.content.channel] = 1
|
channelSubscriptions[msg.value.content.channel] = 1
|
||||||
else
|
else
|
||||||
delete channelSubscriptions[msg.value.content.channel]
|
delete channelSubscriptions[msg.value.content.channel]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
serveFeeds(req, res, following, channelSubscriptions, feedId,
|
serveFeeds(req, res, following, channelSubscriptions, feedId,
|
||||||
'user feed ' + (about ? about.name : ""))
|
'user feed ' + (about ? about.name : ""))
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -192,27 +195,27 @@ exports.init = function (sbot, config) {
|
|||||||
pull(
|
pull(
|
||||||
sbot.createLogStream({ reverse: true, limit: 5000 }),
|
sbot.createLogStream({ reverse: true, limit: 5000 }),
|
||||||
pull.filter((msg) => {
|
pull.filter((msg) => {
|
||||||
return !msg.value ||
|
return !msg.value ||
|
||||||
(msg.value.author in following ||
|
(msg.value.author in following ||
|
||||||
msg.value.content.channel in channelSubscriptions)
|
msg.value.content.channel in channelSubscriptions)
|
||||||
}),
|
}),
|
||||||
pull.take(150),
|
pull.take(150),
|
||||||
pull.collect(function (err, logs) {
|
pull.collect(function (err, logs) {
|
||||||
if (err) return respond(res, 500, err.stack || err)
|
if (err) return respond(res, 500, err.stack || err)
|
||||||
res.writeHead(200, {
|
res.writeHead(200, {
|
||||||
'Content-Type': ctype("html")
|
'Content-Type': ctype("html")
|
||||||
})
|
})
|
||||||
pull(
|
pull(
|
||||||
pull.values(logs),
|
pull.values(logs),
|
||||||
paramap(addAuthorAbout, 8),
|
paramap(addAuthorAbout, 8),
|
||||||
paramap(addFollowAbout, 8),
|
paramap(addFollowAbout, 8),
|
||||||
paramap(addVoteMessage, 8),
|
paramap(addVoteMessage, 8),
|
||||||
paramap(addGitLinks, 8),
|
paramap(addGitLinks, 8),
|
||||||
pull(renderThread(feedOpts), wrapPage(name)),
|
pull(renderThread(feedOpts), wrapPage(name)),
|
||||||
toPull(res, function (err) {
|
toPull(res, function (err) {
|
||||||
if (err) console.error('[viewer]', err)
|
if (err) console.error('[viewer]', err)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -226,21 +229,21 @@ exports.init = function (sbot, config) {
|
|||||||
pull(
|
pull(
|
||||||
sbot.query.read({ limit: showAll ? 300 : 10, reverse: true, query: [{$filter: { value: { content: { channel: channelId }}}}]}),
|
sbot.query.read({ limit: showAll ? 300 : 10, reverse: true, query: [{$filter: { value: { content: { channel: channelId }}}}]}),
|
||||||
pull.collect(function (err, logs) {
|
pull.collect(function (err, logs) {
|
||||||
if (err) return respond(res, 500, err.stack || err)
|
if (err) return respond(res, 500, err.stack || err)
|
||||||
res.writeHead(200, {
|
res.writeHead(200, {
|
||||||
'Content-Type': ctype("html")
|
'Content-Type': ctype("html")
|
||||||
})
|
})
|
||||||
pull(
|
pull(
|
||||||
pull.values(logs),
|
pull.values(logs),
|
||||||
paramap(addAuthorAbout, 8),
|
paramap(addAuthorAbout, 8),
|
||||||
paramap(addVoteMessage, 8),
|
paramap(addVoteMessage, 8),
|
||||||
pull(renderThread(defaultOpts, '',
|
pull(renderThread(defaultOpts, '',
|
||||||
renderShowAll(showAll, req.url)),
|
renderShowAll(showAll, req.url)),
|
||||||
wrapPage('#' + channelId)),
|
wrapPage('#' + channelId)),
|
||||||
toPull(res, function (err) {
|
toPull(res, function (err) {
|
||||||
if (err) console.error('[viewer]', err)
|
if (err) console.error('[viewer]', err)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -279,36 +282,45 @@ exports.init = function (sbot, config) {
|
|||||||
var format = formatMsgs(id, ext, opts)
|
var format = formatMsgs(id, ext, opts)
|
||||||
if (format === null) return respond(res, 415, 'Invalid format')
|
if (format === null) return respond(res, 415, 'Invalid format')
|
||||||
|
|
||||||
pull(
|
function render (links) {
|
||||||
sbot.links({dest: id, values: true }),
|
var etag = hash(sort.heads(links).concat(appHash, ext, qs))
|
||||||
includeRoot && prepend(getMsg, id),
|
if (req.headers['if-none-match'] === etag) return respond(res, 304)
|
||||||
pull.unique('key'),
|
res.writeHead(200, {
|
||||||
pull.collect(function (err, links) {
|
'Content-Type': ctype(ext),
|
||||||
if (err) return respond(res, 500, err.stack || err)
|
'etag': etag
|
||||||
var etag = hash(sort.heads(links).concat(appHash, ext, qs))
|
|
||||||
if (req.headers['if-none-match'] === etag) return respond(res, 304)
|
|
||||||
res.writeHead(200, {
|
|
||||||
'Content-Type': ctype(ext),
|
|
||||||
'etag': etag
|
|
||||||
})
|
|
||||||
pull(
|
|
||||||
pull.values(sort(links)),
|
|
||||||
paramap(addAuthorAbout, 8),
|
|
||||||
format,
|
|
||||||
toPull(res, function (err) {
|
|
||||||
if (err) console.error('[viewer]', err)
|
|
||||||
})
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
)
|
pull(
|
||||||
|
pull.values(sort(links)),
|
||||||
|
paramap(addAuthorAbout, 8),
|
||||||
|
format,
|
||||||
|
toPull(res, function (err) {
|
||||||
|
if (err) console.error('[viewer]', err)
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
getMsgWithValue(sbot, id, function (err, root) {
|
||||||
|
if (err) return respond(res, 500, err.stack || err)
|
||||||
|
if('string' === typeof root.value.content)
|
||||||
|
return render([root])
|
||||||
|
|
||||||
|
pull(
|
||||||
|
sbot.links({dest: id, values: true, rel: 'root' }),
|
||||||
|
pull.unique('key'),
|
||||||
|
pull.collect(function (err, links) {
|
||||||
|
if (err) return respond(res, 500, err.stack || err)
|
||||||
|
render(links)
|
||||||
|
})
|
||||||
|
)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function addFollowAbout(msg, cb) {
|
function addFollowAbout(msg, cb) {
|
||||||
if (msg.value.content.contact)
|
if (msg.value.content.contact)
|
||||||
getAbout(msg.value.content.contact, function (err, about) {
|
getAbout(msg.value.content.contact, function (err, about) {
|
||||||
if (err) return cb(err)
|
if (err) return cb(err)
|
||||||
msg.value.content.contactAbout = about
|
msg.value.content.contactAbout = about
|
||||||
cb(null, msg)
|
cb(null, msg)
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
cb(null, msg)
|
cb(null, msg)
|
||||||
@@ -317,9 +329,9 @@ exports.init = function (sbot, config) {
|
|||||||
function addVoteMessage(msg, cb) {
|
function addVoteMessage(msg, cb) {
|
||||||
if (msg.value.content.type == 'vote' && msg.value.content.vote.link[0] == '%')
|
if (msg.value.content.type == 'vote' && msg.value.content.vote.link[0] == '%')
|
||||||
getMsg(msg.value.content.vote.link, function (err, linkedMsg) {
|
getMsg(msg.value.content.vote.link, function (err, linkedMsg) {
|
||||||
if (linkedMsg)
|
if (linkedMsg)
|
||||||
msg.value.content.vote.linkedText = linkedMsg.value.content.text
|
msg.value.content.vote.linkedText = linkedMsg.value.content.text
|
||||||
cb(null, msg)
|
cb(null, msg)
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
cb(null, msg)
|
cb(null, msg)
|
||||||
@@ -336,15 +348,15 @@ exports.init = function (sbot, config) {
|
|||||||
function addGitLinks(msg, cb) {
|
function addGitLinks(msg, cb) {
|
||||||
if (msg.value.content.type == 'git-update')
|
if (msg.value.content.type == 'git-update')
|
||||||
getMsg(msg.value.content.repo, function (err, gitRepo) {
|
getMsg(msg.value.content.repo, function (err, gitRepo) {
|
||||||
if (gitRepo)
|
if (gitRepo)
|
||||||
msg.value.content.repoName = gitRepo.value.content.name
|
msg.value.content.repoName = gitRepo.value.content.name
|
||||||
cb(null, msg)
|
cb(null, msg)
|
||||||
})
|
})
|
||||||
else if (msg.value.content.type == 'issue')
|
else if (msg.value.content.type == 'issue')
|
||||||
getMsg(msg.value.content.project, function (err, gitRepo) {
|
getMsg(msg.value.content.project, function (err, gitRepo) {
|
||||||
if (gitRepo)
|
if (gitRepo)
|
||||||
msg.value.content.repoName = gitRepo.value.content.name
|
msg.value.content.repoName = gitRepo.value.content.name
|
||||||
cb(null, msg)
|
cb(null, msg)
|
||||||
})
|
})
|
||||||
else
|
else
|
||||||
cb(null, msg)
|
cb(null, msg)
|
||||||
@@ -432,20 +444,24 @@ function serveFile(req, res, file) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function prepend(fn, arg) {
|
//function prepend(fn, arg) {
|
||||||
return function (read) {
|
// return function (read) {
|
||||||
return function (abort, cb) {
|
// return function (abort, cb) {
|
||||||
if (fn && !abort) {
|
// if (fn && !abort) {
|
||||||
var _fn = fn
|
// var _fn = fn
|
||||||
fn = null
|
// fn = null
|
||||||
return _fn(arg, function (err, value) {
|
// return _fn(arg, function (err, value) {
|
||||||
if (err) return read(err, function (err) {
|
// if (err) return read(err, function (err) {
|
||||||
cb(err || true)
|
// cb(err || true)
|
||||||
})
|
// })
|
||||||
cb(null, value)
|
// cb(null, value)
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
read(abort, cb)
|
// read(abort, cb)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user