aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changelog.d/unreads-sync.fix1
-rw-r--r--src/services/api/api.service.js4
-rw-r--r--src/services/notifications_fetcher/notifications_fetcher.service.js8
3 files changed, 10 insertions, 3 deletions
diff --git a/changelog.d/unreads-sync.fix b/changelog.d/unreads-sync.fix
new file mode 100644
index 00000000..1eac3364
--- /dev/null
+++ b/changelog.d/unreads-sync.fix
@@ -0,0 +1 @@
+unread notifications should now properly catch up (eventually) in polling mode
diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js
index f45e3958..bde2e163 100644
--- a/src/services/api/api.service.js
+++ b/src/services/api/api.service.js
@@ -671,6 +671,7 @@ const fetchTimeline = ({
timeline,
credentials,
since = false,
+ minId = false,
until = false,
userId = false,
listId = false,
@@ -705,6 +706,9 @@ const fetchTimeline = ({
url = url(listId)
}
+ if (minId) {
+ params.push(['min_id', minId])
+ }
if (since) {
params.push(['since_id', since])
}
diff --git a/src/services/notifications_fetcher/notifications_fetcher.service.js b/src/services/notifications_fetcher/notifications_fetcher.service.js
index 3c280b74..21540845 100644
--- a/src/services/notifications_fetcher/notifications_fetcher.service.js
+++ b/src/services/notifications_fetcher/notifications_fetcher.service.js
@@ -49,9 +49,11 @@ const fetchAndUpdate = ({ store, credentials, older = false, since }) => {
// The normal maxId-check does not tell if older notifications have changed
const notifications = timelineData.data
const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)
- const numUnseenNotifs = notifications.length - readNotifsIds.length
- if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {
- args.since = Math.max(...readNotifsIds)
+ const unreadNotifsIds = notifications.filter(n => !n.seen).map(n => n.id)
+ if (readNotifsIds.length > 0 && readNotifsIds.length > 0) {
+ const minId = Math.min(...unreadNotifsIds) // Oldest known unread notification
+ args.since = false // Don't use since_id since it sorta conflicts with min_id
+ args.minId = minId - 1 // go beyond
fetchNotifications({ store, args, older })
}