41 lines
1,019 B
TypeScript
41 lines
1,019 B
TypeScript
|
|
import { getApiUrl } from "@/lib/api-config"
|
|
import { ProfilePoster } from "@/components/profile/profile-poster"
|
|
import { notFound } from "next/navigation"
|
|
|
|
interface ProfilePageProps {
|
|
params: Promise<{
|
|
username: string
|
|
}>
|
|
}
|
|
|
|
async function getProfile(username: string) {
|
|
try {
|
|
const res = await fetch(`${getApiUrl()}/users/profile/${username}`, {
|
|
next: { revalidate: 60 } // Cache for 1 minute
|
|
})
|
|
|
|
if (res.status === 404) return null
|
|
if (!res.ok) throw new Error("Failed to fetch profile")
|
|
|
|
return res.json()
|
|
} catch (error) {
|
|
console.error("Profile fetch error:", error)
|
|
return null
|
|
}
|
|
}
|
|
|
|
export default async function ProfilePage({ params }: ProfilePageProps) {
|
|
const { username } = await params
|
|
const profile = await getProfile(username)
|
|
|
|
if (!profile) {
|
|
notFound()
|
|
}
|
|
|
|
return (
|
|
<div className="container py-8">
|
|
<ProfilePoster profile={profile} />
|
|
</div>
|
|
)
|
|
}
|