index.jsView |
---|
1 | 1 … | var FlumeReduce = require('flumeview-reduce') |
2 | 2 … | var ref = require('ssb-ref') |
3 | 3 … | |
4 | | -exports.name = 'sbot-tags' |
| 4 … | +exports.name = 'tags' |
5 | 5 … | exports.version = require('./package.json').version |
6 | 6 … | exports.manifest = { |
7 | 7 … | stream: 'source', |
8 | 8 … | get: 'async' |
13 | 13 … | |
14 | 14 … | function reduce (result, item) { |
15 | 15 … | if (!result) result = {} |
16 | 16 … | if (!result.tags) result.tags = {} |
| 17 … | + if (!result.messages) result.messages = {} |
17 | 18 … | var tags = result.tags |
| 19 … | + var messages = result.messages |
18 | 20 … | |
19 | 21 … | if (item) { |
20 | | - var { author, tag, message, tagged, timestamp } = item |
| 22 … | + var { tag, author, message, tagged, timestamp } = item |
| 23 … | + |
21 | 24 … | if (!tags[author]) tags[author] = {} |
22 | 25 … | if (!tags[author][tag]) tags[author][tag] = {} |
23 | | - if (!tags[author][tag][message] || timestamp > tags[author][tag][message].timestamp) { |
| 26 … | + if ( |
| 27 … | + tagged && |
| 28 … | + (!tags[author][tag][message] || |
| 29 … | + timestamp > tags[author][tag][message].timestamp) |
| 30 … | + ) { |
24 | 31 … | tags[author][tag][message] = { timestamp, tagged } |
| 32 … | + } else if (!tagged && tags[author][tag][message]) { |
| 33 … | + delete tags[author][tag][message] |
25 | 34 … | } |
| 35 … | + |
| 36 … | + if (!messages[message]) messages[message] = {} |
| 37 … | + if (!messages[message][tag]) messages[message][tag] = {} |
| 38 … | + if ( |
| 39 … | + tagged && |
| 40 … | + (!messages[message][tag][author] || |
| 41 … | + timestamp > messages[message][tag][author].timestamp) |
| 42 … | + ) { |
| 43 … | + messages[message][tag][author] = { timestamp, tagged } |
| 44 … | + } else if (!tagged && messages[message][tag][author]) { |
| 45 … | + delete messages[message][tag][authpr] |
| 46 … | + } |
26 | 47 … | } |
27 | 48 … | |
28 | 49 … | return result |
29 | 50 … | } |
30 | 51 … | |
31 | 52 … | function map (msg) { |
| 53 … | + |
| 54 … | + if (msg.value.author !== ssb.id) return |
|
| 55 … | + |
32 | 56 … | |
33 | 57 … | if (msg.value.content === 'string') { |
34 | 58 … | |
35 | 59 … | msg = ssb.private.unbox(msg) |