Checkpoint: Implémentation du résumé automatique généré par l'IA pour chaque article RSS (veille et AAP), marquage lu/non lu avec point bleu et fond teinté, bouton "Tout marquer comme lu", compteurs non lus dans la sidebar et dans les titres de page. Migration BDD : table article_reads + colonne iaResume dans veille_items et aap_items.
This commit is contained in:
@@ -89,6 +89,12 @@ export function AppLayout({ children, user, onLogout }: AppLayoutProps) {
|
||||
|
||||
const isAdmin = user?.role === "admin";
|
||||
|
||||
// Compteurs non lus
|
||||
const veilleUnreadQuery = trpc.veille.unreadCount.useQuery();
|
||||
const aapUnreadQuery = trpc.aap.unreadCount.useQuery();
|
||||
const veilleUnread = veilleUnreadQuery.data?.count ?? 0;
|
||||
const aapUnread = aapUnreadQuery.data?.count ?? 0;
|
||||
|
||||
const importMutation = trpc.import.run.useMutation({
|
||||
onSuccess: (data) => {
|
||||
const v = "veille" in data ? data.veille : null;
|
||||
@@ -174,6 +180,16 @@ export function AppLayout({ children, user, onLogout }: AppLayoutProps) {
|
||||
{item.badge}
|
||||
</Badge>
|
||||
)}
|
||||
{!collapsed && item.href === "/veille" && veilleUnread > 0 && (
|
||||
<span className="ml-auto inline-flex items-center justify-center min-w-[18px] h-[18px] px-1 rounded-full bg-primary text-primary-foreground text-[10px] font-bold">
|
||||
{veilleUnread}
|
||||
</span>
|
||||
)}
|
||||
{!collapsed && item.href === "/aap" && aapUnread > 0 && (
|
||||
<span className="ml-auto inline-flex items-center justify-center min-w-[18px] h-[18px] px-1 rounded-full bg-primary text-primary-foreground text-[10px] font-bold">
|
||||
{aapUnread}
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</Link>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user