"use client" import { useState } from "react" import { Ban, RotateCcw, Trash2, UserCog, UsersRound, X } from "lucide-react" import { toast } from "sonner" import type { AdminBulkUsersAction, AdminUserGroup, AdminUserRole } from "@/lib/api/admin-types" import { useBulkAdminUsers } from "@/lib/api/hooks/use-admin-mutations" import { USER_ROLE_ICONS, USER_ROLE_LABELS, } from "@/lib/admin/user-role" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Label } from "@/components/ui/label" const ROLE_OPTIONS: AdminUserRole[] = ["admin", "user", "guest", "suspended"] export function UsersBulkToolbar({ selectedIds, groups, onClear, }: { selectedIds: string[] groups: AdminUserGroup[] onClear: () => void }) { const bulk = useBulkAdminUsers() const [roleDialogOpen, setRoleDialogOpen] = useState(false) const [groupDialogOpen, setGroupDialogOpen] = useState(false) const [groupAction, setGroupAction] = useState<"add_to_group" | "remove_from_group">( "add_to_group" ) const [selectedRole, setSelectedRole] = useState("user") const [selectedGroupId, setSelectedGroupId] = useState("") const count = selectedIds.length if (count === 0) return null async function run(action: AdminBulkUsersAction, extra?: { role?: AdminUserRole; group_id?: string }) { try { const result = await bulk.mutateAsync({ user_ids: selectedIds, action, ...extra, }) if (result.failed?.length) { toast.warning( `${result.success_count} réussi(s), ${result.failed.length} échec(s)` ) } else { toast.success(`${result.success_count} utilisateur(s) mis à jour`) } onClear() } catch { toast.error("Action de masse impossible") } } return ( <>
{count} sélectionné{count > 1 ? "s" : ""}
{ setGroupAction("add_to_group") setSelectedGroupId(groups[0]?.id ?? "") setGroupDialogOpen(true) }} > Ajouter à un groupe { setGroupAction("remove_from_group") setSelectedGroupId(groups[0]?.id ?? "") setGroupDialogOpen(true) }} > Retirer d'un groupe
Changer le type
{groupAction === "add_to_group" ? "Ajouter au groupe" : "Retirer du groupe"}
) }