Ignore:
Timestamp:
08/10/2026 06:16:16 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
fc9ca9d
Parents:
e215090
Message:

De badge telt niet wat de poort verbergt

Gevonden bij het bijwerken van de bead, niet bij het bouwen: unreadPerConversation
telde alle inkomende berichten, ook die de app achter een dichte messages-poort
nooit toont. Dan vertelt het getal precies wat de poort verbergt.

Nu dezelfde regel als bij de serialisatie: dicht telt niet mee, behalve wat er
altijd door mag -- het guardian-kanaal en de boei.

Co-Authored-By: Claude Opus 5 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ActivityPubService.js

    re215090 r383e897  
    44104410 * Eigen berichten tellen nooit mee: je hebt jezelf gelezen.
    44114411 */
    4412 export function unreadPerConversation(slug) {
    4413   try {
     4412export function unreadPerConversation(slug, { messagesAllowed = true, guardians = new Set() } = {}) {
     4413  try {
     4414    // DE POORT TELT MEE. Staat messages dicht, dan toont de app die berichten
     4415    // niet -- en dan mag een badge ze ook niet aankondigen, want dat getal
     4416    // vertelt precies wat de poort verbergt. Wat er altijd door mag telt wel:
     4417    // het guardian-kanaal en de boei. Zelfde regel als bij de serialisatie.
    44144418    const rijen = db.prepare(`
    44154419      SELECT u.other AS other,
     
    44214425       WHERE u.direction = 'in'
    44224426         AND (r.cursor IS NULL OR (u.stamp || '|' || u.ref) > r.cursor)
    4423        GROUP BY u.other`).all({ slug });
     4427         AND (@open = 1 OR m.help_request = 1 OR u.other IN (SELECT value FROM json_each(@guardians)))
     4428       GROUP BY u.other`)
     4429      .all({ slug, open: messagesAllowed ? 1 : 0, guardians: JSON.stringify([...guardians]) });
    44244430    return new Map(rijen.map((r) => [r.other, { n: r.n, wave: !!r.wave }]));
    44254431  } catch { return new Map(); }
Note: See TracChangeset for help on using the changeset viewer.