Android_Retail/src/AuthContext.jsx

120 lines
3.4 KiB
JavaScript

// AuthContext.jsx
import { createContext, useContext, useState, useEffect } from 'react';
import { useDispatch } from 'react-redux';
import { getSession } from './Services/Others';
import {
getEmpAccesData,
getSAdminUserAccesData,
} from './Features/BrachLogin/BranchLogin.js';
import { PricingAppPricingNameData } from './Features/ThemeChange/ThemeChange.js';
import { GlobalFeatAddOnData } from './Features/BookingScreen/BookingData/BookingData.js';
import { useSelector } from 'react-redux';
export const AuthContext = createContext();
export const useAuth = () => useContext(AuthContext);
export const AuthProvider = ({ children }) => {
const AppId = getSession('AppId');
const CompId = getSession('CompId');
const BranchId = getSession('BranchId');
const UserId = getSession('UserId');
const UserType = getSession('UserType');
const dispatch = useDispatch();
const FeatureAddonData = useSelector(GlobalFeatAddOnData);
const [Access, setAccess] = useState([]);
const [SadminuserAccess, setSadminuserAccess] = useState([]);
const [ProORAdvance, setProORAdvance] = useState(false);
const [Advance, setAdvance] = useState(false);
const [freeProductsCount, setFreeProductsCount] = useState(0);
let featureaddDetails = FeatureAddonData?.FeatureDtls || [];
useEffect(() => {
getPricingName();
}, []);
useEffect(() => {
if (UserType === 'Employee') {
getEmpAccess();
}
if (UserType === 'Super Admin User') {
getSadminUserAccess();
}
}, [UserType]);
const getPricingName = async () => {
if (!AppId || !UserId) return;
let data;
if (UserType === 'Super Admin' || UserType === 'Super Admin User') {
data = {
appId: AppId,
compId: CompId,
branchId: BranchId,
};
} else {
data = {
appId: AppId,
userId: UserId,
};
}
try {
const response = await dispatch(PricingAppPricingNameData(data)).unwrap();
const responseData = response?.data;
if (responseData?.statusCode !== 1) return setAdvance(false);
const pricingData = responseData?.data;
const hasAdvance = pricingData.some(
(item) => item.PricingName === 'Premium'
);
setAdvance(hasAdvance);
const hasProOrAdvance =
hasAdvance ||
pricingData.some((item) => item.PricingName === 'Customized');
setProORAdvance(hasProOrAdvance);
} catch (error) {
console.error('Error fetching pricing name:', error);
}
};
const getEmpAccess = async () => {
let data = {
UserId: UserId,
AppId: AppId,
CompId: CompId,
BranchId: BranchId,
};
const response = await dispatch(getEmpAccesData(data)).unwrap();
if (response?.data?.statusCode === 1) {
setAccess(response?.data?.data?.[0]?.EmpAccessDetails);
}
};
const getSadminUserAccess = async () => {
let data = {
UserId: UserId,
AppId: AppId,
};
const response = await dispatch(getSAdminUserAccesData(data)).unwrap();
if (response?.data?.statusCode === 1) {
setSadminuserAccess(response?.data?.data?.[0]?.AppMenuAccessDetails);
}
};
return (
<AuthContext.Provider
value={{
UserType,
Access,
SadminuserAccess,
Advance,
ProORAdvance,
featureaddDetails,
freeProductsCount,
setFreeProductsCount,
}}
>
{children}
</AuthContext.Provider>
);
};