Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 0 additions & 9 deletions apps/web/app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,6 @@
import { getServerSession } from "next-auth";
import { Landing } from "../screens/Landing";
import { authOptions } from "../lib/auth";
import { redirect } from "next/navigation";

export default async function Page(): Promise<JSX.Element> {
const session = await getServerSession(authOptions);

if (!session?.user) {
return redirect("/auth");
}

return (
<main>
<Landing />
Expand Down
28 changes: 25 additions & 3 deletions apps/web/components/LessonView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Blog } from "../../../packages/ui/src/Blog";
import { CodeProblemRenderer } from "../../../packages/ui/src/code/CodeProblemRenderer";
import { Problem, Track, ProblemStatement, CodeLanguage, TestCase } from "@prisma/client";
import MCQQuestionRenderer from "../../../packages/ui/src/MCQQuestionRenderer";
import RedirectToLoginCard from '../../../packages/ui/src/RedirectToLoginCard';
import db from "@repo/db/client";
import { getServerSession } from "next-auth";
import { authOptions } from "../lib/auth";
Expand Down Expand Up @@ -47,16 +48,37 @@ export const LessonView = async ({
showAppBar?: Boolean;
isPdfRequested?: Boolean;
}) => {

const session = await getServerSession(authOptions);

const problemIndex = track.problems.findIndex((p) => p.id === problem.id);

if(problemIndex > 1 && (!session || !session.user)) {
return <RedirectToLoginCard/>
}

if (problem.type === "MCQ") {
return <MCQQuestionRenderer problem={problem} track={track} showAppBar={!!showAppBar} />;
return (
<MCQQuestionRenderer problem={problem} track={track} showAppBar={!!showAppBar} problemIndex={problemIndex} />
);
}
if (problem.type === "Code" && problem.problemStatement) {
const submissions = await getSubmissions(problem.problemStatement.id);
return <CodeProblemRenderer track={track} problem={problem} submissions={submissions} />;
return (
<CodeProblemRenderer track={track} problem={problem} submissions={submissions} problemIndex={problemIndex} />
);
}

if (problem.type === "Blog") {
return <Blog problem={problem} track={track} showAppBar={!!showAppBar} isPdfRequested={isPdfRequested} />;
return (
<Blog
problem={problem}
track={track}
showAppBar={!!showAppBar}
isPdfRequested={isPdfRequested}
problemIndex={problemIndex}
/>
);
}
return <div>Not found</div>;
};
4 changes: 3 additions & 1 deletion packages/ui/src/Blog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@ export const Blog = ({
track,
showAppBar,
isPdfRequested,
problemIndex
}: {
problem: Problem & { notionRecordMap: any };
track: Track & { problems: Problem[] };
showAppBar: Boolean;
isPdfRequested?: Boolean;
problemIndex: number
}) => {
const mounted = useMountStatus();

Expand All @@ -25,7 +27,7 @@ export const Blog = ({

return (
<div>
{showAppBar && <BlogAppbar problem={problem} track={track} />}
{showAppBar && <BlogAppbar problem={problem} track={track} problemIndex={problemIndex}/>}
<NotionRenderer recordMap={problem.notionRecordMap} />
</div>
);
Expand Down
6 changes: 2 additions & 4 deletions packages/ui/src/BlogAppbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { Codebar } from "./code/Codebar";
export const BlogAppbar = ({
problem,
track,
problemIndex
}: {
problem: Problem & { notionRecordMap: any } & {
problemStatement?:
Expand All @@ -24,11 +25,8 @@ export const BlogAppbar = ({
| null;
};
track: Track & { problems: Problem[] };
problemIndex: number
}) => {
const problemIndex = useMemo(() => {
return track.problems.findIndex((p) => p.id === problem.id);
}, [track, problem]);

let totalPages = Array.from({ length: track.problems.length }, (_, i) => i + 1);

function setTheme(arg0: string) {
Expand Down
4 changes: 3 additions & 1 deletion packages/ui/src/MCQQuestionRenderer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,16 @@ const MCQQuestionRenderer = ({
problem,
track,
showAppBar,
problemIndex
}: {
problem: Problem & { notionRecordMap: any };
track: Track & { problems: Problem[] };
showAppBar?: Boolean;
problemIndex: number
}) => {
return (
<div>
{showAppBar && <BlogAppbar problem={problem} track={track} />}
{showAppBar && <BlogAppbar problem={problem} track={track} problemIndex={problemIndex}/>}
<div className="grid grid-cols-3">
<ScrollArea className="h-screen p-2 rounded-lg col-span-2">
<div className="w-2/3">
Expand Down
5 changes: 3 additions & 2 deletions packages/ui/src/code/CodeProblemRenderer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import { Problem, Track, Submission, CodeLanguage, ProblemStatement, TestCase }
import { BlogAppbar } from "../BlogAppbar";
import { useSession } from "next-auth/react";
import ProblemStatementPanel from "./ProblemStatementPanel";
import RedirectToLoginCard from "../RedirectToLoginCard";
import { Loader } from "lucide-react";

export const CodeProblemRenderer = ({
problem,
track,
submissions,
problemIndex
}: {
problem: Problem & { notionRecordMap: any } & {
problemStatement:
Expand All @@ -25,14 +25,15 @@ export const CodeProblemRenderer = ({
};
track: Track & { problems: Problem[] };
submissions: (Submission & { language: CodeLanguage })[] | null;
problemIndex: number
}) => {
const { data, status } = useSession();
const user = data?.user;

if (problem.problemStatement) {
return (
<div>
<BlogAppbar problem={problem} track={track} />
<BlogAppbar problem={problem} track={track} problemIndex={problemIndex}/>
{status === "loading" ? (
<Loader className="animate-spin mx-auto my-40" size={64} />
) : user ? (
Expand Down