Commit 6e5e047648b6604b5135ccf67b925ca282463398
lodash tweaks
mix irving committed on 1/19/2018, 11:17:17 PMParent: 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 = { |
@@ -17,24 +18,33 @@ | ||
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