aboutsummaryrefslogtreecommitdiff
path: root/lib/app.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/app.js')
-rw-r--r--lib/app.js114
1 files changed, 2 insertions, 112 deletions
diff --git a/lib/app.js b/lib/app.js
index da15d28..b64ec2a 100644
--- a/lib/app.js
+++ b/lib/app.js
@@ -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)
}