Files: 49133faa00025b793d47d7d54e7dcfd6691073ad / message / obs / backlinks.js
910 bytesRaw
1 | var nest = require('depnest') |
2 | var MutantSet = require('mutant/set') |
3 | |
4 | exports.needs = nest({ |
5 | 'message.sync.unbox': 'first' |
6 | }) |
7 | |
8 | exports.gives = nest({ |
9 | 'sbot.hook.feed': true, |
10 | 'message.obs.backlinks': true |
11 | }) |
12 | |
13 | exports.create = function (api) { |
14 | var mentionedLookup = {} |
15 | return nest({ |
16 | 'sbot.hook.feed': (msg) => { |
17 | if (msg.value && typeof msg.value.content === 'string') { |
18 | msg = api.message.sync.unbox(msg) |
19 | } |
20 | if (msg && msg.value && msg.value.content && Array.isArray(msg.value.content.mentions)) { |
21 | msg.value.content.mentions.forEach(mention => { |
22 | var link = typeof mention === 'object' ? mention.link : mention |
23 | get(link).add(msg.key) |
24 | }) |
25 | } |
26 | }, |
27 | 'message.obs.backlinks': (id) => get(id) |
28 | }) |
29 | |
30 | function get (id) { |
31 | if (!mentionedLookup[id]) { |
32 | mentionedLookup[id] = MutantSet() |
33 | } |
34 | return mentionedLookup[id] |
35 | } |
36 | } |
37 |
Built with git-ssb-web