diff options
author | cel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519> | 2017-04-12 17:35:59 -0700 |
---|---|---|
committer | cel <cel@f/6sQ6d2CMxRUhLpspgGIulDxDCwYD7DzFzPNr7u5AU=.ed25519> | 2017-04-12 18:51:16 -0700 |
commit | 74ca52116504c6844d590ac07ef17ee788501924 (patch) | |
tree | f72cb93c04cd7fd41a7216857339ba54f68aec68 /lib/app.js | |
parent | 4bc88fee677e467a6444fd16ec6a90e7c9548aaa (diff) | |
download | patchfoo-74ca52116504c6844d590ac07ef17ee788501924.tar.gz patchfoo-74ca52116504c6844d590ac07ef17ee788501924.zip |
Show follows, followers, and friends (WIP)
Diffstat (limited to 'lib/app.js')
-rw-r--r-- | lib/app.js | 59 |
1 files changed, 59 insertions, 0 deletions
@@ -200,3 +200,62 @@ App.prototype.streamPeers = function (opts) { }) }) } + +App.prototype.getFollows = function (id, cb) { + var self = this + pull( + self.sbot.links({source: id, rel: 'contact', values: true}), + pull.filter(function (msg) { + var c = msg && msg.value && msg.value.content + return c && c.type === 'contact' && msg.value.author === id + }), + pull.reduce(function (acc, msg) { + var c = msg.value.content + if (c.following) acc[c.contact] = true + else delete acc[c.contact] + return acc + }, {}, cb) + ) +} + +App.prototype.getFollowers = function (id, cb) { + var self = this + pull( + self.sbot.links({dest: id, rel: 'contact', values: true}), + pull.filter(function (msg) { + var c = msg && msg.value && msg.value.content + return c && c.type === 'contact' && c.contact === id + }), + pull.reduce(function (acc, msg) { + var c = msg.value.content + if (c.following) acc[msg.value.author] = true + else delete acc[msg.value.author] + return acc + }, {}, cb) + ) +} + +App.prototype.getFriendInfo = function (id, cb) { + var self = this + var done = multicb({pluck: 1, spread: true}) + self.getFollows(id, done()) + self.getFollowers(id, done()) + done(function (err, followsObj, followersObj) { + if (err) return cb(err) + var friends = [] + var follows = [] + var followers = [] + for (var k in followsObj) { + if (followersObj[k]) friends.push(k) + else follows.push(k) + } + for (var k in followersObj) { + if (!followsObj[k]) followers.push(k) + } + cb(null, { + friends: friends, + follows: follows, + followers: followers, + }) + }) +} |