diff --git a/src/app/admin/subject/[slug]/[unit]/frq/[id]/page.tsx b/src/app/admin/subject/[slug]/[unit]/frq/[id]/page.tsx new file mode 100644 index 00000000..33937718 --- /dev/null +++ b/src/app/admin/subject/[slug]/[unit]/frq/[id]/page.tsx @@ -0,0 +1,51 @@ +"use client"; + +import FRQEditorRenderer from "@/components/frq/editorRenderer"; +import { db } from "@/lib/firebase"; +import { doc, getDoc } from "firebase/firestore"; +import { usePathname } from "next/navigation"; +import { useEffect, useState } from "react"; + +const Page = () => { + const pathname = usePathname() ?? ""; + + const pathParts = pathname.split("/").slice(-4); + const subject = pathParts[0] ?? ""; + const unitId = pathParts[1] ?? ""; + const frqId = pathParts[3] ?? ""; + + const [frqFound, setFrqFound] = useState(null); + + useEffect(() => { + if (!subject || !unitId || !frqId) { + setFrqFound(false); + return; + } + + (async () => { + const docRef = doc( + db, + "subjects", + subject, + "units", + unitId, + "frqs", + frqId, + ); + + const docSnap = await getDoc(docRef); + setFrqFound(docSnap.exists()); + })().catch((error) => { + console.error("Error fetching FRQ:", error); + setFrqFound(false); + }); + }, [subject, unitId, frqId]); + + if (frqFound === null) { + return
Loading...
; + } + + return ; +}; + +export default Page; diff --git a/src/components/frq/editorRenderer.tsx b/src/components/frq/editorRenderer.tsx new file mode 100644 index 00000000..0b93bd48 --- /dev/null +++ b/src/components/frq/editorRenderer.tsx @@ -0,0 +1,17 @@ +interface FRQEditorRendererProps { + frqFound: boolean; +} + +const FRQEditorRenderer = ({ + frqFound, +}: FRQEditorRendererProps) => { + return ( +
+ {frqFound + ? "FRQ loaded successfully." + : "Failed to load FRQ."} +
+ ); +}; + +export default FRQEditorRenderer;