11// src/contexts/AuthContext.js
22
3- import React , { createContext , useState , useEffect , useContext } from 'react' ;
3+ import { createContext , useState , useContext } from 'react' ;
44import { useNavigate } from 'react-router-dom' ;
55import { login , register , logout } from '../utils/api' ;
6- import Cookies from 'js-cookie' ;
76import { toast } from 'react-toastify' ;
8- import { findDOMNode } from 'react-dom ' ;
7+ import { GUEST_CREDENTIALS } from '../utils/guestCreds ' ;
98const AuthContext = createContext ( ) ;
109export const useAuth = ( ) => useContext ( AuthContext ) ;
1110
1211const AuthProvider = ( { children } ) => {
1312 const [ loading , setLoading ] = useState ( false ) ;
1413 const [ authState , setAuthState ] = useState ( {
1514 username : localStorage . getItem ( 'username' ) ,
15+ isGuest : localStorage . getItem ( 'isGuest' ) === 'true'
1616 } ) ;
1717 const reactNavigate = useNavigate ( ) ;
1818
19- useEffect ( ( ) => {
20- const token = Cookies . get ( 'token' ) ;
21- if ( token ) {
22- // Fetch user data if token exists
23- // Implement fetch user logic here
24- }
25- } , [ ] ) ;
26-
2719 const loginHandler = async ( credentials ) => {
2820 setLoading ( true ) ;
2921 try {
30- // console.log(credentials);
3122 const response = await login ( credentials ) ;
3223 if ( response . msg === 'Login successful' ) {
33- setAuthState ( { username : credentials . username } ) ;
24+ setAuthState ( {
25+ username : credentials . username ,
26+ isGuest : credentials . isGuest || false
27+ } ) ;
3428 localStorage . setItem ( 'username' , credentials . username ) ;
35- reactNavigate ( '/' ) ;
29+ if ( credentials . isGuest ) {
30+ localStorage . setItem ( 'isGuest' , 'true' ) ;
31+ }
32+ reactNavigate ( '/createRoom' ) ;
3633 toast . success ( '😍 Login successful' ) ;
3734 }
3835 } catch ( err ) {
@@ -42,44 +39,72 @@ const AuthProvider = ({ children }) => {
4239 setLoading ( false ) ;
4340 }
4441 } ;
42+ const guestLoginHandler = async ( ) => {
43+ // Pick a random guest account from the list
44+ const randomIndex = Math . floor ( Math . random ( ) * GUEST_CREDENTIALS . length ) ;
45+ const guestCredentials = GUEST_CREDENTIALS [ randomIndex ] ;
46+
47+ // Add isGuest flag to credentials
48+ const credentials = {
49+ ...guestCredentials ,
50+ isGuest : true
51+ } ;
52+
53+ // Use the regular login handler
54+ await loginHandler ( credentials ) ;
55+ } ;
56+
4557
4658 const registerHandler = async ( credentials ) => {
47- setLoading ( true )
59+ setLoading ( true ) ;
4860 try {
4961 const response = await register ( credentials ) ;
5062 if ( response . msg === 'Registration successful' ) {
51- setAuthState ( { username : credentials . username } ) ;
63+ setAuthState ( {
64+ username : credentials . username ,
65+ isGuest : false
66+ } ) ;
5267 localStorage . setItem ( 'username' , credentials . username ) ;
68+ localStorage . removeItem ( 'isGuest' ) ;
5369 reactNavigate ( '/' ) ;
5470 toast . success ( '😎 Registration successful' ) ;
5571 }
5672 } catch ( err ) {
5773 console . error ( err . message ) ;
58- toast . error ( 'Registration failed: ' + ( err . response ?. data ?. msg || 'Server error' ) )
74+ toast . error ( 'Registration failed: ' + ( err . response ?. data ?. msg || 'Server error' ) ) ;
5975 } finally {
60- setLoading ( false )
76+ setLoading ( false ) ;
6177 }
6278 } ;
6379
6480 const logoutHandler = async ( ) => {
6581 setLoading ( true ) ;
6682 try {
6783 await logout ( ) ; // Call logout API
68- setAuthState ( { username : null } ) ;
84+ setAuthState ( { username : null , isGuest : false } ) ;
6985 localStorage . removeItem ( 'username' ) ;
7086 localStorage . removeItem ( 'token' ) ;
71- toast . success ( "😊 Logout Successfully" )
87+ localStorage . removeItem ( 'isGuest' ) ;
88+ toast . success ( "😊 Logout Successfully" ) ;
7289 reactNavigate ( '/' ) ;
7390 } catch ( err ) {
7491 console . error ( err . message ) ;
75- toast . error ( 'Logout failed: ' + err . response ?. data ?. msg || 'Server error' )
92+ toast . error ( 'Logout failed: ' + err . response ?. data ?. msg || 'Server error' ) ;
7693 } finally {
7794 setLoading ( false ) ;
7895 }
7996 } ;
8097
98+
8199 return (
82- < AuthContext . Provider value = { { authState, loginHandler, registerHandler, logoutHandler, loading } } >
100+ < AuthContext . Provider value = { {
101+ authState,
102+ loginHandler,
103+ registerHandler,
104+ logoutHandler,
105+ guestLoginHandler,
106+ loading
107+ } } >
83108 { children }
84109 </ AuthContext . Provider >
85110 ) ;
0 commit comments