Changeset 31e63d1 in Klonkt
- Timestamp:
- 08/07/2026 10:15:44 AM (5 weeks ago)
- Branches:
- main
- Children:
- f889429
- Parents:
- 44c9f3f
- git-author:
- Robin <roboburr@…> (08/07/2026 10:15:42 AM)
- git-committer:
- roboburr <roboburr@…> (08/07/2026 10:15:44 AM)
- Location:
- src
- Files:
-
- 2 edited
-
assets/js/guardian.js (modified) (2 diffs)
-
server.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/js/guardian.js
r44c9f3f r31e63d1 453 453 actRow.appendChild(rel); 454 454 act.appendChild(actRow); 455 panel.appendChild(act); 455 // Bovenaan, niet onderaan: zwaaien en loslaten zijn de dingen die je DOET. 456 // De rest van het paneel is lezen -- instellingen, wie er nog meer op let, 457 // wat er binnenkwam. Wie het paneel opent om iets te doen hoorde eerst langs 458 // vijf secties te scrollen. 459 panel.insertBefore(act, panel.firstChild); 456 460 return panel; 457 461 } … … 706 710 707 711 renderAll(); pushState(); loadFeed(); loadFollowReqs(); 708 setInterval(refresh, 45000); // live-ish while open 712 713 // De push die de melding brengt is meteen het teken dat de staat veranderd is. 714 // Daarmee hoeft er geen tweede, open verbinding bij: hetzelfde kanaal doet het 715 // werk, en het werkt ook als de app dicht is. 716 if ('serviceWorker' in navigator) { 717 navigator.serviceWorker.addEventListener('message', function (e) { 718 if (e.data && e.data.klonkt === 'push') refresh(); 719 }); 720 } 721 // Het tikje blijft als vangnet -- niet elke verandering geeft een melding, en 722 // niet iedereen heeft meldingen aanstaan. Maar niet tikken terwijl niemand 723 // kijkt: dat waren verzoeken voor een tabblad op de achtergrond. Bij terugkomen 724 // meteen een keer, want dan is de kans op nieuws het grootst. 725 setInterval(function () { if (!document.hidden) refresh(); }, 45000); 726 document.addEventListener('visibilitychange', function () { if (!document.hidden) refresh(); }); 709 727 } catch (e) { 710 728 fatal((e && e.message) || String(e)); -
src/server.js
r44c9f3f r31e63d1 546 546 try { d = e.data ? e.data.json() : {}; } catch (err) { /* non-JSON push */ } 547 547 const title = d.title || 'Klonkt'; 548 e.waitUntil(self.registration.showNotification(title, { 549 body: d.body || '', 550 icon: '/favicon.svg', 551 badge: '/favicon.svg', 552 tag: d.type ? ('klonkt-' + d.type) : undefined, // collapse same-type bursts 553 data: { url: d.url || '/' }, 554 })); 548 e.waitUntil(Promise.all([ 549 self.registration.showNotification(title, { 550 body: d.body || '', 551 icon: '/favicon.svg', 552 badge: '/favicon.svg', 553 tag: d.type ? ('klonkt-' + d.type) : undefined, // collapse same-type bursts 554 data: { url: d.url || '/' }, 555 }), 556 // Wek ook een pagina die al openstaat. De push IS het teken dat er iets 557 // veranderd is, dus een aparte live-verbinding ernaast zou hetzelfde nog 558 // eens doen -- en die tweede zou alleen werken zolang de app open is, 559 // terwijl dit kanaal er ook is als hij dicht is. Een kanaal, twee doelen. 560 self.clients.matchAll({ type: 'window', includeUncontrolled: true }) 561 .then(list => { for (const c of list) c.postMessage({ klonkt: 'push', type: d.type || null }); }) 562 .catch(() => { /* geen open venster: niets te wekken */ }), 563 ])); 555 564 }); 556 565 self.addEventListener('notificationclick', e => {
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)