Commit 6bf1d61b158ce574e9cc6736605236ab1895c14f
sort backlinks by asserted time (or branch if available)
fixes #590Matt McKegg committed on 7/18/2017, 4:29:22 AM
Parent: 8aaece459cf35d19c7635e39fdd6996ae3e029d2
Files changed
overrides/patchcore/backlinks/obs.js | changed |
overrides/patchcore/backlinks/obs.js | ||
---|---|---|
@@ -4,8 +4,9 @@ | ||
4 | 4 | var computed = require('mutant/computed') |
5 | 5 | var resolve = require('mutant/resolve') |
6 | 6 | var pull = require('pull-stream') |
7 | 7 | var onceIdle = require('mutant/once-idle') |
8 | +var sorted = require('sorted-array-functions') | |
8 | 9 | |
9 | 10 | exports.needs = nest({ |
10 | 11 | 'sbot.pull.backlinks': 'first', |
11 | 12 | 'sbot.obs.connection': 'first', |
@@ -64,9 +65,9 @@ | ||
64 | 65 | index: 'DTA' // use asserted timestamps |
65 | 66 | }), |
66 | 67 | pull.drain((msg) => { |
67 | 68 | var value = resolve(collection) |
68 | - value.push(msg) | |
69 | + sorted.add(value, msg, compareAsserted) | |
69 | 70 | collection.set(value) |
70 | 71 | }, () => { |
71 | 72 | sync.set(true) |
72 | 73 | }) |
@@ -117,4 +118,26 @@ | ||
117 | 118 | function unsubscribe (id) { |
118 | 119 | onceTrue(api.sbot.obs.connection(), (sbot) => sbot.patchwork.liveBacklinks.unsubscribe(id)) |
119 | 120 | } |
120 | 121 | } |
122 | + | |
123 | +function compareAsserted (a, b) { | |
124 | + if (isReplyTo(a, b)) { | |
125 | + return -1 | |
126 | + } else if (isReplyTo(b, a)) { | |
127 | + return 1 | |
128 | + } else { | |
129 | + return a.value.timestamp - b.value.timestamp | |
130 | + } | |
131 | +} | |
132 | + | |
133 | +function isReplyTo (maybeReply, msg) { | |
134 | + return (includesOrEquals(maybeReply.branch, msg.key)) | |
135 | +} | |
136 | + | |
137 | +function includesOrEquals (array, value) { | |
138 | + if (Array.isArray(array)) { | |
139 | + return array.includes(value) | |
140 | + } else { | |
141 | + return array === value | |
142 | + } | |
143 | +} |
Built with git-ssb-web