import React, { useContext, useEffect, useState } from 'react'; const AUTH_URL = 'https://dev-auth.fiskerdps.com'; const UserContext = React.createContext(); export const UserProvider = ({ children }) => { const [fetching, setFetching] = useState(false); const [signedIn, setSignedIn] = useState(false); const [user, setUser] = useState(null); const [token, setToken] = useState(null); const [error, setError] = useState(null); const signIn = (username, password) => { if (!username) throw new Error('Email is required'); if (!password) throw new Error('Password is required'); setFetching(true); setError(null); return fetch(`${AUTH_URL}/auth/login`, { method: "POST", mode: "no-cors", headers: { "Content-Type":"text/plain" }, body: JSON.stringify({ username, password, }) }) .then((response) => { debugger; return response.json(); }) .then((result) => { debugger; setFetching(false); if (result.error) setError(result.error); return result; }) .catch((error) => { setError(error.message); setFetching(false); return null; }); }; const signUp = (username, password, confirmPassword) => { if (!username) throw new Error('Email is required'); if (!password) throw new Error('Password is required'); if (password !== confirmPassword) throw new Error('Passwords do not match'); setFetching(true); setError(null); return fetch(`${AUTH_URL}/auth/register`, { method: "POST", mode: "cors", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username, password, }) }) .then((response) => { debugger; return response.json(); }) .then((result) => { if (result.error) setError(result.error); setFetching(false); return result; }) .catch((error) => { setError(error.message); setFetching(false); return null; }); }; const signOut = async () => { setUser(null); }; return ( {children} ); }; export const useUserContext = () => useContext(UserContext);