import { cancelInvitation } from '@/service/house.api'; import { INVITE_STATUS } from '@/types/enum'; import { authClient } from '@lib/auth-client'; import { m } from '@paraglide/messages'; import { useMutation } from '@tanstack/react-query'; import { Item, ItemContent, ItemDescription, ItemTitle } from '@ui/item'; import { Skeleton } from '@ui/skeleton'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@ui/table'; import { toast } from 'sonner'; import RoleBadge from '../avatar/role-badge'; import { Button } from '../ui/button'; type InvitationListProps = { activeHouse: ReturnType['data']; }; const CurrentUserInvitationList = ({ activeHouse }: InvitationListProps) => { const { refetch } = authClient.useActiveOrganization(); const { mutate: cancelInvitationMutation } = useMutation({ mutationFn: cancelInvitation, onSuccess: () => { refetch(); // _setOpen(false); toast.success(m.houses_page_message_delete_house_success(), { richColors: true, }); }, onError: (error: ReturnError) => { console.error(error); const code = error.code as Parameters< typeof m.backend_message >[0]['code']; toast.error(m.backend_message({ code }), { richColors: true, }); }, }); const handleCancelInvitation = (id: string) => { cancelInvitationMutation({ data: { id } }); }; if (!activeHouse) { return ; } return (
{m.houses_page_ui_view_table_header_invite()} {activeHouse.invitations.length > 0 ? ( activeHouse.invitations.map((item) => ( {m.houses_user_page_invite_label_to()}:{' '} {item.email} - {m.houses_user_page_invite_label_status()}:{' '} {m.invite_status({ status: item.status as INVITE_STATUS, })}
{item.status !== INVITE_STATUS.CANCELED && ( )}
)) ) : ( No results. )}
); }; export default CurrentUserInvitationList;