'use client' import axios from "axios"; import { createContext, useState } from "react"; import { useRouter } from "next/navigation"; import toast from "react-hot-toast"; const MainContext = createContext() export const ContextProvider = ({ children }) => { const router = useRouter() const [token, setToken] = useState(() => { if (typeof window !== 'undefined' && localStorage.getItem('token')) { return localStorage.getItem('token'); } return null; }); const [isOtpSend, setIsOtpSend] = useState(false); const backendUrl = process.env.NEXT_PUBLIC_BACKEND_URL; const loginUser = async (credentials) => { try { const response = await axios.post(`${backendUrl}/account/login/`, credentials); console.log("Login Successful:", response.data); setToken(response.data.token) localStorage.setItem('token', response.data.token) toast.success('Login Successful'); router.push('/') return response.data } catch (error) { if (error.response) { console.error("Error during login:", error.response.data); const message = error.response.data.message || "Login failed. Please try again."; toast.error(message); } else if (error.request) { console.error("No response during login:", error.request); toast.error("Unable to connect to the server. Please try again later."); } else { console.error("Unexpected error during login:", error.message); toast.error("An unexpected error occurred. Please try again."); } throw error; } }; const registerUser = async (credentials) => { try { const response = await axios.post(`${backendUrl}/account/register/`, credentials); console.log("Register Successful:", response.data); setToken(response.data.token) localStorage.setItem('token', response.data.token) toast.success('Registration Successful'); router.push('/') return response.data; } catch (error) { if (error.response) { console.error("Error during registration:", error.response.data); const message = error.response.data.message || "Registration failed. Please try again."; toast.error(message); } else if (error.request) { console.error("No response during registration:", error.request); toast.error("Unable to connect to the server. Please try again later."); } else { console.error("Unexpected error during registration:", error.message); toast.error("An unexpected error occurred. Please try again."); } throw error; } }; return ( {children} ) } export default MainContext