56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
|
|
import { useEffect, useRef, useState } from 'react';
|
||
|
|
import { useDispatch } from 'react-redux';
|
||
|
|
import {
|
||
|
|
ChangeAppExpDateData,
|
||
|
|
changeHeightforExpDate,
|
||
|
|
getAppSubscriptionDate,
|
||
|
|
} from './Features/BookingScreen/BookingData/BookingData.js';
|
||
|
|
|
||
|
|
const useSubscriptionManager = (sessionData, logout) => {
|
||
|
|
const dispatch = useDispatch();
|
||
|
|
const prevRemainingDays = useRef(null);
|
||
|
|
const [remainingDays, setRemainingDays] = useState(null);
|
||
|
|
|
||
|
|
useEffect(() => {
|
||
|
|
if (!sessionData) return;
|
||
|
|
|
||
|
|
const fetchExpDate = async () => {
|
||
|
|
const { CompId, AppId, BranchId, UserType } = sessionData;
|
||
|
|
|
||
|
|
const res = await dispatch(
|
||
|
|
getAppSubscriptionDate({ CompId, BranchId, AppId })
|
||
|
|
).unwrap();
|
||
|
|
|
||
|
|
const expData = res?.data?.data?.[0];
|
||
|
|
if (!expData) return logout();
|
||
|
|
|
||
|
|
if (prevRemainingDays.current !== expData.RemainingDays) {
|
||
|
|
prevRemainingDays.current = expData.RemainingDays;
|
||
|
|
|
||
|
|
setRemainingDays(expData.RemainingDays);
|
||
|
|
dispatch(ChangeAppExpDateData(expData));
|
||
|
|
dispatch(changeHeightforExpDate(expData.RemainingDays));
|
||
|
|
|
||
|
|
if (
|
||
|
|
expData.RemainingDays < 1 &&
|
||
|
|
expData.RemainingHours < 1 &&
|
||
|
|
expData.RemainingMinutes < 1 &&
|
||
|
|
expData.RemainingSeconds < 1 &&
|
||
|
|
UserType !== 'Super Admin'
|
||
|
|
) {
|
||
|
|
alert('Subscription expired');
|
||
|
|
logout();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
fetchExpDate();
|
||
|
|
const interval = setInterval(fetchExpDate, 60 * 60 * 1000);
|
||
|
|
return () => clearInterval(interval);
|
||
|
|
}, [sessionData]);
|
||
|
|
|
||
|
|
return remainingDays;
|
||
|
|
};
|
||
|
|
|
||
|
|
export default useSubscriptionManager;
|