Commit 0e8fddd65bb3d05fbcafb9c66ceea4ea5d9648e5
lodash tweaks
mix irving authored on 1/19/2018, 11:17:17 PMJosiah Witt committed on 1/25/2018, 3:34:33 AM
Parent: 26cb584b07aa6709f758873f12119382291beab7
Files changed
index.js | changed |
index.js | |||
---|---|---|---|
@@ -1,7 +1,8 @@ | |||
1 | 1 … | var FlumeReduce = require('flumeview-reduce') | |
2 | 2 … | var ref = require('ssb-ref') | |
3 | -var _ = require('lodash') | ||
3 … | +var get = require('lodash/get') | ||
4 … | +var merge = require('lodash/merge') | ||
4 | 5 … | ||
5 | 6 … | exports.name = 'tags' | |
6 | 7 … | exports.version = require('./package.json').version | |
7 | 8 … | exports.manifest = { | |
@@ -10,31 +11,40 @@ | |||
10 | 11 … | } | |
11 | 12 … | ||
12 | 13 … | var initialState = {} | |
13 | 14 … | ||
14 | -exports.init = function (ssb, config) { | ||
15 … | +exports.init = function(ssb, config) { | ||
15 | 16 … | return ssb._flumeUse('tags', FlumeReduce('test', reduce, map, null, initialState)) | |
16 | 17 … | ||
17 | 18 … | function reduce(result, item) { | |
18 | 19 … | if (!item) return result | |
19 | 20 … | ||
20 | 21 … | var { tag, author, message, tagged, timestamp } = item | |
21 | - var current = _.at(result, `${author}.${tag}.${message}`)[0] | ||
22 … | + var storedTimestamp = get(result, [author, tag, message]) | ||
22 | 23 … | ||
23 | - if (tagged && (!current || timestamp > current)) { | ||
24 … | + if (shouldAddTag()) { | ||
24 | 25 … | var newTag = { | |
25 | 26 … | [author]: { | |
26 | 27 … | [tag]: { | |
27 | 28 … | [message]: timestamp | |
28 | 29 … | } | |
29 | 30 … | } | |
30 | 31 … | } | |
31 | - result = _.merge(result, newTag) | ||
32 | - } else if (!tagged && current) { | ||
32 … | + result = merge(result, newTag) | ||
33 … | + } else if (shouldRemoveTag()) { | ||
33 | 34 … | delete result[author][tag][message] | |
34 | 35 … | } | |
35 | 36 … | ||
36 | 37 … | return result | |
38 … | + | ||
39 … | + function shouldAddTag() { | ||
40 … | + if (tagged !== true) return false | ||
41 … | + return !storedTimestamp || timestamp > storedTimestamp | ||
42 … | + } | ||
43 … | + | ||
44 … | + function shouldRemoveTag() { | ||
45 … | + return storedTimestamp && tagged === false | ||
46 … | + } | ||
37 | 47 … | } | |
38 | 48 … | ||
39 | 49 … | function map(msg) { | |
40 | 50 … | // only include your own tags (for now) | |
@@ -45,9 +55,9 @@ | |||
45 | 55 … | // unbox private message (requires ssb-private plugin) | |
46 | 56 … | msg = ssb.private.unbox(msg) | |
47 | 57 … | } | |
48 | 58 … | ||
49 | - if (msg.value.content && msg.value.content.type === 'tag' && ref.isLink(msg.value.content.message)) { | ||
59 … | + if (isTag(msg)) { | ||
50 | 60 … | return { | |
51 | 61 … | tag: msg.key, | |
52 | 62 … | author: msg.value.author, | |
53 | 63 … | message: msg.value.content.message, | |
@@ -56,4 +66,9 @@ | |||
56 | 66 … | } | |
57 | 67 … | } | |
58 | 68 … | } | |
59 | 69 … | } | |
70 … | + | ||
71 … | +function isTag(msg) { | ||
72 … | + return get(msg, 'value.content.type') === 'tag' | ||
73 … | + && ref.isLink(get(msg, 'value.content.message')) | ||
74 … | +} |
Built with git-ssb-web