Checkpoint: Persistance "marquer comme lu" entre sessions :
- Ajout de veille.getReadIds et aap.getReadIds dans routers.ts (procédures protectedProcedure) - VeilleDashboard.tsx : chargement des IDs lus depuis la DB au montage (useEffect sur readIdsQuery), invalidation getReadIds dans markAsRead et markAllAsRead - AAPDashboard.tsx : même pattern - 0 erreur TypeScript
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { useState, useMemo } from "react";
|
||||
import { useState, useMemo, useEffect } from "react";
|
||||
import { useLocalAuth } from "@/contexts/LocalAuthContext";
|
||||
import { toast } from "sonner";
|
||||
import { trpc } from "@/lib/trpc";
|
||||
@@ -117,13 +117,23 @@ export default function AAPDashboard() {
|
||||
|
||||
// Marquage lu/non lu
|
||||
const [readIds, setReadIds] = useState<Set<number>>(new Set());
|
||||
const readIdsQuery = trpc.aap.getReadIds.useQuery(undefined, { enabled: !!user });
|
||||
useEffect(() => {
|
||||
if (readIdsQuery.data?.ids) {
|
||||
setReadIds(new Set(readIdsQuery.data.ids));
|
||||
}
|
||||
}, [readIdsQuery.data]);
|
||||
const markAsReadMutation = trpc.aap.markAsRead.useMutation({
|
||||
onSuccess: (_, vars) => {
|
||||
setReadIds((prev) => { const next = new Set(prev); next.add(vars.articleId); return next; });
|
||||
utils.aap.getReadIds.invalidate();
|
||||
},
|
||||
});
|
||||
const markAllAsReadMutation = trpc.aap.markAllAsRead.useMutation({
|
||||
onSuccess: () => { utils.aap.unreadCount.invalidate(); },
|
||||
onSuccess: () => {
|
||||
utils.aap.unreadCount.invalidate();
|
||||
utils.aap.getReadIds.invalidate();
|
||||
},
|
||||
});
|
||||
const unreadCountQuery = trpc.aap.unreadCount.useQuery();
|
||||
const unreadCount = unreadCountQuery.data?.count ?? 0;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useState, useMemo } from "react";
|
||||
import { useState, useMemo, useEffect } from "react";
|
||||
import { useLocalAuth } from "@/contexts/LocalAuthContext";
|
||||
import { toast } from "sonner";
|
||||
import { trpc } from "@/lib/trpc";
|
||||
@@ -234,14 +234,22 @@ export default function VeilleDashboard() {
|
||||
|
||||
// Marquage lu/non lu
|
||||
const [readIds, setReadIds] = useState<Set<number>>(new Set());
|
||||
const readIdsQuery = trpc.veille.getReadIds.useQuery(undefined, { enabled: !!user });
|
||||
useEffect(() => {
|
||||
if (readIdsQuery.data?.ids) {
|
||||
setReadIds(new Set(readIdsQuery.data.ids));
|
||||
}
|
||||
}, [readIdsQuery.data]);
|
||||
const markAsReadMutation = trpc.veille.markAsRead.useMutation({
|
||||
onSuccess: (_, vars) => {
|
||||
setReadIds((prev) => { const next = new Set(prev); next.add(vars.articleId); return next; });
|
||||
utils.veille.getReadIds.invalidate();
|
||||
},
|
||||
});
|
||||
const markAllAsReadMutation = trpc.veille.markAllAsRead.useMutation({
|
||||
onSuccess: () => {
|
||||
utils.veille.unreadCount.invalidate();
|
||||
utils.veille.getReadIds.invalidate();
|
||||
},
|
||||
});
|
||||
const unreadCountQuery = trpc.veille.unreadCount.useQuery();
|
||||
|
||||
Reference in New Issue
Block a user