Commit bee2958f3a890cd7ecae7658ea242acbfdcfdc52
fix unread count to work with new participants concept (exclude msgs from self)
mix irving committed on 2/13/2018, 10:31:33 PMParent: adca29179dee2177af6fefa725c91581ffef5395
Files changed
app/html/sideNav/sideNavDiscovery.js | changed |
app/html/sideNav/sideNavDiscovery.js | ||
---|---|---|
@@ -17,8 +17,9 @@ | ||
17 | 17 … | 'about.obs.name': 'first', |
18 | 18 … | 'feed.pull.private': 'first', |
19 | 19 … | 'history.sync.push': 'first', |
20 | 20 … | 'history.obs.store': 'first', |
21 … | + 'keys.sync.id': 'first', | |
21 | 22 … | 'message.html.subject': 'first', |
22 | 23 … | 'message.sync.getParticipants': 'first', |
23 | 24 … | 'sbot.obs.localPeers': 'first', |
24 | 25 … | 'translations.sync.strings': 'first', |
@@ -31,43 +32,37 @@ | ||
31 | 32 … | var unreadMsgsCache = Dict() // { id: [ msgs ] } |
32 | 33 … | |
33 | 34 … | return nest({ |
34 | 35 … | // intercept markUnread and remove them from the cache. |
35 | - 'unread.sync.markUnread': function (msg) { | |
36 | - unreadMsgsCache.get(msg.value.content.root || msg.key) | |
37 | - .delete(msg.key) | |
38 | - unreadMsgsCache.get(msg.value.author) | |
39 | - .delete(msg.key) | |
40 | - }, | |
36 … | + 'unread.sync.markUnread': markUnread, | |
41 | 37 … | 'app.html.sideNav': sideNav |
42 | 38 … | }) |
43 | 39 … | |
44 | - function isMatch (location) { | |
45 | - if (location.page) { | |
46 | - if (location.page.match(/^blog/)) return true | |
47 | - if (location.page.match(/^thread/)) return true | |
48 | - if (location.page.match(/^user/)) return true | |
49 | - if (location.page.match(/^channel/)) return true | |
50 | - } | |
51 | - if (location.key) { | |
52 | - return true | |
53 | - } | |
54 | - return false | |
40 … | + function markUnread (msg) { | |
41 … | + unreadMsgsCache.get(msg.value.content.root || msg.key) | |
42 … | + .delete(msg.key) | |
43 … | + | |
44 … | + const participants = api.message.sync.getParticipants(msg) | |
45 … | + unreadMsgsCache.get(participants.key) | |
46 … | + .delete(msg.key) | |
55 | 47 … | } |
56 | 48 … | |
57 | 49 … | function sideNav (location) { |
58 | - if (!isMatch(location)) return | |
50 … | + if (!isSideNavDiscovery(location)) return | |
59 | 51 … | |
60 | 52 … | const strings = api.translations.sync.strings() |
61 | 53 … | var nearby = api.sbot.obs.localPeers() |
62 | 54 … | const getParticipants = api.message.sync.getParticipants |
55 … | + const myKey = api.keys.sync.id() | |
63 | 56 … | |
64 | 57 … | // Unread message counts |
65 | 58 … | function updateCache (cache, msg) { |
66 | 59 … | if (api.unread.sync.isUnread(msg)) { cache.add(msg.key) } else { cache.delete(msg.key) } |
67 | 60 … | } |
68 | 61 … | |
69 | 62 … | function updateUnreadMsgsCache (msg) { |
63 … | + if (msg.value.author === myKey) return | |
64 … | + | |
70 | 65 … | const participantsKey = getParticipants(msg).key |
71 | 66 … | updateCache(getUnreadMsgsCache(participantsKey), msg) |
72 | 67 … | |
73 | 68 … | const rootKey = get(msg, 'value.content.root', msg.key) |
@@ -196,10 +191,10 @@ | ||
196 | 191 … | |
197 | 192 … | function updateRecentMsgCache (soFar, newMsg) { |
198 | 193 … | soFar.transaction(() => { |
199 | 194 … | const { timestamp } = newMsg.value |
200 | - newMsg.participantsKey = getParticipants(newMsg).key | |
201 | - const index = indexOf(soFar, (msg) => newMsg.participantsKey === resolve(msg).participantsKey) | |
195 … | + newMsg.participants = getParticipants(newMsg) | |
196 … | + const index = indexOf(soFar, (msg) => newMsg.participants.key === resolve(msg).participants.key) | |
202 | 197 … | var object = Value() |
203 | 198 … | |
204 | 199 … | if (index >= 0) { |
205 | 200 … | // reference already exists, lets use this instead! |
@@ -347,4 +342,18 @@ | ||
347 | 342 … | } |
348 | 343 … | } |
349 | 344 … | return -1 |
350 | 345 … | } |
346 … | + | |
347 … | +function isSideNavDiscovery (location) { | |
348 … | + if (location.page) { | |
349 … | + if (location.page.match(/^blog/)) return true | |
350 … | + if (location.page.match(/^thread/)) return true | |
351 … | + if (location.page.match(/^user/)) return true | |
352 … | + if (location.page.match(/^channel/)) return true | |
353 … | + } | |
354 … | + if (location.key) { | |
355 … | + return true | |
356 … | + } | |
357 … | + return false | |
358 … | +} | |
359 … | + |
Built with git-ssb-web