From 5c0f168a37b1c90597305a7a6a3d44235a3b2d00 Mon Sep 17 00:00:00 2001 From: karthikalakshmi Date: Fri, 27 Mar 2026 09:41:11 +0530 Subject: [PATCH 1/2] Fix #317 Reports Intent Print changes --- src/App.jsx | 150 ++++++++---------- .../AuthenicationToken/AuthenticationToken.js | 7 +- src/Pages/RedirectApps.jsx | 8 +- .../Reports/DateWiseReport/DateWiseReport.jsx | 19 +-- .../Reports/ItemWiseReport/ItemWiseReport.jsx | 19 +-- src/Styles/Tablebooking/TableBooking.scss | 2 +- 6 files changed, 96 insertions(+), 109 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index f746608..9d5c4da 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -8,7 +8,7 @@ import SelfBooking from './Pages/SelfBooking/SelfBooking.jsx'; import { isMobile, isIOS } from 'react-device-detect'; import { routesConfig } from './routesConfig'; import { GlobalItemCard } from './Features/BookingScreen/BookingData/BookingData.js'; -import { clearSession, getSession } from './Services/Others.js'; +import { clearSession, getSession, sessionStore } from './Services/Others.js'; const KisokSelBooking = lazy( () => import('./Pages/SelfBooking/KisokSelBooking') @@ -27,9 +27,10 @@ import useSessionManager from './useSessionManager.js'; import ExtendSubscriptionModal from './Pages/ExtentedModal/ExtendSubscriptionModal.jsx'; import devtools from 'devtools-detect'; import { useDevToolsDetection } from './utils/useDevToolsDetection.js'; +import { Capacitor } from '@capacitor/core'; -const isCapacitor = () => !!window.Capacitor?.isNativePlatform?.(); - +// const isCapacitor = () => !!window.Capacitor?.isNativePlatform?.(); +const isCapacitor = () => Capacitor.isNativePlatform(); // ✅ Define your home/exit pages here const HOME_PAGES = [ '/app-page/home', // android minimize @@ -55,7 +56,7 @@ const AppRoutes = () => { const [devToolsOpen, setDevToolsOpen] = useState(false); // ✅ Flag to prevent stack push when back button navigates const isBackNav = useRef(false); - + console.log(isCapacitor(), 'Is Capacitor'); // ✅ Build navigation stack useEffect(() => { // Skip pushing to stack when back button caused this navigation @@ -70,13 +71,14 @@ const AppRoutes = () => { // Don't track login pages if (LOGIN_PAGES.some((p) => path.includes(p))) return; - const raw = sessionStorage.getItem('navStack'); + const raw = getSession('navStack'); + console.log('🎯 Current path:', path); let stack = raw ? JSON.parse(raw) : []; if (stack.length === 0 || stack[stack.length - 1] !== path) { stack.push(path); if (stack.length > 50) stack = stack.slice(-50); - sessionStorage.setItem('navStack', JSON.stringify(stack)); + sessionStore('navStack', JSON.stringify(stack)); console.log('📍 Stack:', stack); } } catch (e) { } @@ -90,7 +92,7 @@ const AppRoutes = () => { const currentPath = location.pathname; const SessionId = getSession('SessionId'); - + console.log('SessionId:', SessionId, 'CurrentPath:', currentPath) // 🟢 If session exists → allow navigation if (SessionId) { console.log('Browser back allowed'); @@ -112,65 +114,53 @@ const AppRoutes = () => { }, [location.pathname]); // ✅ Android — Capacitor back button - useEffect(() => { - if (!isCapacitor()) return; + useEffect(() => { + if (!isCapacitor()) return; - const handler = async () => { - try { - const currentPath = location.pathname + (location.search || ''); - console.log('🔙 Back pressed:', currentPath); + const handler = async () => { + try { + const currentPath = window.location.pathname + window.location.search; // Bug 2 fix - const raw = sessionStorage.getItem('navStack'); - let stack = raw ? JSON.parse(raw) : []; + const raw = getSession('navStack'); + let stack = raw ? JSON.parse(raw) : []; - // Remove current path from stack if it's at the end - while (stack.length && stack[stack.length - 1] === currentPath) { - stack.pop(); - } - - // If there are pages in history, go back to previous page - if (stack.length > 0) { - const previous = stack[stack.length - 1]; - sessionStorage.setItem('navStack', JSON.stringify(stack)); - isBackNav.current = true; - navigate(previous); - console.log('Navigate to previous:', previous); - return; - } - - // Stack is empty - check where we are - // 🏠 Home page → minimize - if (HOME_PAGES?.some((p) => currentPath?.includes(p))) { - console.log('Home page & empty stack → minimizing app'); - await CapacitorApp.minimizeApp(); - return; - } - - // 🚪 Login page → minimize - if (LOGIN_PAGES?.some((p) => currentPath?.includes(p))) { - console.log('Login page & empty stack → minimizing app'); - await CapacitorApp.minimizeApp(); - return; - } - - // Anywhere else with empty stack → go to home - const home = '/app-page/home'; - sessionStorage.setItem('navStack', JSON.stringify([home])); - isBackNav.current = true; - navigate(home); - console.log('Empty stack, navigate to home'); - } catch (e) { - console.error('Back handler error:', e); - await CapacitorApp.minimizeApp(); + while (stack.length && stack[stack.length - 1] === currentPath) { + stack.pop(); } - }; - const listener = CapacitorApp.addListener('backButton', handler); + if (stack.length > 0) { + const previous = stack[stack.length - 1]; + sessionStore('navStack', JSON.stringify(stack)); + isBackNav.current = true; // Bug 3 fix — BEFORE navigate + navigate(previous); + return; + } - return () => { - listener.remove(); - }; - }, [navigate, location.pathname, location.search]); + if (HOME_PAGES?.some((p) => currentPath?.includes(p))) { + await CapacitorApp.minimizeApp(); + return; + } + + if (LOGIN_PAGES?.some((p) => currentPath?.includes(p))) { + await CapacitorApp.minimizeApp(); + return; + } + + const home = '/app-page/home'; + isBackNav.current = true; // Bug 3 fix here too + sessionStore('navStack', JSON.stringify([home])); + navigate(home); + } catch (e) { + console.error('Back handler error:', e); + await CapacitorApp.minimizeApp(); + } + }; + + const listenerPromise = CapacitorApp.addListener('backButton', handler); // Bug 1 fix + return () => { + listenerPromise.then(({ remove }) => remove()); + }; +}, [navigate,location.pathname, location.search]); // mohan // useEffect(() => { // if (isMobile || isIOS) { @@ -211,27 +201,27 @@ const AppRoutes = () => { // return () => clearInterval(checkDevTools); // }, [devToolsOpen]); - const isBlocked = useDevToolsDetection(() => { - // optional: log, notify, etc. - console.warn('DevTools detected'); - }); + // const isBlocked = useDevToolsDetection(() => { + // // optional: log, notify, etc. + // console.warn('DevTools detected'); + // }); - if (isBlocked) { - return ( -
-

