aboutsummaryrefslogtreecommitdiff
path: root/lib/app.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/app.js')
-rw-r--r--lib/app.js41
1 files changed, 40 insertions, 1 deletions
diff --git a/lib/app.js b/lib/app.js
index 03df277..d1f76f3 100644
--- a/lib/app.js
+++ b/lib/app.js
@@ -12,6 +12,7 @@ var About = require('./about')
var Serve = require('./serve')
var Render = require('./render')
var Git = require('./git')
+var cat = require('pull-cat')
module.exports = App
@@ -38,6 +39,7 @@ function App(sbot, config) {
this._getAbout.bind(this))
this.unboxContent = memo({cache: lru(100)}, sbot.private.unbox)
this.reverseNameCache = lru(500)
+ this.reverseEmojiNameCache = lru(500)
this.unboxMsg = this.unboxMsg.bind(this)
@@ -170,6 +172,17 @@ App.prototype.publish = function (content, cb) {
tryPublish(2)
}
+App.prototype.wantSizeBlob = function (id, cb) {
+ var blobs = this.sbot.blobs
+ blobs.size(id, function (err, size) {
+ if (size != null) return cb(null, size)
+ blobs.want(id, function (err) {
+ if (err) return cb(err)
+ blobs.size(id, cb)
+ })
+ })
+}
+
App.prototype.addBlob = function (cb) {
var done = multicb({pluck: 1, spread: true})
var hashCb = done()
@@ -177,7 +190,10 @@ App.prototype.addBlob = function (cb) {
done(function (err, hash, add) {
cb(err, hash)
})
- return sink
+ return pull(
+ hasher(hashCb),
+ this.sbot.blobs.add(addCb)
+ )
}
App.prototype.pushBlob = function (id, cb) {
@@ -230,6 +246,10 @@ App.prototype.getReverseNameSync = function (name) {
return id
}
+App.prototype.getReverseEmojiNameSync = function (name) {
+ return this.reverseEmojiNameCache.get(name)
+}
+
App.prototype.getNameSync = function (name) {
var about = this.aboutCache.get(name)
return about && about.name
@@ -432,3 +452,22 @@ App.prototype.getVoted = function (_opts, cb) {
App.prototype.createAboutStreams = function (id) {
return this.about.createAboutStreams(id)
}
+
+App.prototype.streamEmojis = function () {
+ return pull(
+ cat([
+ this.sbot.links({
+ rel: 'mentions',
+ source: this.sbot.id,
+ dest: '&',
+ values: true
+ }),
+ this.sbot.links({rel: 'mentions', dest: '&', values: true})
+ ]),
+ this.unboxMessages(),
+ pull.map(function (msg) { return msg.value.content.mentions }),
+ pull.flatten(),
+ pull.filter('emoji'),
+ pull.unique('link')
+ )
+}