classify web
This commit is contained in:
134
redux/reducer/globalStateSlice.js
Normal file
134
redux/reducer/globalStateSlice.js
Normal file
@@ -0,0 +1,134 @@
|
||||
import { createSelector, createSlice } from "@reduxjs/toolkit";
|
||||
import { store } from "../store";
|
||||
|
||||
const initialState = {
|
||||
IsLoginModalOpen: false,
|
||||
IsVisitedLandingPage: false,
|
||||
IsShowBankDetails: false,
|
||||
Notification: null,
|
||||
IsUnauthorized: false,
|
||||
selectedLocation: null,
|
||||
// Add blocked users state
|
||||
blockedUsersList: [],
|
||||
blockedUsersLoading: false,
|
||||
};
|
||||
|
||||
export const globalStateSlice = createSlice({
|
||||
name: "GlobalState",
|
||||
initialState,
|
||||
reducers: {
|
||||
setIsLoginModalOpen: (state, action) => {
|
||||
state.IsLoginModalOpen = action.payload;
|
||||
},
|
||||
setIsVisitedLandingPage: (state, action) => {
|
||||
state.IsVisitedLandingPage = action.payload;
|
||||
},
|
||||
setIsShowBankDetails: (state, action) => {
|
||||
state.IsShowBankDetails = action.payload;
|
||||
},
|
||||
setNotification: (state, action) => {
|
||||
state.Notification = action.payload;
|
||||
},
|
||||
setIsUnauthorized: (state, action) => {
|
||||
state.IsUnauthorized = action.payload;
|
||||
},
|
||||
setSelectedLocation: (state, action) => {
|
||||
state.selectedLocation = action.payload;
|
||||
},
|
||||
// Add blocked users reducers
|
||||
setBlockedUsersList: (state, action) => {
|
||||
state.blockedUsersList = action.payload;
|
||||
},
|
||||
setBlockedUsersLoading: (state, action) => {
|
||||
state.blockedUsersLoading = action.payload;
|
||||
},
|
||||
addBlockedUser: (state, action) => {
|
||||
const userId = action.payload;
|
||||
if (!state.blockedUsersList.some(user => user.id === userId)) {
|
||||
state.blockedUsersList.push({ id: userId });
|
||||
}
|
||||
},
|
||||
removeBlockedUser: (state, action) => {
|
||||
const userId = action.payload;
|
||||
state.blockedUsersList = state.blockedUsersList.filter(user => user.id !== userId);
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export default globalStateSlice.reducer;
|
||||
export const {
|
||||
setIsLoginModalOpen,
|
||||
setIsVisitedLandingPage,
|
||||
setIsShowBankDetails,
|
||||
setNotification,
|
||||
setIsUnauthorized,
|
||||
setSelectedLocation,
|
||||
// Export blocked users actions
|
||||
setBlockedUsersList,
|
||||
setBlockedUsersLoading,
|
||||
addBlockedUser,
|
||||
removeBlockedUser,
|
||||
} = globalStateSlice.actions;
|
||||
|
||||
export const getIsVisitedLandingPage = createSelector(
|
||||
(state) => state.GlobalState,
|
||||
(GlobalState) => GlobalState.IsVisitedLandingPage
|
||||
);
|
||||
|
||||
export const getIsLoginModalOpen = createSelector(
|
||||
(state) => state.GlobalState,
|
||||
(GlobalState) => GlobalState.IsLoginModalOpen
|
||||
);
|
||||
|
||||
export const getIsShowBankDetails = createSelector(
|
||||
(state) => state.GlobalState,
|
||||
(GlobalState) => GlobalState.IsShowBankDetails
|
||||
);
|
||||
|
||||
export const setIsLoginOpen = (value) => {
|
||||
store.dispatch(setIsLoginModalOpen(value));
|
||||
};
|
||||
|
||||
export const showBankDetails = () => {
|
||||
store.dispatch(setIsShowBankDetails(true));
|
||||
};
|
||||
|
||||
export const hideBankDetails = () => {
|
||||
store.dispatch(setIsShowBankDetails(false));
|
||||
};
|
||||
|
||||
export const getNotification = createSelector(
|
||||
(state) => state.GlobalState,
|
||||
(GlobalState) => GlobalState.Notification
|
||||
);
|
||||
|
||||
export const getIsUnauthorized = createSelector(
|
||||
(state) => state.GlobalState,
|
||||
(GlobalState) => GlobalState.IsUnauthorized
|
||||
);
|
||||
|
||||
export const getSelectedLocation = createSelector(
|
||||
(state) => state.GlobalState,
|
||||
(GlobalState) => GlobalState.selectedLocation
|
||||
);
|
||||
|
||||
// Add blocked users selectors with fallbacks
|
||||
export const getBlockedUsersList = createSelector(
|
||||
(state) => state.GlobalState,
|
||||
(GlobalState) => GlobalState?.blockedUsersList || []
|
||||
);
|
||||
|
||||
export const getBlockedUsersLoading = createSelector(
|
||||
(state) => state.GlobalState,
|
||||
(GlobalState) => GlobalState?.blockedUsersLoading || false
|
||||
);
|
||||
|
||||
export const getIsUserBlocked = createSelector(
|
||||
[getBlockedUsersList, (state, userId) => userId],
|
||||
(blockedUsersList, userId) => {
|
||||
if (!blockedUsersList || !Array.isArray(blockedUsersList)) {
|
||||
return false;
|
||||
}
|
||||
return blockedUsersList.some(user => user.id === userId);
|
||||
}
|
||||
);
|
||||
Reference in New Issue
Block a user