Changes in src/server.js [7a93fcf:31e63d1] in Klonkt


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/server.js

    r7a93fcf r31e63d1  
    6565import apRoutes from './routes/activitypub.js';
    6666import oauthRoutes from './routes/oauth.js';
    67 import { apWants, startDeliveryWorker, selfHealTimeline } from './services/ActivityPubService.js';
     67import { apWants, startDeliveryWorker, selfHealTimeline, migrateReactions } from './services/ActivityPubService.js';
    6868
    6969// SESSION_SECRET: use the env var if set. Otherwise auto-generate a strong one
     
    197197startScheduler(); // release planning: publish scheduled posts when publish_at is reached
    198198startDeliveryWorker(); // retry failed fediverse deliveries with backoff
     199// Once per REACTIONS_MIGRATION_VERSION bump: reacties naar de tussentabel, onder
     200// de canonieke object-URI. Moet VOOR het serveren, want vanaf nu leest de code
     201// die tabel -- draait hij niet, dan tonen oude likes als niet-gegeven.
     202migrateReactions();
    199203selfHealTimeline(); // once per SELFHEAL_VERSION bump: re-sync the fediverse cache (covers/edits) after a drastic update
    200204
     
    542546  try { d = e.data ? e.data.json() : {}; } catch (err) { /* non-JSON push */ }
    543547  const title = d.title || 'Klonkt';
    544   e.waitUntil(self.registration.showNotification(title, {
    545     body: d.body || '',
    546     icon: '/favicon.svg',
    547     badge: '/favicon.svg',
    548     tag: d.type ? ('klonkt-' + d.type) : undefined,   // collapse same-type bursts
    549     data: { url: d.url || '/' },
    550   }));
     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  ]));
    551564});
    552565self.addEventListener('notificationclick', e => {
Note: See TracChangeset for help on using the changeset viewer.