- DevTools detected. Please close it to continue. -

-
- ); - } + // if (isBlocked) { + // return ( + //
+ //

+ // DevTools detected. Please close it to continue. + //

+ //
+ // ); + // } if (extendModel) { return ( { let encryptedLoginType = getSession('LoginType') - console.log( - 'encryptedLoginType', - encryptedLoginType, - TokendecryptedValuesFun(encryptedMobileno) - ); - + // let Mobileno = encryptedUserId && encryptedLoginType != "Kiosk" ? TokendecryptedValuesFun(encryptedMobileno) : '1000000001'; let Mobileno = encryptedUserId ? encryptedMobileno diff --git a/src/Pages/RedirectApps.jsx b/src/Pages/RedirectApps.jsx index 5ec400c..5a4a76e 100644 --- a/src/Pages/RedirectApps.jsx +++ b/src/Pages/RedirectApps.jsx @@ -18,14 +18,14 @@ function RedirectApps() { const SessionId = encryptedValuesUrlFun(getSession('SessionId')); // const AuthToken = sessionStorage.getItem('auth'); - if (sessionStorage.getItem('BranchId') !== null) { + if (getSession('BranchId') !== null) { clearSession('BranchId'); } - if (sessionStorage.getItem('AppId') !== null) { + if (getSession('AppId') !== null) { clearSession('AppId'); } - if (sessionStorage.getItem('hasRefreshed') !== null) { - sessionStorage.removeItem('hasRefreshed'); + if (getSession('hasRefreshed') !== null) { + clearSession('hasRefreshed'); } const param = { MN: MobileNo, diff --git a/src/Pages/Reports/DateWiseReport/DateWiseReport.jsx b/src/Pages/Reports/DateWiseReport/DateWiseReport.jsx index c424dc6..a3fa7fa 100644 --- a/src/Pages/Reports/DateWiseReport/DateWiseReport.jsx +++ b/src/Pages/Reports/DateWiseReport/DateWiseReport.jsx @@ -41,6 +41,7 @@ const DateWiseReport = () => { getSession('AppType')?.toLowerCase() == 'wholesale' ? true : false; const [OrderFromDate, setOrderFromDate] = useState(); const [OrderToDate, setOrderToDate] = useState(); + const sessionuserid = getSession('UserId') const [UserId, setUserId] = useState( UserRole != 'Employee' ? 0 : getSession('UserId') ); @@ -63,7 +64,7 @@ const DateWiseReport = () => { setting?.SettingIdName?.toLowerCase() === 'mobilea4' && setting?.SettingValue === 'Y' ); - console.log(MobileA4Print, 'MobileA4PrintMobileA4Print'); + console.log(MobileA4Print,SettingDataSelector, 'MobileA4PrintMobileA4Print'); useEffect(() => { if (dataSource?.length > 0) { @@ -368,7 +369,7 @@ const DateWiseReport = () => { }, []); const getPreference = async () => { - const data = { AppId: AppId, CompId: CompId, BranchId: BranchId,UserId: UserId }; + const data = { AppId: AppId, CompId: CompId, BranchId: BranchId,UserId: sessionuserid }; const { data: res } = await dispatch(getPreferenceData(data)).unwrap(); const decimalSetting = res?.data?.[0]?.SettingDtlDetails?.find( (setting) => @@ -545,12 +546,12 @@ const DateWiseReport = () => { let TokenData = ''; let FooterPrint = ''; if (isMobile) { - if (MobileA4Print) { - ReportMobilePDFPrint({ - printId: 'RePrint', - printStyle: style, - }); - } else { + // if (MobileA4Print) { + // ReportMobilePDFPrint({ + // printId: 'RePrint', + // printStyle: style, + // }); + // } else { var textEncoded = encodeURI(receiptText); var TypeCheck = 'PrintReceipt'; var scheme = 'pozoprinter'; @@ -578,7 +579,7 @@ const DateWiseReport = () => { FooterPrint + 'HasFooterTextE' + ';end;'; - } + // } } else { await printDiv('RePrint', style); } diff --git a/src/Pages/Reports/ItemWiseReport/ItemWiseReport.jsx b/src/Pages/Reports/ItemWiseReport/ItemWiseReport.jsx index 8d6e824..03bb062 100644 --- a/src/Pages/Reports/ItemWiseReport/ItemWiseReport.jsx +++ b/src/Pages/Reports/ItemWiseReport/ItemWiseReport.jsx @@ -69,6 +69,7 @@ const ItemWiseReport = () => { const BranchId = getSession('BranchId'); const AppId = getSession('AppId'); const UserRole = getSession('UserType'); + const sessionuserid = getSession('UserId') const [UserId, setUserId] = useState( UserRole != 'Employee' ? 0 : getSession('UserId') ); @@ -79,7 +80,7 @@ const ItemWiseReport = () => { setting?.SettingIdName?.toLowerCase() === 'mobilea4' && setting?.SettingValue === 'Y' ); - + console.log(MobileA4Print,SettingDataSelector, 'MobileA4PrintMobileA4Print') useEffect(() => { getPreference(); }, []); @@ -210,7 +211,7 @@ const ItemWiseReport = () => { } }, [apiCall]); const getPreference = async () => { - const data = { AppId: AppId, CompId: CompId, BranchId: BranchId,UserId: UserId }; + const data = { AppId: AppId, CompId: CompId, BranchId: BranchId,UserId: sessionuserid }; const { data: res } = await dispatch(getPreferenceData(data)).unwrap(); const decimalSetting = res?.data?.[0]?.SettingDtlDetails?.find( (setting) => @@ -310,12 +311,12 @@ const ItemWiseReport = () => { }; const Print = async () => { if (isMobile) { - if (MobileA4Print) { - ReportMobilePDFPrint({ - printId: 'RePrint', - printStyle: style, - }); - } else { + // if (MobileA4Print) { + // ReportMobilePDFPrint({ + // printId: 'RePrint', + // printStyle: style, + // }); + // } else { let LogoImage = ''; let TokenData = ''; let FooterPrint = ''; @@ -346,7 +347,7 @@ const ItemWiseReport = () => { FooterPrint + 'HasFooterTextE' + ';end;'; - } + // } } else { await printDiv('RePrint', style); } diff --git a/src/Styles/Tablebooking/TableBooking.scss b/src/Styles/Tablebooking/TableBooking.scss index 2c80958..58f6e93 100644 --- a/src/Styles/Tablebooking/TableBooking.scss +++ b/src/Styles/Tablebooking/TableBooking.scss @@ -705,7 +705,7 @@ color: #fff; top: 0; } -.optionnew:selection { +.optionnew::selection { background-color: #ff4d4f; } .ovrly-icos { From f342b5f70ae549682fc1b55d10adf79d2ca1dd17 Mon Sep 17 00:00:00 2001 From: karthikalakshmi Date: Fri, 27 Mar 2026 09:48:25 +0530 Subject: [PATCH 2/2] Update src/App.jsx --- src/App.jsx | 189 +++++++++++++++++++++++++--------------------------- 1 file changed, 89 insertions(+), 100 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 9d5c4da..0aaeab3 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -8,7 +8,7 @@ import SelfBooking from './Pages/SelfBooking/SelfBooking.jsx'; import { isMobile, isIOS } from 'react-device-detect'; import { routesConfig } from './routesConfig'; import { GlobalItemCard } from './Features/BookingScreen/BookingData/BookingData.js'; -import { clearSession, getSession, sessionStore } from './Services/Others.js'; +import { clearSession, getSession } from './Services/Others.js'; const KisokSelBooking = lazy( () => import('./Pages/SelfBooking/KisokSelBooking') @@ -26,11 +26,9 @@ import useSubscriptionManager from './useSubscriptionManager.js'; import useSessionManager from './useSessionManager.js'; import ExtendSubscriptionModal from './Pages/ExtentedModal/ExtendSubscriptionModal.jsx'; import devtools from 'devtools-detect'; -import { useDevToolsDetection } from './utils/useDevToolsDetection.js'; -import { Capacitor } from '@capacitor/core'; -// const isCapacitor = () => !!window.Capacitor?.isNativePlatform?.(); -const isCapacitor = () => Capacitor.isNativePlatform(); +const isCapacitor = () => !!window.Capacitor?.isNativePlatform?.(); + // ✅ Define your home/exit pages here const HOME_PAGES = [ '/app-page/home', // android minimize @@ -56,7 +54,7 @@ const AppRoutes = () => { const [devToolsOpen, setDevToolsOpen] = useState(false); // ✅ Flag to prevent stack push when back button navigates const isBackNav = useRef(false); - console.log(isCapacitor(), 'Is Capacitor'); + // ✅ Build navigation stack useEffect(() => { // Skip pushing to stack when back button caused this navigation @@ -71,14 +69,13 @@ const AppRoutes = () => { // Don't track login pages if (LOGIN_PAGES.some((p) => path.includes(p))) return; - const raw = getSession('navStack'); - console.log('🎯 Current path:', path); + const raw = sessionStorage.getItem('navStack'); let stack = raw ? JSON.parse(raw) : []; if (stack.length === 0 || stack[stack.length - 1] !== path) { stack.push(path); if (stack.length > 50) stack = stack.slice(-50); - sessionStore('navStack', JSON.stringify(stack)); + sessionStorage.setItem('navStack', JSON.stringify(stack)); console.log('📍 Stack:', stack); } } catch (e) { } @@ -92,7 +89,7 @@ const AppRoutes = () => { const currentPath = location.pathname; const SessionId = getSession('SessionId'); - console.log('SessionId:', SessionId, 'CurrentPath:', currentPath) + // 🟢 If session exists → allow navigation if (SessionId) { console.log('Browser back allowed'); @@ -114,114 +111,106 @@ const AppRoutes = () => { }, [location.pathname]); // ✅ Android — Capacitor back button - useEffect(() => { - if (!isCapacitor()) return; + useEffect(() => { + if (!isCapacitor()) return; - const handler = async () => { - try { - const currentPath = window.location.pathname + window.location.search; // Bug 2 fix + const handler = async () => { + try { + const currentPath = location.pathname + (location.search || ''); + console.log('🔙 Back pressed:', currentPath); - const raw = getSession('navStack'); - let stack = raw ? JSON.parse(raw) : []; + const raw = sessionStorage.getItem('navStack'); + let stack = raw ? JSON.parse(raw) : []; - while (stack.length && stack[stack.length - 1] === currentPath) { - stack.pop(); - } + // Remove current path from stack if it's at the end + while (stack.length && stack[stack.length - 1] === currentPath) { + stack.pop(); + } - if (stack.length > 0) { - const previous = stack[stack.length - 1]; - sessionStore('navStack', JSON.stringify(stack)); - isBackNav.current = true; // Bug 3 fix — BEFORE navigate - navigate(previous); - return; - } + // If there are pages in history, go back to previous page + if (stack.length > 0) { + const previous = stack[stack.length - 1]; + sessionStorage.setItem('navStack', JSON.stringify(stack)); + isBackNav.current = true; + navigate(previous); + console.log('Navigate to previous:', previous); + return; + } - if (HOME_PAGES?.some((p) => currentPath?.includes(p))) { + // Stack is empty - check where we are + // 🏠 Home page → minimize + if (HOME_PAGES?.some((p) => currentPath?.includes(p))) { + console.log('Home page & empty stack → minimizing app'); + await CapacitorApp.minimizeApp(); + return; + } + + // 🚪 Login page → minimize + if (LOGIN_PAGES?.some((p) => currentPath?.includes(p))) { + console.log('Login page & empty stack → minimizing app'); + await CapacitorApp.minimizeApp(); + return; + } + + // Anywhere else with empty stack → go to home + const home = '/app-page/home'; + sessionStorage.setItem('navStack', JSON.stringify([home])); + isBackNav.current = true; + navigate(home); + console.log('Empty stack, navigate to home'); + } catch (e) { + console.error('Back handler error:', e); await CapacitorApp.minimizeApp(); - return; } + }; - if (LOGIN_PAGES?.some((p) => currentPath?.includes(p))) { - await CapacitorApp.minimizeApp(); - return; - } + const listener = CapacitorApp.addListener('backButton', handler); - const home = '/app-page/home'; - isBackNav.current = true; // Bug 3 fix here too - sessionStore('navStack', JSON.stringify([home])); - navigate(home); - } catch (e) { - console.error('Back handler error:', e); - await CapacitorApp.minimizeApp(); - } - }; - - const listenerPromise = CapacitorApp.addListener('backButton', handler); // Bug 1 fix - return () => { - listenerPromise.then(({ remove }) => remove()); - }; -}, [navigate,location.pathname, location.search]); + return () => { + listener.remove(); + }; + }, [navigate, location.pathname, location.search]); // mohan - // useEffect(() => { - // if (isMobile || isIOS) { - // console.log('📱 Mobile/iOS device → skipping DevTools detection'); - // return; - // } - // const checkDevTools = setInterval(() => { - // if (devtools.isOpen && !devToolsOpen) { - // setDevToolsOpen(true); - // document.body.innerHTML = - // "

