git ssb

0+

Dominic / yap-patch



Tree: 35b6122037e20c7e9f0d9b54e257f4ade57b49b7

Files: 35b6122037e20c7e9f0d9b54e257f4ade57b49b7 / friends.js

1747 bytesRaw
1var toUrl = require('yap-util').toUrl
2
3module.exports = function (sbot) {
4 return function (opts, apply, req) {
5 var tr = require('./translations')(req.cookies.lang)
6
7 return function (cb) {
8 var max = 1.5
9 sbot.friends.hops({start: opts.id, reverse: false, max: max}, function (err, follows) {
10 if(err) return cb(err)
11 sbot.friends.hops({start: opts.id, reverse: true, max: max}, function (err, followers) {
12 if(err) return cb(err)
13 var friends = {}
14 for(var k in followers)
15 if(followers[k] <= 0 || followers[k] > max) delete followers[k]
16 for(var k in follows) {
17 if(followers[k] <= 0 || follows[k] > max) delete follows[k]
18 else if(follows[k] > 0 && followers[k] > 0) {
19 friends[k] = follows[k]
20 delete follows[k]
21 delete followers[k]
22 }
23 }
24 var limit = 25
25 function group (label, list) {
26 return [
27 'div.'+label,
28 ['h2', tr(label)],
29 ].concat(list.slice(0, limit).map(function (e) {
30 return apply('avatar', {id: e, image: true, name: false, href: toUrl('patch/friends', {id: e})})
31 })).concat(
32 //TODO make this a link to a page showing friends.
33 list.length > limit ? '...' + tr('AndMore', list.length-limit) : ''
34 )
35 }
36
37 cb(null, [
38 ['h1', tr('FriendsOf'), ' ', apply('avatar', {id: opts.id, image: false, name: true})],
39 group('Friends', Object.keys(friends)),
40 group('Follows', Object.keys(follows)),
41 group('Followers', Object.keys(followers))
42 ])
43 })
44 })
45 }
46 }
47}
48

Built with git-ssb-web