@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
73 lines • 3.27 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.selectSignedToken = exports.selectInitialized = exports.selectIsAuthenticating = exports.selectUser = exports.selectRefreshToken = exports.selectAccessToken = exports.setRefreshToken = exports.resetAuth = exports.setSignedToken = exports.setInitialized = exports.setAuthenticating = exports.setUser = exports.clearTokens = exports.setTokens = void 0;
const toolkit_1 = require("@reduxjs/toolkit");
const initialState = {
accessToken: null,
refreshToken: null,
user: null,
isAuthenticating: false,
initialized: false,
signedToken: null,
};
const authSlice = (0, toolkit_1.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;
},
},
});
_a = authSlice.actions, exports.setTokens = _a.setTokens, exports.clearTokens = _a.clearTokens, exports.setUser = _a.setUser, exports.setAuthenticating = _a.setAuthenticating, exports.setInitialized = _a.setInitialized, exports.setSignedToken = _a.setSignedToken, exports.resetAuth = _a.resetAuth, exports.setRefreshToken = _a.setRefreshToken;
// Selectors - use namespaced state for dual-mode support
const selectAccessToken = (state) => state.replyke.auth.accessToken;
exports.selectAccessToken = selectAccessToken;
const selectRefreshToken = (state) => state.replyke.auth.refreshToken;
exports.selectRefreshToken = selectRefreshToken;
const selectUser = (state) => state.replyke.auth.user;
exports.selectUser = selectUser;
const selectIsAuthenticating = (state) => state.replyke.auth.isAuthenticating;
exports.selectIsAuthenticating = selectIsAuthenticating;
const selectInitialized = (state) => state.replyke.auth.initialized;
exports.selectInitialized = selectInitialized;
const selectSignedToken = (state) => state.replyke.auth.signedToken;
exports.selectSignedToken = selectSignedToken;
exports.default = authSlice.reducer;
//# sourceMappingURL=authSlice.js.map