UNPKG

@replyke/core

Version:

Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.

63 lines 2.37 kB
import { createSlice } from '@reduxjs/toolkit'; const initialState = { accessToken: null, refreshToken: null, user: null, isAuthenticating: false, initialized: false, signedToken: null, }; const authSlice = createSlice({ name: 'auth', initialState, reducers: { // Token management setTokens: (state, action) => { state.accessToken = action.payload.accessToken; if (action.payload.refreshToken !== undefined) { state.refreshToken = action.payload.refreshToken; } }, clearTokens: (state) => { state.accessToken = null; state.refreshToken = null; }, // User management setUser: (state, action) => { state.user = action.payload; }, // Loading states setAuthenticating: (state, action) => { state.isAuthenticating = action.payload; }, // Initialization setInitialized: (state, action) => { state.initialized = action.payload; }, setSignedToken: (state, action) => { state.signedToken = action.payload; }, // Complete auth reset (for signout) resetAuth: (state) => { state.accessToken = null; state.refreshToken = null; state.user = null; state.isAuthenticating = false; // Keep initialized as it is }, // Individual token setter for compatibility setRefreshToken: (state, action) => { state.refreshToken = action.payload; }, }, }); export const { setTokens, clearTokens, setUser, setAuthenticating, setInitialized, setSignedToken, resetAuth, setRefreshToken } = authSlice.actions; // Selectors - use namespaced state for dual-mode support export const selectAccessToken = (state) => state.replyke.auth.accessToken; export const selectRefreshToken = (state) => state.replyke.auth.refreshToken; export const selectUser = (state) => state.replyke.auth.user; export const selectIsAuthenticating = (state) => state.replyke.auth.isAuthenticating; export const selectInitialized = (state) => state.replyke.auth.initialized; export const selectSignedToken = (state) => state.replyke.auth.signedToken; export default authSlice.reducer; //# sourceMappingURL=authSlice.js.map