fix(api): fix api endpoint logic #2

This commit is contained in:
shafin-r
2025-08-16 17:05:40 +06:00
parent 713696760e
commit ad46bf954e
5 changed files with 40 additions and 41 deletions

View File

@ -10,13 +10,14 @@ import { login } from "@/lib/auth";
import DestructibleAlert from "@/components/DestructibleAlert";
import { useAuth } from "@/context/AuthContext";
import { LoginForm } from "@/types/auth";
import { CircleAlert } from "lucide-react";
const LoginPage = () => {
const router = useRouter();
const { setToken } = useAuth();
const [form, setForm] = useState<LoginForm>({
email: "",
identifier: "",
password: "",
});
@ -71,11 +72,11 @@ const LoginPage = () => {
<div className="flex flex-col justify-between gap-10">
<div className="flex flex-col w-full gap-5">
<FormField
title="Email Address"
value={form.email}
title="Email \ Username"
value={form.identifier}
placeholder="Enter your email address..."
handleChangeText={(value) =>
setForm({ ...form, email: value })
setForm({ ...form, identifier: value })
}
/>
<FormField
@ -87,9 +88,13 @@ const LoginPage = () => {
}
/>
</div>
{error && <DestructibleAlert text={error} extraStyles="" />}
<h1 className="flex justify-center items-center gap-2 bg-green-200 p-4 rounded-full">
<CircleAlert size={20} />
Your login details will be remembered.
</h1>
<button
onClick={loginUser}
disabled={isLoading}

View File

@ -28,34 +28,34 @@ const HomePage = () => {
const [linkedViews, setLinkedViews] = useState<GalleryViews[]>();
useEffect(() => {
let isMounted = true;
// let isMounted = true;
const fetchBoardData = async () => {
try {
const response = await fetch(`${API_URL}/leaderboard`);
if (!response.ok) {
throw new Error("Failed to fetch leaderboard data");
}
// const fetchBoardData = async () => {
// try {
// const response = await fetch(`${API_URL}/leaderboard`);
// if (!response.ok) {
// throw new Error("Failed to fetch leaderboard data");
// }
const data: LeaderboardEntry[] = await response.json();
if (isMounted) setBoardData(data);
} catch (err) {
if (isMounted) {
const message =
err instanceof Error ? err.message : "An unexpected error occurred";
setBoardError(message);
}
}
};
// const data: LeaderboardEntry[] = await response.json();
// if (isMounted) setBoardData(data);
// } catch (err) {
// if (isMounted) {
// const message =
// err instanceof Error ? err.message : "An unexpected error occurred";
// setBoardError(message);
// }
// }
// };
const fetchedLinkedViews: GalleryViews[] = getLinkedViews();
setLinkedViews(fetchedLinkedViews);
fetchBoardData();
// fetchBoardData();
return () => {
isMounted = false;
};
// return () => {
// isMounted = false;
// };
}, []);
return (
@ -144,7 +144,8 @@ const HomePage = () => {
{/* Leaderboard Section */}
<div className={styles.leaderboardWrapper}>
<h2 className={styles.sectionTitle}>Leaderboard</h2>
<div className={styles.leaderboardContainer}>
<p className="text-center text-xl">Coming Soon.</p>
{/* <div className={styles.leaderboardContainer}>
<div className={styles.topThreeHeader}>
<span className={styles.topThreeTitle}>Top 3</span>
<button
@ -175,7 +176,7 @@ const HomePage = () => {
))
)}
</div>
</div>
</div> */}
</div>
{/* Performance Summary Section */}

View File

@ -59,8 +59,6 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({
useEffect(() => {
const initializeAuth = () => {
const storedToken = getCookie("authToken");
console.log("Current pathname:", pathname);
console.log("Stored token:", storedToken);
if (storedToken) {
setTokenState(storedToken);
@ -69,7 +67,6 @@ export const AuthProvider: React.FC<{ children: React.ReactNode }> = ({
pathname === "/login" ||
pathname === "/register"
) {
console.log("Redirecting to /home");
router.replace("/home");
}
} else {

View File

@ -1,4 +1,6 @@
export const API_URL = "https://examjam-api.pptx704.com";
import { LoginForm, RegisterForm } from "@/types/auth";
export const API_URL = "https://examjam-backend.omukk.dev";
// Cookie utility function
const setCookie = (name: string, value: string | null, days: number = 7) => {
@ -15,12 +17,6 @@ const setCookie = (name: string, value: string | null, days: number = 7) => {
}
};
interface AuthForm {
email: string;
password: string;
[key: string]: any; // for flexibility
}
type SetTokenFn = (token: string) => void;
// Optional: Create a custom error type to carry extra data
@ -29,7 +25,7 @@ interface APIError extends Error {
}
export const login = async (
form: AuthForm,
form: LoginForm,
setToken: SetTokenFn
): Promise<void> => {
const response = await fetch(`${API_URL}/auth/login`, {
@ -51,7 +47,7 @@ export const login = async (
};
export const register = async (
form: AuthForm,
form: RegisterForm,
setToken: SetTokenFn
): Promise<void> => {
const response = await fetch(`${API_URL}/auth/register`, {

2
types/auth.d.ts vendored
View File

@ -22,6 +22,6 @@ export interface RegisterForm {
}
export interface LoginForm {
email: string;
identifier: string;
password: string;
}