aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordave <starpumadev@gmail.com>2019-02-25 12:12:49 -0500
committerdave <starpumadev@gmail.com>2019-02-25 12:12:49 -0500
commit4e8b696797d5c4010abbe12584b8d70badb76a4c (patch)
tree39466fbbe9639297e19429ab1553c1242b4af456 /src
parent1dd7120e1630531f46f9dd101b877c614a0475e5 (diff)
#380: fix false alarm for unread notifications
Diffstat (limited to 'src')
-rw-r--r--src/modules/statuses.js3
-rw-r--r--src/services/notifications_fetcher/notifications_fetcher.service.js12
2 files changed, 14 insertions, 1 deletions
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index 46117fd7..c6fcfe2e 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -303,6 +303,9 @@ const addNewNotifications = (state, { dispatch, notifications, older, visibleNot
setTimeout(notification.close.bind(notification), 5000)
}
}
+ } else if (notification.seen) {
+ state.notifications.data.find(n => n.id === notification.id).seen = true
+ state.notifications.idStore[notification.id].seen = true
}
})
}
diff --git a/src/services/notifications_fetcher/notifications_fetcher.service.js b/src/services/notifications_fetcher/notifications_fetcher.service.js
index b69ec643..3ecdae6a 100644
--- a/src/services/notifications_fetcher/notifications_fetcher.service.js
+++ b/src/services/notifications_fetcher/notifications_fetcher.service.js
@@ -16,7 +16,17 @@ const fetchAndUpdate = ({store, credentials, older = false}) => {
args['until'] = timelineData.minId
}
} else {
- args['since'] = timelineData.maxId
+ // load unread notifications repeadedly to provide consistency between browser tabs
+ const notifications = timelineData.data
+ const unread = notifications.filter(n => !n.seen).map(n => n.id)
+ if (!unread.length) {
+ args['since'] = timelineData.maxId
+ } else {
+ args['since'] = Math.min(...unread) - 1
+ if (timelineData.maxId !== Math.max(...unread)) {
+ args['until'] = Math.max(...unread, args['since'] + 20)
+ }
+ }
}
args['timeline'] = 'notifications'