import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import { PartnerProfile, PartnerLocation } from '@app-types/index'; interface AuthState { isAuthenticated: boolean; hasCompletedOnboarding: boolean; isOnline: boolean; token: string | null; partnerId: string | null; partnerProfile: PartnerProfile | null; requestId: string | null; // OTP request ID } const initialState: AuthState = { isAuthenticated: false, hasCompletedOnboarding: false, isOnline: false, token: null, partnerId: null, partnerProfile: null, requestId: null, }; const authSlice = createSlice({ name: 'auth', initialState, reducers: { setAuthenticated: ( state, action: PayloadAction<{ token: string; partnerId: string }>, ) => { state.isAuthenticated = true; state.token = action.payload.token; state.partnerId = action.payload.partnerId; }, setRequestId: (state, action: PayloadAction) => { state.requestId = action.payload; }, setOnboardingComplete: (state) => { state.hasCompletedOnboarding = true; }, setOnlineStatus: (state, action: PayloadAction) => { state.isOnline = action.payload; }, setProfile: (state, action: PayloadAction) => { state.partnerProfile = action.payload; }, setLocation: (state, action: PayloadAction) => { if (state.partnerProfile) { state.partnerProfile.location = action.payload; } }, logout: () => initialState, }, }); export const { setAuthenticated, setRequestId, setOnboardingComplete, setOnlineStatus, setProfile, setLocation, logout, } = authSlice.actions; export default authSlice.reducer;