Skip to content

Commit fb83c39

Browse files
committed
issues fix
1 parent e6f8e54 commit fb83c39

File tree

7 files changed

+62
-41
lines changed

7 files changed

+62
-41
lines changed

Diff for: app/api/leetcode/route.ts

+6-8
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ const fetchLeetCodeStats = async (username: string) => {
3535
};
3636

3737
// Store transformed user stats in Supabase
38-
const storeUserStats = async (userId: string, stats: any) => {
38+
const storeUserStats = async (id: string, stats: any) => {
3939
const entry = {
40-
user_id: String(userId),
40+
id: String(id),
4141
ranking: stats.profile.ranking,
4242
solved_easy: stats.submitStats.acSubmissionNum.find((item: any) => item.difficulty === 'Easy')?.count || "0",
4343
solved_medium: stats.submitStats.acSubmissionNum.find((item: any) => item.difficulty === 'Medium')?.count || "0",
@@ -73,10 +73,10 @@ const transformLeetCodeData = (stats: any) => {
7373
export async function POST(req: NextRequest, res: NextResponse) {
7474
const searchParams = req.nextUrl.searchParams;
7575
const username = searchParams.get('username');
76-
const userId = searchParams.get('userId');
76+
const id = searchParams.get('id');
7777

78-
if (!username || !userId) {
79-
return NextResponse.json({ error: "Username and userId are required" }, { status: 400 });
78+
if (!username || !id) {
79+
return NextResponse.json({ error: "Username and id are required" }, { status: 400 });
8080
}
8181

8282
const stats = await fetchLeetCodeStats(username);
@@ -87,9 +87,7 @@ export async function POST(req: NextRequest, res: NextResponse) {
8787

8888
const transformedStats = transformLeetCodeData(stats);
8989

90-
console.log('Transformed Stats:', JSON.stringify(transformedStats, null, 2));
91-
92-
await storeUserStats(userId, transformedStats);
90+
await storeUserStats(id, transformedStats);
9391

9492
return NextResponse.json({ message: "Success", stats:transformedStats });
9593
}

Diff for: app/dashboard/page.tsx

+4-10
Original file line numberDiff line numberDiff line change
@@ -52,31 +52,25 @@ export default function Dashboard() {
5252
if (error) {
5353
return (
5454
<div>
55-
<Navbar />
55+
<Navbar userId={userData.user_id} />
5656
<p className="text-red-500">{error}</p>
5757
</div>
5858
);
5959
}
6060

6161
return (
6262
<div>
63-
<Navbar />
63+
<Navbar userId={userData.user_id} />
6464
<div className="container mx-auto p-4">
6565
<h1 className="text-xl font-bold mb-4">Welcome, {userData.name}</h1>
6666
<div className="mb-4">
6767
<p>LeetCode Username: {userData.leetcode_username}</p>
6868
<p>Gender: {userData.gender}</p>
69-
<p>User ID: {userData.user_id}</p>
7069
</div>
71-
<button
72-
className="px-4 py-2 bg-red-500 text-white rounded"
73-
onClick={() => supabase.auth.signOut().then(() => router.push('/login'))}
74-
>
75-
Sign Out
76-
</button>
70+
7771
<div className="mt-6">
7872
<h2 className="text-lg font-bold mb-2">LeetCode Stats</h2>
79-
<StatsCard leetcodeUsername={userData.leetcode_username} userId={userData.user_id} />
73+
<StatsCard leetcodeUsername={userData.leetcode_username} id={userData.id} />
8074
</div>
8175
</div>
8276
</div>

Diff for: components/LoginForm.tsx

+8
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Input } from '@/components/ui/input';
66
import { Label } from '@/components/ui/label';
77
import { useRouter } from 'next/navigation';
88
import { supabase } from '@/lib/supabaseClient';
9+
import Link from 'next/link';
910

1011
const LoginForm: React.FC = () => {
1112
const router = useRouter();
@@ -92,6 +93,13 @@ const LoginForm: React.FC = () => {
9293
<Button type="submit" disabled={loading} className="w-full">
9394
{loading ? 'Logging in...' : 'Log In'}
9495
</Button>
96+
97+
<div className="flex justify-center mt-4">
98+
<Link href="/signup" className="text-sm text-gray-500">
99+
Don't have an account?
100+
<span className='hover:underline ms-1'>Sign up</span>
101+
</Link>
102+
</div>
95103
</form>
96104
</div>
97105
</div>

Diff for: components/SignupForm.tsx

+7
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
SelectValue,
1616
} from '@/components/ui/select';
1717
import { supabase } from '@/lib/supabaseClient';
18+
import Link from 'next/link';
1819

1920
const SignupForm: React.FC = () => {
2021
const router = useRouter();
@@ -179,6 +180,12 @@ const SignupForm: React.FC = () => {
179180
<Button type="submit" disabled={loading} className="w-full">
180181
{loading ? 'Submitting...' : 'Sign Up'}
181182
</Button>
183+
<div className="flex justify-center mt-4">
184+
<Link href="/login" className="text-sm text-gray-500">
185+
Already have an account?
186+
<span className='hover:underline ms-1'>Log in</span>
187+
</Link>
188+
</div>
182189
</form>
183190
</div>
184191
</div>

Diff for: components/Stats.tsx

+3-5
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@ import { useState, useEffect } from 'react';
22
import { Card } from '@/components/ui/card';
33
import { Badge } from '@/components/ui/badge';
44
import { fetchLeetCodeStats } from '@/lib/utils';
5-
import { supabase } from '@/lib/supabaseClient';
65

76
interface StatsCardProps {
87
leetcodeUsername: string;
9-
userId:string
8+
id:string
109
}
1110

12-
const StatsCard: React.FC<StatsCardProps> = ({ leetcodeUsername, userId }) => {
11+
const StatsCard: React.FC<StatsCardProps> = ({ leetcodeUsername, id }) => {
1312
const [stats, setStats] = useState<any | null>(null);
1413
const [loading, setLoading] = useState(true);
1514
const [error, setError] = useState<string | null>(null);
@@ -18,15 +17,14 @@ const StatsCard: React.FC<StatsCardProps> = ({ leetcodeUsername, userId }) => {
1817
useEffect(() => {
1918
const fetchStats = async () => {
2019
try {
21-
const {stats} = await fetchLeetCodeStats(leetcodeUsername, userId);
20+
const {stats} = await fetchLeetCodeStats(leetcodeUsername, id);
2221
setStats(stats);
2322
} catch (err: any) {
2423
setError(err.message || 'Error fetching LeetCode stats.');
2524
} finally {
2625
setLoading(false);
2726
}
2827
};
29-
console.log(stats);
3028

3129
fetchStats();
3230
}, [leetcodeUsername]);

Diff for: components/header.tsx

+32-16
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
1-
'use client'
2-
import { FC, useState } from "react";
3-
import Link from "next/link";
1+
import { useState } from "react";
2+
import Link from "next/link";
43
import { Button } from "@/components/ui/button";
54
import { ThemeToggle } from "@/components/theme-toggle";
5+
import { supabase } from "@/lib/supabaseClient";
6+
import { useRouter } from "next/router";
67

7-
const Navbar: FC = () => {
8+
const Navbar = ({ userId }: { userId?: string }) => {
89
const [isMenuOpen, setIsMenuOpen] = useState(false);
9-
10+
const router = useRouter();
1011
return (
1112
<header>
12-
1313
<nav className="flex justify-between items-center px-6 py-4 bg-gray-900 text-white dark:bg-gray-800">
1414
<div className="flex items-center space-x-2">
1515
<span className="text-2xl font-bold">📓</span>
16-
<span className="text-xl font-semibold">LeetCodeJournal</span>
16+
<span className="text-xl font-semibold">
17+
LeetCodeJournal
18+
</span>
1719
</div>
1820
<div className="hidden lg:flex space-x-6">
1921
<Link href="#" className="hover:text-purple-400 ">
@@ -33,14 +35,29 @@ const Navbar: FC = () => {
3335
</Link>
3436
</div>
3537
<div className="hidden lg:flex items-center space-x-4">
36-
<Link href="/login" className="hover:text-gray-400">
37-
Log in
38-
</Link>
39-
<Button className="bg-purple-500 hover:bg-purple-600">
40-
<Link href="/signup" className="">
41-
Sign up
42-
</Link>
43-
</Button>
38+
{userId ? (
39+
<Button
40+
variant="destructive"
41+
onClick={() =>
42+
supabase.auth
43+
.signOut()
44+
.then(() => router.push("/login"))
45+
}
46+
>
47+
Sign Out
48+
</Button>
49+
) : (
50+
<>
51+
<Link href="/login" className="hover:text-gray-400">
52+
Log in
53+
</Link>
54+
<Button className="bg-purple-500 hover:bg-purple-600">
55+
<Link href="/signup" className="">
56+
Sign up
57+
</Link>
58+
</Button>
59+
</>
60+
)}
4461
<ThemeToggle />
4562
</div>
4663
<button
@@ -51,7 +68,6 @@ const Navbar: FC = () => {
5168
</button>
5269
</nav>
5370

54-
5571
{isMenuOpen && (
5672
<div className="fixed inset-x-0 top-[65px] z-50 border-b bg-background p-6 lg:hidden">
5773
<nav className="flex flex-col space-y-4">

Diff for: lib/utils.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ export function cn(...inputs: ClassValue[]) {
66
return twMerge(clsx(inputs))
77
}
88

9-
export const fetchLeetCodeStats = async (username: string,userId: string) => {
9+
export const fetchLeetCodeStats = async (username: string,id: string) => {
1010
try {
11-
const response = await axios.post(`/api/leetcode?username=${username}&userId=${userId}`);
11+
const response = await axios.post(`/api/leetcode?username=${username}&id=${id}`);
1212
return response.data;
1313
} catch (error) {
1414
console.error('Error fetching LeetCode stats:', error);

0 commit comments

Comments
 (0)