summaryrefslogtreecommitdiff
path: root/ui/service-worker.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/service-worker.js')
-rw-r--r--ui/service-worker.js17
1 files changed, 12 insertions, 5 deletions
diff --git a/ui/service-worker.js b/ui/service-worker.js
index 56bfca9..67391f7 100644
--- a/ui/service-worker.js
+++ b/ui/service-worker.js
@@ -34,9 +34,11 @@ self.addEventListener('push', (event) => {
body: event.data.text(),
}),
);
+
+ const data = event.data?.json();
// Now we can do slower things that might fail:
- conversationReadStatus[event.conversationId] ||= { lastRead: null, lastMessage: null };
- conversationReadStatus[event.conversationId].lastMessage = new Date();
+ conversationReadStatus[data.conversationId] ||= { lastRead: null, lastMessage: null };
+ conversationReadStatus[data.conversationId].lastMessage = new Date();
event.waitUntil(
(async () => {
if (navigator.setAppBadge) {
@@ -48,10 +50,15 @@ self.addEventListener('push', (event) => {
// The client has to tell us when it has read a conversation:
self.addEventListener('message', (event) => {
- switch (event.data?.type) {
+ const data = event.data;
+ switch (data.type) {
case 'CONVERSATION_READ':
- conversationReadStatus[event.data.conversationId] ||= { lastRead: null, lastMessage: null };
- conversationReadStatus[event.data.conversationId].lastMessage = event.data.at || new Date();
+ conversationReadStatus[data.conversationId] ||= { lastRead: null, lastMessage: null };
+ if (data.at) {
+ conversationReadStatus[data.conversationId].lastRead = new Date(data.at.ts);
+ } else {
+ conversationReadStatus[data.conversationId].lastRead = new Date();
+ }
event.waitUntil(
(async () => {
if (navigator.setAppBadge) {