Sposta il contatore delle notifiche in un pallino sull'avatar del profilo

Tolta la campanella in alto a destra: il numero delle non lette è ora un pallino
rosso sull'angolo dell'avatar. Il tap sull'avatar porta sempre al profilo, quello
sul pallino apre l'elenco delle notifiche (lettura ed eliminazione). Con tutte le
notifiche lette il pallino resta neutro col totale, così restano eliminabili.
Logica del pallino in pallinoNotifiche(), coperta da test; documentazione allineata.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
davideandClaude Opus 5.5 committed 2026-09-24 13:53:58 +02:00
1 parent c6437a605c
commit 33ed2398ab
10 files changed
+119 -82

No files matched your search

+13 -1
View File
@@ -1,6 +1,11 @@
/** Check delle notifiche in-app (M17): `bun test/unit/notifiche-utente.test.ts`. */
import assert from "node:assert/strict";
import { contatoreBadge, daRiga, type RigaNotifica } from "@/lib/notifiche-utente";
import {
contatoreBadge,
daRiga,
pallinoNotifiche,
type RigaNotifica,
} from "@/lib/notifiche-utente";
// --- daRiga: conversione database -> modello applicativo ---------------------
const riga: RigaNotifica = {
@@ -36,4 +41,11 @@ assert.equal(contatoreBadge(9), "9");
assert.equal(contatoreBadge(10), "9+");
assert.equal(contatoreBadge(42), "9+");
// --- pallinoNotifiche: rosso con le non lette, neutro col totale, assente se vuoto ---
assert.equal(pallinoNotifiche(0, 0), null);
assert.deepEqual(pallinoNotifiche(5, 2), { testo: "2", daLeggere: true });
assert.deepEqual(pallinoNotifiche(30, 12), { testo: "9+", daLeggere: true });
// Tutte lette: il pallino resta per poterle ancora aprire ed eliminare.
assert.deepEqual(pallinoNotifiche(3, 0), { testo: "3", daLeggere: false });
console.log("notifiche-utente: ok");