mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-23 23:18:12 +02:00
Le sélecteur de date des Reels ne montrait rien de ce qui était déjà programmé, et celui des posts ne marquait qu'un jour « occupé » sans dire pour quel magasin ni à quelle heure. - GET /api/scheduled-posts/agenda : publications planifiées et Reels encore en montage (qui n'ont pas de scheduled_posts avant la fin du rendu), limités aux magasins accessibles. - Calendrier : pastille par jour, en rouge si un magasin coché a déjà une publication, en gris s'il s'agit d'autres magasins. - Heures : badge sur les heures déjà prises sur les magasins cochés. - Panneau « Déjà prévu ce jour-là » groupé par magasin, avec une alerte non bloquante en cas de doublon. - Branché sur Nouveau post, Reel et Programmer un Reel. - Icône Reel dans la vue calendrier. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TMU8FG2v2EE54YWHhqehPw
25 lines
973 B
TypeScript
25 lines
973 B
TypeScript
import { useMemo } from "react";
|
|
import { useQuery } from "@tanstack/react-query";
|
|
import { addDays, endOfMonth, startOfMonth } from "date-fns";
|
|
import { groupByDay, type AgendaItem } from "@shared/agenda";
|
|
|
|
/**
|
|
* Publications prévues autour du mois affiché, rangées par jour.
|
|
*
|
|
* La clé commence par `/api/scheduled-posts` : toute invalidation des
|
|
* publications planifiées (création, suppression, fin de montage) la rafraîchit.
|
|
*/
|
|
export function usePublicationAgenda(month: Date) {
|
|
// Le calendrier montre aussi les jours des mois voisins
|
|
const startDate = addDays(startOfMonth(month), -7).toISOString();
|
|
const endDate = addDays(endOfMonth(month), 7).toISOString();
|
|
|
|
const { data: items = [], isLoading } = useQuery<AgendaItem[]>({
|
|
queryKey: ["/api/scheduled-posts", "agenda", { startDate, endDate }],
|
|
refetchInterval: 30000,
|
|
});
|
|
|
|
const itemsByDay = useMemo(() => groupByDay(items), [items]);
|
|
return { items, itemsByDay, isLoading };
|
|
}
|