import { useEffect, useRef, useState } from 'react'; import { useDispatch } from 'react-redux'; import { ChangeAppExpDateData, changeHeightforExpDate, getAppSubscriptionDate, } from './Features/BookingScreen/BookingData/BookingData.js'; import { sendSms } from './Features/Payment/PaymentDetails/PaymentDetails.js'; import { getSession } from './Services/Others.js'; import { useNavigate } from 'react-router-dom'; const subDirectory = import.meta.env.ENV_BASE_URL; const useSubscriptionManager = (sessionData, logout) => { const dispatch = useDispatch(); const navigate = useNavigate(); const prevRemainingDays = useRef(null); const [remainingDays, setRemainingDays] = useState(null); const [extendModel, setExtendModel] = useState(false); const handleCancel = () => { logout(); setExtendModel(false) } function formatDate(date) { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); const milliseconds = String(date.getMilliseconds()).padStart(3, '0'); return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`; } 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' ) { if ( (UserType !== 'Super Admin' || UserType !== 'Super Admin User') && (expData?.PlanType?.toLowerCase() == "extend expired") ) { console.log('Subscription expired, logging out...'); alert('Subscription expired'); logout(); } else if ( (UserType !== 'Super Admin' || UserType !== 'Super Admin User') && (expData?.PlanType?.toLowerCase() == "plan expired") ) { setExtendModel(true) } } } }; fetchExpDate(); const interval = setInterval(fetchExpDate, 60 * 60 * 1000); return () => clearInterval(interval); }, [sessionData]); return { remainingDays, handleCancel,extendModel,setExtendModel }; }; export default useSubscriptionManager;