import { useState } from "react"; import { useQuery, useMutation } from "@tanstack/react-query"; import { useLocation } from "wouter"; import { Send, Sparkles, Image as ImageIcon, Calendar } from "lucide-react"; import Sidebar from "@/components/sidebar"; import TopBar from "@/components/topbar"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Textarea } from "@/components/ui/textarea"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Checkbox } from "@/components/ui/checkbox"; import { useToast } from "@/hooks/use-toast"; import { apiRequest, queryClient } from "@/lib/queryClient"; import type { SocialPage, Media } from "@shared/schema"; export default function NewPost() { const [sidebarOpen, setSidebarOpen] = useState(false); const [, navigate] = useLocation(); const { toast } = useToast(); const [productInfo, setProductInfo] = useState(''); const [selectedMedia, setSelectedMedia] = useState(null); const [selectedPages, setSelectedPages] = useState([]); const [scheduledDate, setScheduledDate] = useState(''); const { data: pages = [] } = useQuery({ queryKey: ['/api/pages'], }); const { data: mediaList = [] } = useQuery({ queryKey: ['/api/media'], }); const generateTextMutation = useMutation({ mutationFn: (productInfo: string) => apiRequest('POST', '/api/ai/generate', { productInfo }), onSuccess: (data: any) => { toast({ title: "Texte généré", description: `${data.variations?.length || 0} variations créées`, }); queryClient.invalidateQueries({ queryKey: ['/api/ai/generations'] }); }, onError: () => { toast({ title: "Erreur", description: "Impossible de générer le texte", variant: "destructive", }); }, }); const createPostMutation = useMutation({ mutationFn: (data: any) => apiRequest('POST', '/api/posts', data), onSuccess: () => { toast({ title: "Publication créée", description: "La publication a été créée avec succès", }); navigate('/'); }, onError: () => { toast({ title: "Erreur", description: "Impossible de créer la publication", variant: "destructive", }); }, }); const handleGenerateText = () => { if (!productInfo.trim()) { toast({ title: "Information manquante", description: "Veuillez saisir les informations du produit", variant: "destructive", }); return; } generateTextMutation.mutate(productInfo); }; const handleCreatePost = () => { if (!productInfo.trim()) { toast({ title: "Contenu requis", description: "Veuillez saisir le contenu de la publication", variant: "destructive", }); return; } createPostMutation.mutate({ content: productInfo, scheduledFor: scheduledDate || undefined, }); }; return (
{sidebarOpen && (
setSidebarOpen(false)} /> )}
setSidebarOpen(!sidebarOpen)} />

Nouvelle publication

Créez et planifiez une nouvelle publication

Contenu Informations du produit ou message