classify web

This commit is contained in:
Husanjonazamov
2026-02-24 12:52:49 +05:00
commit 64af77101f
310 changed files with 45449 additions and 0 deletions

View 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);
}
);