Files
sofa/app/page.tsx
T
jake ad8ec62317 Refactor tmdbImageUrl to accept semantic category instead of size string
- Change primary argument from TMDB size string (`w500`, `w1280`, etc.)
  to category name (`posters`, `backdrops`, `stills`, `logos`,
  `profiles`); optional size override remains as third argument
- Update all call sites across services, actions, pages, and route
  handlers to use the new category-based API
- Update image.test.ts to match the new signature and replace
  size-mapping test descriptions with category-name descriptions
2026-03-08 12:33:07 -04:00

51 lines
1.6 KiB
TypeScript

import { redirect } from "next/navigation";
import { Suspense } from "react";
import { LandingPage } from "@/components/landing-page";
import { getSession } from "@/lib/auth/session";
import { isTmdbConfigured } from "@/lib/config";
import { getUserCount, isRegistrationOpen } from "@/lib/services/settings";
import { tmdbImageUrl } from "@/lib/tmdb/image";
// Well-known TMDB poster paths for the background collage
const posterPaths = [
"/qJ2tW6WMUDux911r6m7haRef0WH.jpg", // The Dark Knight
"/gEU2QniE6E77NI6lCU6MxlNBvIx.jpg", // Interstellar
"/rCzpDGLbOoPwLjy3OAm5NUPOTrC.jpg", // The Lord of the Rings
"/pB8BM7pdSp6B6Ih7QZ4DrQ3PmJK.jpg", // Fight Club
"/d5NXSklXo0qyIYkgV94XAgMIckC.jpg", // Dune
"/ztkUQFLlC19CCMYHW9o1zWhJRNq.jpg", // Breaking Bad
"/7DJKHzAi83BmQrWLrYYOqcoKfhR.jpg", // The Office
"/u3bZgnGQ9T01sWNhyveQz0wH0Hl.jpg", // Stranger Things
"/ggFHVNu6YYI5L9pCfOacjizRGt.jpg", // Back to the Future
"/q6y0Go1tsGEsmtFryDOJo3dEmqu.jpg", // The Shawshank Redemption
"/pIkRyD18kl4FhoCNQuWxWu5cBLM.jpg", // Inception
"/saHP97rTPS5eLmrLQEcANmKrsFl.jpg", // Forrest Gump
];
const posterUrls = posterPaths
.map((p) => tmdbImageUrl(p, "posters", "w300"))
.filter(Boolean) as string[];
export default function Home() {
return (
<Suspense>
<HomeContent />
</Suspense>
);
}
async function HomeContent() {
const session = await getSession();
if (session?.user) redirect("/dashboard");
if (!isTmdbConfigured()) redirect("/setup");
const userCount = getUserCount();
return (
<LandingPage
posterUrls={posterUrls}
freshInstall={userCount === 0}
registrationOpen={isRegistrationOpen()}
/>
);
}