UNPKG

@replyke/core

Version:

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

87 lines 3.67 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.userReducer = exports.selectUserById = exports.selectUserError = exports.selectCurrentProjectId = exports.selectUserUpdating = exports.selectUserLoading = exports.selectUser = exports.updateUserOptimistic = exports.clearError = exports.setError = exports.setUpdating = exports.setLoading = exports.setProjectContext = exports.clearUser = exports.setUser = void 0; var toolkit_1 = require("@reduxjs/toolkit"); var initialState = { user: null, loading: false, updating: false, currentProjectId: undefined, error: null, }; var userSlice = (0, toolkit_1.createSlice)({ name: 'user', initialState: initialState, reducers: { // User data management setUser: function (state, action) { state.user = action.payload; state.error = null; }, clearUser: function (state) { state.user = null; state.error = null; }, // Project context setProjectContext: function (state, action) { if (state.currentProjectId !== action.payload) { state.currentProjectId = action.payload; } }, // Loading states setLoading: function (state, action) { state.loading = action.payload; }, setUpdating: function (state, action) { state.updating = action.payload; }, // Error handling setError: function (state, action) { state.error = action.payload; }, clearError: function (state) { state.error = null; }, // Optimistic updates (will be used by RTK Query) updateUserOptimistic: function (state, action) { if (state.user) { state.user = __assign(__assign({}, state.user), action.payload); } }, }, }); // Actions exports.setUser = (_a = userSlice.actions, _a.setUser), exports.clearUser = _a.clearUser, exports.setProjectContext = _a.setProjectContext, exports.setLoading = _a.setLoading, exports.setUpdating = _a.setUpdating, exports.setError = _a.setError, exports.clearError = _a.clearError, exports.updateUserOptimistic = _a.updateUserOptimistic; // Selectors var selectUser = function (state) { return state.user.user; }; exports.selectUser = selectUser; var selectUserLoading = function (state) { return state.user.loading; }; exports.selectUserLoading = selectUserLoading; var selectUserUpdating = function (state) { return state.user.updating; }; exports.selectUserUpdating = selectUserUpdating; var selectCurrentProjectId = function (state) { return state.user.currentProjectId; }; exports.selectCurrentProjectId = selectCurrentProjectId; var selectUserError = function (state) { return state.user.error; }; exports.selectUserError = selectUserError; // Complex selectors var selectUserById = function (userId) { return function (state) { var user = (0, exports.selectUser)(state); return (user === null || user === void 0 ? void 0 : user.id) === userId ? user : null; }; }; exports.selectUserById = selectUserById; // Reducer exports.userReducer = userSlice.reducer; exports.default = userSlice; //# sourceMappingURL=userSlice.js.map