import { useState } from "react"; import { useQuery, useMutation } from "@tanstack/react-query"; import { Plus, Facebook, Instagram, Trash2, RefreshCw, Edit, Bug, Code } 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 { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { useToast } from "@/hooks/use-toast"; import { apiRequest, queryClient } from "@/lib/queryClient"; import type { SocialPage } from "@shared/schema"; export default function PagesManagement() { const [sidebarOpen, setSidebarOpen] = useState(false); const [dialogOpen, setDialogOpen] = useState(false); const [editingPage, setEditingPage] = useState(null); const { toast } = useToast(); const { data: pages = [], isLoading } = useQuery({ queryKey: ['/api/pages'], }); const deleteMutation = useMutation({ mutationFn: (pageId: string) => apiRequest('DELETE', `/api/pages/${pageId}`), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['/api/pages'] }); toast({ title: "Page supprimée", description: "La page a été retirée avec succès", }); }, onError: () => { toast({ title: "Erreur", description: "Impossible de supprimer la page", variant: "destructive", }); }, }); return (
{sidebarOpen && (
setSidebarOpen(false)} /> )}
setSidebarOpen(false)} />
setSidebarOpen(!sidebarOpen)} />

Pages gérées

Connectez et gérez vos pages Facebook et Instagram

!open && setEditingPage(null)} />
{isLoading ? (
{[1, 2, 3].map((i) => (
))}
) : pages.length === 0 ? (

Aucune page connectée

Commencez par connecter vos pages Facebook et Instagram

) : (
{pages.map((page) => (
{page.platform === 'facebook' ? (
) : (
)}
{page.pageName} {page.platform}
ID: {page.pageId}
))}
)}
); } function AddPageDialog({ open, onOpenChange }: { open: boolean; onOpenChange: (open: boolean) => void }) { const [platform, setPlatform] = useState<'facebook' | 'instagram'>('facebook'); const [pageName, setPageName] = useState(''); const [pageId, setPageId] = useState(''); const [accessToken, setAccessToken] = useState(''); const { toast } = useToast(); const addMutation = useMutation({ mutationFn: (data: any) => apiRequest('POST', '/api/pages', data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['/api/pages'] }); toast({ title: "Page ajoutée", description: "La page a été connectée avec succès", }); onOpenChange(false); setPlatform('facebook'); setPageName(''); setPageId(''); setAccessToken(''); }, onError: () => { toast({ title: "Erreur", description: "Impossible d'ajouter la page", variant: "destructive", }); }, }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); addMutation.mutate({ platform, pageName, pageId, accessToken, }); }; return ( Ajouter une page Connectez une page Facebook ou Instagram pour commencer à publier
setPageName(e.target.value)} placeholder="Mon entreprise" required data-testid="input-page-name" />
setPageId(e.target.value)} placeholder="123456789" required data-testid="input-page-id" />
setAccessToken(e.target.value)} placeholder="EAAxxxxxxxxxxxxx" required data-testid="input-access-token" />

Obtenez votre jeton d'accès depuis{' '} Facebook Graph API Explorer

); } function EditPageDialog({ page, onOpenChange }: { page: SocialPage | null; onOpenChange: (open: boolean) => void }) { const [accessToken, setAccessToken] = useState(''); const { toast } = useToast(); const editMutation = useMutation({ mutationFn: (data: any) => apiRequest('PUT', `/api/pages/${page?.id}`, data), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['/api/pages'] }); toast({ title: "Page modifiée", description: "Le jeton d'accès a été mis à jour avec succès", }); onOpenChange(false); setAccessToken(''); }, onError: () => { toast({ title: "Erreur", description: "Impossible de modifier la page", variant: "destructive", }); }, }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!page) return; editMutation.mutate({ accessToken, }); }; if (!page) return null; return ( Modifier le jeton d'accès Mettez à jour le jeton d'accès pour {page.pageName}
setAccessToken(e.target.value)} placeholder="EAAxxxxxxxxxxxxx" required data-testid="input-edit-access-token" />

Obtenez un nouveau jeton depuis{' '} Facebook Graph API Explorer

); }