Files: e440f8c92caaa6857bccee89bb2de11d376d29a3 / friends.js
1747 bytesRaw
1 | var toUrl = require('yap-util').toUrl |
2 | |
3 | module.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