feat(beskeder): appens ikon bærer tallet på ulæste
Klokken i hovedet siger, hvad der er nyt — men kun til den, der kigger på fanen. Det halve af pointen med at få besked er at få den, mens man laver noget andet, og det eneste sted, appen kan sige noget dér, er på sit eget ikon: mærket i Dock'en på en Mac, på proceslinjen på en pc. Sat to steder, fordi der er to tilstande. Appen selv, mens den er åben og kender tallet, og service-workeren, når den ikke er — og det er netop dér, mærket er det, der siger, at der er sket noget. Tallet kommer med i push-beskeden frem for at blive talt op af service-workeren. Den husker ingenting mellem to opvågninger og kunne derfor kun lægge én til noget, den ikke ved hvad er: et mærke, der tæller sig selv op og aldrig kommer ned igen. Serveren ved det i forvejen, og en tælling, der fejler, udelader feltet frem for at sende et nul — så står mærket, som det stod, i stedet for at blive tørret af en optælling, der ikke lykkedes. Ét tal, aldrig en optælling: mærket sættes til hvad der *er*, så det går ned af sig selv, når beskederne bliver læst. Og det ryddes ved log ud — det står i Dock'en, også når ingen er logget ind. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
61634a6bb5
commit
b041b32aa2
@@ -145,6 +145,19 @@ self.addEventListener('push', (event) => {
|
||||
}
|
||||
|
||||
const title = payload.title || 'verdande';
|
||||
// Mærket på appens ikon — i Dock'en på en Mac, på proceslinjen på en pc.
|
||||
//
|
||||
// Sat her, fordi det her er det eneste, der kører, når appen ikke er åben: det
|
||||
// er netop dér, et tal på ikonet er det, der siger, at der er noget nyt. Tallet
|
||||
// kommer med beskeden frem for at blive talt op her; en service-worker husker
|
||||
// ingenting mellem to opvågninger, så et mærke, den selv talte, ville kun kunne
|
||||
// gå opad.
|
||||
//
|
||||
// Kan browseren ikke sætte mærker, sker der ingenting. Det er ikke en fejl at
|
||||
// melde om: beskeden selv kom frem, og den er hovedsagen.
|
||||
if (typeof payload.unread === 'number' && 'setAppBadge' in self.navigator) {
|
||||
self.navigator.setAppBadge(payload.unread).catch(() => {});
|
||||
}
|
||||
event.waitUntil(
|
||||
self.registration.showNotification(title, {
|
||||
body: payload.body || '',
|
||||
|
||||
Reference in New Issue
Block a user