sbot/ui/lib/pages/search.js

67 lines
1.6 KiB
JavaScript

'use strict'
var h = require('hyperscript')
var mlib = require('ssb-msgs')
var pull = require('pull-stream')
var app = require('../app')
var ui = require('../ui')
var com = require('../com')
var social = require('../social-graph')
module.exports = function () {
// filters
if (!app.page.param) {
window.location.hash = '#/'
return
}
var regex = new RegExp(app.page.param.split(' ').join('|'), 'i')
function postFeed (opts) {
opts = opts || {}
opts.type = 'post'
return app.ssb.messagesByType(opts)
}
function postFilter (m) {
var a = m.value.author, c = m.value.content
if (app.users.profiles[a] && app.users.profiles[a].flagged) // flagged by user
return false
if (c.text && regex.test(c.text))
return true
// if (app.homeMode.view == 'all')
// return true
// if (app.homeMode.view == 'friends')
// return a == app.user.id || social.follows(app.user.id, a)
// return social.follows(app.homeMode.view, a) // `view` is the id of a pub
}
function contactFilter (p) {
if (p.self.name && regex.test(p.self.name))
return true
}
function cursor (msg) {
if (msg)
return msg.ts
}
// markup
ui.setPage('home', h('.layout-twocol',
h('.layout-main',
h('h3', 'Search, "', app.page.param, '"'),
com.messageFeed({ feed: postFeed, cursor: cursor, filter: postFilter, onempty: onempty, infinite: true })
),
h('.layout-rightnav',
h('h3', 'People'),
com.contactFeed({ filter: contactFilter, compact: true, onempty: onempty })
)
))
function onempty (el) {
el.appendChild(h('p', 'No results found'))
}
}