diff options
Diffstat (limited to 'lib/app.js')
-rw-r--r-- | lib/app.js | 114 |
1 files changed, 2 insertions, 112 deletions
@@ -8,8 +8,7 @@ var ssbAvatar = require('ssb-avatar') var hasher = require('pull-hash/ext/ssb') var multicb = require('multicb') var paramap = require('pull-paramap') -var many = require('pull-many') -var defer = require('pull-defer') +var Contacts = require('ssb-contact') var Serve = require('./serve') var Render = require('./render') @@ -243,115 +242,6 @@ App.prototype.streamChannels = function (opts) { ) } -App.prototype.streamFollows = function (id) { - return pull( - this.sbot.links({ - source: id, - rel: 'contact', - values: true, - reverse: true, - }), - pull.map(function (msg) { - return msg.value.content - }), - pull.filter(), - pull.unique(function (c) { - return c.contact - }), - pull.filter(function (c) { - return c.following - }), - pull.map(function (c) { - return c.contact - }) - ) -} - -App.prototype.streamFollowers = function (id) { - return pull( - this.sbot.links({ - dest: id, - rel: 'contact', - values: true, - reverse: true, - }), - pull.unique(function (msg) { - return msg.value.author - }), - pull.filter(function (msg) { - var c = msg.value.content - return c && c.following - }), - pull.map(function (msg) { - return msg.value.author - }) - ) -} - -App.prototype.streamFriends = function (id, endCb) { - var follows = {}, followers = {} - return pull( - many([ - pull( - this.streamFollows(id), - pull.map(function (id) { - return {id: id, follow: true} - }) - ), - pull( - this.streamFollowers(id), - pull.map(function (id) { - return {id: id, follower: true} - }) - ) - ]), - pull.filter(function (op) { - if (op.follow) { - if (followers[op.id]) { - delete followers[op.id] - return true - } else { - follows[op.id] = true - return false - } - } - if (op.follower) { - if (follows[op.id]) { - delete follows[op.id] - return true - } else { - followers[op.id] = true - return false - } - } - }), - pull.map(function (op) { - return op.id - }), - endCb && function (read) { - return function (abort, cb) { - read(abort, function (end, data) { - cb(end, data) - if (end) endCb(end === true ? null : end, { - followers: Object.keys(followers), - follows: Object.keys(follows), - }) - }) - } - } - ) -} - App.prototype.createContactStreams = function (id) { - var follows = defer.source() - var followers = defer.source() - var friends = this.streamFriends(id, function (err, more) { - follows.resolve(err ? pull.error(err) : pull.values(more.follows)) - followers.resolve(err ? pull.error(err) : pull.values(more.followers)) - }) - return { - friends: friends, - follows: follows, - followers: followers, - } + return new Contacts(this.sbot).createContactStreams(id) } |