|
1 | | -"use client"; |
2 | | - |
3 | | -import { useEffect, useState } from "react"; |
4 | | -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; |
5 | | -import { Skeleton } from "@/components/ui/skeleton"; |
6 | | -import { useAuthStore } from "@/store/AuthStore/useAuthStore"; |
7 | | -import DashboardNavbar from "@/components/dashboardComponents/DashboardNavbar"; |
8 | | -import { DashboardContentSkeleton } from "@/components/dashboardComponents/DashboardContentSkeleton"; |
9 | | -import { Bar } from "react-chartjs-2"; |
10 | | -import { Chart as ChartJS, CategoryScale, LinearScale, BarElement } from "chart.js"; |
11 | | - |
12 | | -ChartJS.register(CategoryScale, LinearScale, BarElement); |
13 | | - |
14 | | -function DashboardContent({ authUser }: any) { |
15 | | - return ( |
16 | | - <main className="container mx-auto p-4 space-y-6"> |
17 | | - <h1 className="text-3xl font-bold">Welcome, {authUser?.fullName}</h1> |
18 | | - <Card> |
19 | | - <CardHeader> |
20 | | - <CardTitle>Your Profile</CardTitle> |
21 | | - </CardHeader> |
22 | | - <CardContent className="space-y-2"> |
23 | | - <p> |
24 | | - <span className="font-medium">LeetCode Username:</span>{" "} |
25 | | - {authUser?.leetcodeUsername} |
26 | | - </p> |
27 | | - <p> |
28 | | - <span className="font-medium">Gender:</span> {authUser?.gender} |
29 | | - </p> |
30 | | - </CardContent> |
31 | | - </Card> |
32 | | -{/* |
33 | | - <Card> |
34 | | - <CardHeader> |
35 | | - <CardTitle>LeetCode Stats</CardTitle> |
36 | | - </CardHeader> |
37 | | - <CardContent> |
38 | | - <p className="text-muted-foreground"> |
39 | | - LeetCode stats are coming soon! |
40 | | - </p> |
41 | | - </CardContent> |
42 | | - </Card> */} |
43 | | - </main> |
44 | | - ); |
45 | | -} |
| 1 | +import React from "react"; |
46 | 2 |
|
47 | 3 | export default function Dashboard() { |
48 | | - const { authUser, fetchAuthUser, authUserLoading } = useAuthStore(); |
49 | | - const [leetcodeStats, setLeetcodeStats] = useState<any>(null); |
50 | | - |
51 | | - useEffect(() => { |
52 | | - fetchAuthUser(); |
53 | | - }, [fetchAuthUser]); |
54 | | - |
55 | | - // Fetch and store stats once we have the user |
56 | | - useEffect(() => { |
57 | | - if (authUser?.leetcodeUsername && authUser?.id) { |
58 | | - const fetchStats = async () => { |
59 | | - const res = await fetch( |
60 | | - `/api/leetcode?username=${authUser.leetcodeUsername}&id=${authUser.id}`, |
61 | | - { method: "POST" } |
62 | | - ); |
63 | | - if (res.ok) { |
64 | | - const data = await res.json(); |
65 | | - setLeetcodeStats(data.stats); |
66 | | - } |
67 | | - }; |
68 | | - fetchStats(); |
69 | | - } |
70 | | - }, [authUser]); |
71 | | - |
72 | | - // Simple bar chart config |
73 | | - const chartData = { |
74 | | - labels: ["Easy", "Medium", "Hard"], |
75 | | - datasets: [ |
76 | | - { |
77 | | - label: "Solved", |
78 | | - data: leetcodeStats?.submitStats.acSubmissionNum?.map((i: any) => i.count) || [0, 0, 0], |
79 | | - backgroundColor: ["#4ade80", "#fbbf24", "#ef4444"], |
80 | | - }, |
81 | | - ], |
82 | | - }; |
83 | | - |
84 | 4 | return ( |
85 | | - <div className="min-h-screen w-full"> |
86 | | - {authUserLoading ? ( |
87 | | - <DashboardContentSkeleton /> |
88 | | - ) : ( |
89 | | - <> |
90 | | - <DashboardContent authUser={authUser} /> |
91 | | - {leetcodeStats && ( |
92 | | - <div className="container mx-auto mt-6"> |
93 | | - <h2 className="text-xl font-semibold mb-4">Your LeetCode Progress</h2> |
94 | | - <div className="max-w-xl"> |
95 | | - <Bar data={chartData} /> |
96 | | - </div> |
97 | | - </div> |
98 | | - )} |
99 | | - </> |
100 | | - )} |
| 5 | + <div className="flex flex-col items-center justify-center h-full"> |
| 6 | + <h1 className="text-6xl font-bold">This is the dashboard</h1> |
101 | 7 | </div> |
102 | 8 | ); |
103 | 9 | } |
0 commit comments