import { createSlice } from '@reduxjs/toolkit'; import { checkAuthThunk, loginThunk, logoutThunk, signupThunk } from './auth.thunk'; import { mockCurrentUser } from './auth.mock'; const setPending = (state) => { state.loading = true; state.error = null; state.user = null; }; const setFulfilled = (state, action) => { state.user = action.payload; state.loading = false; state.error = null; }; const setRejected = (state, action) => { state.error = action.payload; state.loading = false; }; const authSlice = createSlice({ name: 'auth', initialState: { loading: false, error: null, user: mockCurrentUser, // 使用模拟的当前用户数据 }, reducers: { login: (state, action) => { state.user = action.payload; }, logout: (state) => { state.user = null; state.error = null; state.loading = false; }, }, extraReducers: (builder) => { builder .addCase(checkAuthThunk.pending, setPending) .addCase(checkAuthThunk.fulfilled, setFulfilled) .addCase(checkAuthThunk.rejected, setRejected) .addCase(loginThunk.pending, setPending) .addCase(loginThunk.fulfilled, setFulfilled) .addCase(loginThunk.rejected, setRejected) .addCase(signupThunk.pending, setPending) .addCase(signupThunk.fulfilled, setFulfilled) .addCase(signupThunk.rejected, setRejected) .addCase(logoutThunk.pending, (state) => { state.loading = true; state.error = null; }) .addCase(logoutThunk.fulfilled) .addCase(logoutThunk.rejected, setRejected); }, }); export const { login, logout } = authSlice.actions; const authReducer = authSlice.reducer; export default authReducer;