import { Trans } from '@lingui/react/macro'; import { FileIcon } from 'lucide-react'; import { DateTime } from 'luxon'; import { Link, redirect } from 'react-router'; import { useOptionalSession } from '@documenso/lib/client-only/providers/session'; import { getPublicProfileByUrl } from '@documenso/lib/server-only/profile/get-public-profile-by-url'; import { formatAvatarUrl } from '@documenso/lib/utils/avatars'; import { extractInitials } from '@documenso/lib/utils/recipient-formatter'; import { formatDirectTemplatePath } from '@documenso/lib/utils/templates'; import { Avatar, AvatarFallback, AvatarImage } from '@documenso/ui/primitives/avatar'; import { Button } from '@documenso/ui/primitives/button'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@documenso/ui/primitives/table'; import { Tooltip, TooltipContent, TooltipTrigger } from '@documenso/ui/primitives/tooltip'; import type { Route } from './+types/p.$url'; const BADGE_DATA = { Premium: { imageSrc: '/static/premium-user-badge.svg', name: 'Premium', }, EarlySupporter: { imageSrc: '/static/early-supporter-badge.svg', name: 'Early supporter', }, }; export async function loader({ params }: Route.LoaderArgs) { const { url: profileUrl } = params; if (!profileUrl) { throw redirect('/'); } const publicProfile = await getPublicProfileByUrl({ profileUrl, }).catch(() => null); if (!publicProfile || !publicProfile.profile.enabled) { throw new Response('Not Found', { status: 404 }); } return { publicProfile, }; } export default function PublicProfilePage({ loaderData }: Route.ComponentProps) { const { publicProfile } = loaderData; const { profile, templates } = publicProfile; const { sessionData } = useOptionalSession(); const user = sessionData?.user; return (
{BADGE_DATA[publicProfile.badge.type].name}
{line}
))}