import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import { User } from '@/types/user'; interface AuthState { user: User | null; token: string | null; isAuthenticated: boolean; task_id: string | null; url: string | null; } const initialState: AuthState = { user: null, token: null, isAuthenticated: false, task_id: null, url: null }; export const authSlice = createSlice({ name: 'auth', initialState, reducers: { setCredentials: ( state, action: PayloadAction<{ user: User; token: string }> ) => { const { user, token } = action.payload; state.user = user; state.token = token; state.isAuthenticated = true; }, clearCredentials: (state) => { state.user = null; state.token = null; state.isAuthenticated = false; }, setGuestTaskData: (state, action: PayloadAction<{ task_id: string; url: string }>) => { state.task_id = action.payload.task_id; state.url = action.payload.url; } } }); export const { setCredentials, clearCredentials, setGuestTaskData } = authSlice.actions; export default authSlice.reducer; // Selectors export const selectCurrentUser = (state: { auth: AuthState }) => state.auth.user; export const selectCurrentToken = (state: { auth: AuthState }) => state.auth.token; export const selectIsAuthenticated = (state: { auth: AuthState }) => state.auth.isAuthenticated;