import { Info, Paperclip, ShoppingBag, User, UserCog } from "lucide-react"; import Image from "next/image"; import Link from "next/link"; import { useRouter } from "next/router"; import { useCallback } from "react"; import toast from "react-hot-toast"; import { EtichetteDisplayer } from "~/components/etichette"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "~/components/ui/alert-dialog"; import { Button, buttonVariants } from "~/components/ui/button"; import { Popover, PopoverContent, PopoverTrigger, } from "~/components/ui/popover"; import { Separator } from "~/components/ui/separator"; import { UserAvatar } from "~/components/user_avatar"; import { cn } from "~/lib/utils"; import type { ChatsChatid } from "~/schemas/public/Chats"; import type { Session } from "~/server/api/trpc"; import type { ChatUserInfo } from "~/server/services/chat.service"; import { api } from "~/utils/api"; type ChatTopbarProps = { chatId: ChatsChatid; userData: Session; chatUserData: ChatUserInfo; }; export default function ChatTopbar({ chatId, userData, chatUserData, }: ChatTopbarProps) { const utils = api.useUtils(); const { mutate: deletechat } = api.chat.deleteChat.useMutation({ onSuccess: async () => { await utils.chat.getActiveChats.invalidate(); await utils.users.getActiveUsersWithoutChat.invalidate(); await router.push("/area-riservata/admin/chats/"); }, }); const router = useRouter(); const { mutate: swap } = api.auth.swapUser.useMutation({ onSuccess: async () => { toast.success("Utente cambiato con successo"); await router.push("/area-riservata/load-page"); }, }); const handleDeleteChat = useCallback(() => { deletechat({ chatId }); }, [chatId, deletechat]); const handleSwapUser = useCallback(() => { swap({ id: chatUserData.id }); }, [chatUserData, swap]); return (
{!userData.isAdmin ? ( Infoalloggi logo ) : ( )}
{!userData.isAdmin ? "Chat Infoalloggi" : chatUserData.username} {userData.isAdmin && }
{userData.isAdmin && ( )}
); } const AdminPopover = ({ chatUserData, handleSwapUser, handleDeleteChat, }: { chatUserData: ChatUserInfo; handleSwapUser: () => void; handleDeleteChat: () => void; }) => (
Profilo Ordini Allegati Sei assolutamente sicuro? Questa azione non può essere annullata. Questo eliminerà definitivamente la chat e rimuoverà i dati dai nostri server. Annulla Continua
);