57 lines
1.8 KiB
JavaScript
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 })),
|
||
|
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 })
|
||
|
)
|
||
|
))
|
||
|
}
|