import { data } from "react-router"; import type { Route } from "./+types/users.$username"; import { getDb } from "~/lib/db"; import { users } from "@trails-cool/db/schema/journal"; import { eq } from "drizzle-orm"; import { getSessionUser } from "~/lib/auth.server"; export async function loader({ params, request }: Route.LoaderArgs) { const db = getDb(); const [user] = await db.select().from(users).where(eq(users.username, params.username)); if (!user) { throw data({ error: "User not found" }, { status: 404 }); } const currentUser = await getSessionUser(request); const isOwn = currentUser?.id === user.id; return data({ user: { username: user.username, displayName: user.displayName, bio: user.bio, domain: user.domain, createdAt: user.createdAt.toISOString(), }, isOwn, }); } export function meta({ data: loaderData }: Route.MetaArgs) { const username = (loaderData as { user: { username: string } })?.user?.username ?? "User"; return [{ title: `@${username} — trails.cool` }]; } export default function UserProfilePage({ loaderData }: Route.ComponentProps) { const { user, isOwn } = loaderData; return (
@{user.username}@{user.domain}
{user.bio &&{user.bio}
}No routes yet.