Commit 61a89f2614a9e41e661b0fca3162cd220b9c1b8e
feed-summary: fix pressure release (stop stalling), fix profile view missing items
Matt McKegg committed on 11/1/2016, 10:06:38 PMParent: c3ac1113d78826196361985ac8714e115d92deb9
Files changed
lib/feed-summary.js | changed |
lib/feed-summary.js | ||
---|---|---|
@@ -23,24 +23,30 @@ | ||
23 | 23 … | pull.collect((err, values) => { |
24 | 24 … | if (err) throw err |
25 | 25 … | if (!values.length) { |
26 | 26 … | done = true |
27 … | + pushable.end() | |
28 … | + if (!returned) cb && cb() | |
29 … | + returned = true | |
27 | 30 … | } else { |
28 | 31 … | var fromTime = last && last.timestamp || Date.now() |
29 | - groupMessages(values, fromTime, bumpFilter).forEach(v => pushable.push(v)) | |
30 | 32 … | last = values[values.length - 1] |
33 … | + groupMessages(values, fromTime, bumpFilter, (err, result) => { | |
34 … | + if (err) return cb(err) | |
35 … | + result.forEach(v => pushable.push(v)) | |
36 … | + pushable.end() | |
37 … | + if (!returned) cb && cb() | |
38 … | + returned = true | |
39 … | + }) | |
31 | 40 … | } |
32 | - pushable.end() | |
33 | - if (!returned) cb && cb() | |
34 | - returned = true | |
35 | 41 … | }) |
36 | 42 … | ) |
37 | 43 … | } |
38 | 44 … | return pushable |
39 | 45 … | }) |
40 | 46 … | } |
41 | 47 … | |
42 | -function groupMessages (messages, fromTime, bumpFilter) { | |
48 … | +function groupMessages (messages, fromTime, bumpFilter, cb) { | |
43 | 49 … | var follows = {} |
44 | 50 … | var messageUpdates = {} |
45 | 51 … | reverseForEach(messages, function (msg) { |
46 | 52 … | if (!msg.value) return |
@@ -79,41 +85,41 @@ | ||
79 | 85 … | group.channel = group.channel || msg.value.content.channel |
80 | 86 … | |
81 | 87 … | // only bump when filter passes |
82 | 88 … | if (!bumpFilter || bumpFilter(msg, group)) { |
83 | - group.updated = msg.timestamp | |
89 … | + group.updated = msg.timestamp || msg.value.sequence | |
84 | 90 … | } |
85 | 91 … | } else { |
86 | 92 … | const group = ensureMessage(msg.key, messageUpdates) |
87 | 93 … | group.fromTime = fromTime |
88 | 94 … | group.lastUpdateType = 'post' |
89 | - group.updated = msg.timestamp | |
95 … | + group.updated = msg.timestamp || msg.value.sequence | |
90 | 96 … | group.author = msg.value.author |
91 | 97 … | group.channel = msg.value.content.channel |
92 | 98 … | group.message = msg |
93 | 99 … | } |
94 | 100 … | } |
101 … | + }, () => { | |
102 … | + var result = [] | |
103 … | + Object.keys(follows).forEach((key) => { | |
104 … | + if (follows[key].updated) { | |
105 … | + SortedArray.add(result, follows[key], compareUpdated) | |
106 … | + } | |
107 … | + }) | |
108 … | + Object.keys(messageUpdates).forEach((key) => { | |
109 … | + if (messageUpdates[key].updated) { | |
110 … | + SortedArray.add(result, messageUpdates[key], compareUpdated) | |
111 … | + } | |
112 … | + }) | |
113 … | + cb(null, result) | |
95 | 114 … | }) |
96 | - | |
97 | - var result = [] | |
98 | - Object.keys(follows).forEach((key) => { | |
99 | - if (follows[key].updated) { | |
100 | - SortedArray.add(result, follows[key], compareUpdated) | |
101 | - } | |
102 | - }) | |
103 | - Object.keys(messageUpdates).forEach((key) => { | |
104 | - if (messageUpdates[key].updated) { | |
105 | - SortedArray.add(result, messageUpdates[key], compareUpdated) | |
106 | - } | |
107 | - }) | |
108 | - return result | |
109 | 115 … | } |
110 | 116 … | |
111 | 117 … | function compareUpdated (a, b) { |
112 | 118 … | return b.updated - a.updated |
113 | 119 … | } |
114 | 120 … | |
115 | -function reverseForEach (items, fn) { | |
121 … | +function reverseForEach (items, fn, cb) { | |
116 | 122 … | var i = items.length - 1 |
117 | 123 … | var start = Date.now() |
118 | 124 … | nextBatch() |
119 | 125 … | |
@@ -124,8 +130,10 @@ | ||
124 | 130 … | } |
125 | 131 … | |
126 | 132 … | if (i > 0) { |
127 | 133 … | setImmediate(nextBatch) |
134 … | + } else { | |
135 … | + cb && cb() | |
128 | 136 … | } |
129 | 137 … | } |
130 | 138 … | } |
131 | 139 … | |
@@ -145,9 +153,9 @@ | ||
145 | 153 … | id: id |
146 | 154 … | } |
147 | 155 … | } |
148 | 156 … | group.contacts.add(c.contact) |
149 | - group.updated = msg.timestamp | |
157 … | + group.updated = msg.timestamp || msg.value.sequence | |
150 | 158 … | } else { |
151 | 159 … | if (group) { |
152 | 160 … | group.contacts.delete(c.contact) |
153 | 161 … | if (!group.contacts.size) { |
Built with git-ssb-web