import { createSlice } from '@reduxjs/toolkit'; const initialState = { isAuthenticated: false, user: null, token: localStorage.getItem('authToken') || null, loading: false, error: null }; const authSlice = createSlice({ name: 'auth', initialState, reducers: { loginStart: (state) => { state.loading = true; state.error = null; }, loginSuccess: (state, action) => { state.isAuthenticated = true; state.user = action.payload.data.user; state.token = action.payload.data.token; state.loading = false; state.error = null; // Store token in localStorage localStorage.setItem('authToken', action.payload.data.token); localStorage.setItem('user', JSON.stringify(action.payload.data.user)); }, loginFailure: (state, action) => { state.loading = false; state.error = action.payload.error; state.isAuthenticated = false; state.user = null; state.token = null; }, logout: (state) => { state.isAuthenticated = false; state.user = null; state.token = null; state.loading = false; state.error = null; // Clear localStorage localStorage.removeItem('authToken'); localStorage.removeItem('user'); }, checkAuth: (state) => { const token = localStorage.getItem('authToken'); const user = localStorage.getItem('user'); if (token && user) { state.isAuthenticated = true; state.token = token; state.user = JSON.parse(user); } } } }); export const { loginStart, loginSuccess, loginFailure, logout, checkAuth } = authSlice.actions; export default authSlice.reducer;