File size: 1,483 Bytes
a566fb0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import { useEffect } from 'react';
import { useLocation } from 'react-router-dom';
import { useAuth } from './AuthContext';
import { base44 } from '@/api/base44Client';
import { pagesConfig } from '@/pages.config';
export default function NavigationTracker() {
const location = useLocation();
const { isAuthenticated } = useAuth();
const { Pages, mainPage } = pagesConfig;
const mainPageKey = mainPage ?? Object.keys(Pages)[0];
// Log user activity when navigating to a page
useEffect(() => {
// Extract page name from pathname
const pathname = location.pathname;
let pageName;
if (pathname === '/' || pathname === '') {
pageName = mainPageKey;
} else {
// Remove leading slash and get the first segment
const pathSegment = pathname.replace(/^\//, '').split('/')[0];
// Try case-insensitive lookup in Pages config
const pageKeys = Object.keys(Pages);
const matchedKey = pageKeys.find(
key => key.toLowerCase() === pathSegment.toLowerCase()
);
pageName = matchedKey || null;
}
if (isAuthenticated && pageName) {
base44.appLogs.logUserInApp(pageName).catch(() => {
// Silently fail - logging shouldn't break the app
});
}
}, [location, isAuthenticated, Pages, mainPageKey]);
return null;
} |