Close Inspect to continue using the application.

"; - // } else if (!devtools.isOpen && devToolsOpen) { - // setDevToolsOpen(false); + useEffect(() => { + if (isMobile || isIOS) { + console.log('📱 Mobile/iOS device → skipping DevTools detection'); + return; + } + const checkDevTools = setInterval(() => { + if (devtools.isOpen && !devToolsOpen) { + setDevToolsOpen(true); + document.body.innerHTML = + "

Close Inspect to continue using the application.

"; + } else if (!devtools.isOpen && devToolsOpen) { + setDevToolsOpen(false); - // setTimeout(() => { - // window.location.reload(); - // }, 100); + setTimeout(() => { + window.location.reload(); + }, 100); - // clearInterval(checkDevTools); - // } + clearInterval(checkDevTools); + } - // if (!devtools.isOpen) { - // let before = performance.now(); + if (!devtools.isOpen) { + let before = performance.now(); - // let after = performance.now(); + let after = performance.now(); - // let executionDelay = after - before; + let executionDelay = after - before; - // if (executionDelay > 100) { - // setDevToolsOpen(true); - // document.body.innerHTML = - // "

Close Inspect to continue using the application.

"; - // } else { - // setDevToolsOpen(false); - // } - // } - // }, 1000); + if (executionDelay > 100) { + setDevToolsOpen(true); + document.body.innerHTML = + "

Close Inspect to continue using the application.

"; + } else { + setDevToolsOpen(false); + } + } + }, 1000); - // return () => clearInterval(checkDevTools); - // }, [devToolsOpen]); - // const isBlocked = useDevToolsDetection(() => { - // // optional: log, notify, etc. - // console.warn('DevTools detected'); - // }); + return () => clearInterval(checkDevTools); + }, [devToolsOpen]); - // if (isBlocked) { - // return ( - //
- //

- // DevTools detected. Please close it to continue. - //

- //
- // ); - // } if (extendModel) { return (