Commit 1f77997f086f31ce27aa9d3d2401244657e728f6
Use root tag id as the indexing key
The root key is the key that actually matters since that is what ties different instances of tag messages together.Josiah Witt committed on 2/13/2018, 10:27:36 PM
Parent: 0e8fddd65bb3d05fbcafb9c66ceea4ea5d9648e5
Files changed
index.js | changed |
index.js | |||
---|---|---|---|
@@ -17,28 +17,35 @@ | |||
17 | 17 … | ||
18 | 18 … | function reduce(result, item) { | |
19 | 19 … | if (!item) return result | |
20 | 20 … | ||
21 | - var { tag, author, message, tagged, timestamp } = item | ||
22 | - var storedTimestamp = get(result, [author, tag, message]) | ||
21 … | + var { root, tagKey, author, message, tagged, timestamp } = item | ||
22 … | + var storedTimestamp = get(result, [author, tagKey, message]) | ||
23 | 23 … | ||
24 | - if (shouldAddTag()) { | ||
24 … | + if (root) { | ||
25 … | + var rootTag = { | ||
26 … | + [author]: { | ||
27 … | + [tagKey]: {} | ||
28 … | + } | ||
29 … | + } | ||
30 … | + result = merge(result, rootTag) | ||
31 … | + } else if (shouldAddTag()) { | ||
25 | 32 … | var newTag = { | |
26 | 33 … | [author]: { | |
27 | - [tag]: { | ||
34 … | + [tagKey]: { | ||
28 | 35 … | [message]: timestamp | |
29 | 36 … | } | |
30 | 37 … | } | |
31 | 38 … | } | |
32 | 39 … | result = merge(result, newTag) | |
33 | 40 … | } else if (shouldRemoveTag()) { | |
34 | - delete result[author][tag][message] | ||
41 … | + delete result[author][tagKey][message] | ||
35 | 42 … | } | |
36 | 43 … | ||
37 | 44 … | return result | |
38 | 45 … | ||
39 | 46 … | function shouldAddTag() { | |
40 | - if (tagged !== true) return false | ||
47 … | + if (!tagged) return false | ||
41 | 48 … | return !storedTimestamp || timestamp > storedTimestamp | |
42 | 49 … | } | |
43 | 50 … | ||
44 | 51 … | function shouldRemoveTag() { | |
@@ -54,21 +61,32 @@ | |||
54 | 61 … | if (msg.value.content === 'string') { | |
55 | 62 … | // unbox private message (requires ssb-private plugin) | |
56 | 63 … | msg = ssb.private.unbox(msg) | |
57 | 64 … | } | |
58 | - | ||
65 … | + | ||
59 | 66 … | if (isTag(msg)) { | |
60 | 67 … | return { | |
61 | - tag: msg.key, | ||
68 … | + tagKey: msg.value.content.root, | ||
62 | 69 … | author: msg.value.author, | |
63 | 70 … | message: msg.value.content.message, | |
64 | 71 … | tagged: msg.value.content.tagged, | |
65 | 72 … | timestamp: msg.value.timestamp | |
66 | 73 … | } | |
67 | - } | ||
74 … | + } else if (isRootTag(msg)) { | ||
75 … | + return { | ||
76 … | + tagKey: msg.key, | ||
77 … | + author: msg.value.author, | ||
78 … | + timestamp: msg.value.timestamp, | ||
79 … | + root: true | ||
80 … | + } | ||
81 … | + } | ||
68 | 82 … | } | |
69 | 83 … | } | |
70 | 84 … | ||
85 … | +function isRootTag(msg) { | ||
86 … | + return get(msg, 'value.content.type') === 'tag' | ||
87 … | +} | ||
88 … | + | ||
71 | 89 … | function isTag(msg) { | |
72 | 90 … | return get(msg, 'value.content.type') === 'tag' | |
73 | 91 … | && ref.isLink(get(msg, 'value.content.message')) | |
74 | 92 … | } |
Built with git-ssb-web