sbot/ui/lib/pages/friends.js

57 lines
1.8 KiB
JavaScript

'use strict'
var h = require('hyperscript')
var ref = require('ssb-ref')
var app = require('../app')
var ui = require('../ui')
var com = require('../com')
var social = require('../social-graph')
module.exports = function () {
var queryStr = app.page.qs.q || ''
var queryRegex
// filters
function stdfilter (prof) {
if (prof.id == app.user.id) // is self
return true
if (app.users.names[prof.id] || social.follows(app.user.id, prof.id)) // has a name, or is a friend
return true
}
function isRecommended (prof) {
var nfollowers = social.followedFollowers(app.user.id, prof.id).length
var nflaggers = social.followedFlaggers(app.user.id, prof.id, true).length
if (prof.id != app.user.id && !social.follows(app.user.id, prof.id) && nfollowers && !nflaggers)
return true
}
function recommendFilterFn (prof) {
if (!stdfilter(prof))
return false
return isRecommended(prof)
}
function othersFilterFn (prof) {
if (!stdfilter(prof))
return false
return (prof.id != app.user.id && !social.follows(app.user.id, prof.id) && !isRecommended(prof))
}
// markup
var newFollowersToShow = Math.max(app.indexCounts.followsUnread, 30)
ui.setPage('followers', h('.layout-onecol',
h('.layout-main',
h('h3', 'Following'),
h('div', { style: 'width: 850px; margin: 0 auto' }, com.friendsHexagrid({ size: 80, nrow: 10, uneven: true })),
h('h3', 'Activity'),
com.messageFeed({ render: com.messageSummary, feed: app.ssb.patchwork.createFollowStream, markread: true, limit: newFollowersToShow }),
h('h3', { style: 'margin-top: 40px' }, 'Recommendations'),
com.contactFeed({ filter: recommendFilterFn }),
h('h3', { style: 'margin-top: 40px' }, 'Others'),
com.contactFeed({ filter: othersFilterFn })
)
))
}