Experiment use markers for notifications

pull/228/head
Lim Chee Aun 2023-09-10 19:22:14 +08:00
rodzic fcfc61c93b
commit 671c68b8f8
3 zmienionych plików z 32 dodań i 1 usunięć

Wyświetl plik

@ -24,7 +24,20 @@ export default memo(function BackgroundService({ isLoggedIn }) {
});
const { value: notifications } = await notificationsIterator.next();
if (notifications?.length) {
states.notificationsShowNew = true;
let lastReadId;
try {
const markers = await masto.v1.markers.fetch({
timeline: 'notifications',
});
lastReadId = markers?.notifications?.lastReadId;
} catch (e) {}
if (lastReadId) {
if (notifications[0].id !== lastReadId) {
states.notificationsShowNew = true;
}
} else {
states.notificationsShowNew = true;
}
}
}

Wyświetl plik

@ -128,6 +128,15 @@ function NotificationsMenu({ anchorRef, state, onClose }) {
states.notificationsLast = notifications[0];
states.notifications = groupedNotifications;
// Update last read marker
masto.v1.markers
.create({
notifications: {
lastReadId: notifications[0].id,
},
})
.catch(() => {});
}
states.notificationsShowNew = false;

Wyświetl plik

@ -73,6 +73,15 @@ function Notifications({ columnMode }) {
if (firstLoad) {
states.notificationsLast = notifications[0];
states.notifications = groupedNotifications;
// Update last read marker
masto.v1.markers
.create({
notifications: {
lastReadId: notifications[0].id,
},
})
.catch(() => {});
} else {
states.notifications.push(...groupedNotifications);
}