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