import { createSlice, createAsyncThunk } from "@reduxjs/toolkit"; // import axios from "axios"; import api from "../../app/api"; export const login = createAsyncThunk( "auth/login", async (credentials, thunkAPI) => { try { const response = await api.post("/auth/login", credentials); console.log("Login response:", response.data); const token = response.data?.token || response.data?.data?.token; const user = response.data?.user || response.data?.data?.user; if (!token) { throw new Error("No token returned from server"); } localStorage.setItem("token", token); return { user, token }; } catch (error) { return thunkAPI.rejectWithValue( error.response?.data?.message || "Login failed" ); } } ); const authSlice = createSlice({ name: "auth", initialState: { user: null, loading: false, error: null, token: localStorage.getItem("token") || null, }, reducers: { logout: (state) => { state.user = null; state.token = null; localStorage.removeItem("token"); }, }, extraReducers: (builder) => { builder .addCase(login.pending, (state) => { state.loading = true; state.error = null; }) .addCase(login.fulfilled, (state, action) => { state.loading = false; state.user = action.payload.user; state.token = action.payload.token; }) .addCase(login.rejected, (state, action) => { state.loading = false; state.error = action.payload; }); }, }); export const { logout } = authSlice.actions; export default authSlice.reducer;