Files
motovaultpro/frontend/src/core/hooks/useDataSync.ts
Eric Gullickson a052040e3a Initial Commit
2025-09-17 16:09:15 -05:00

44 lines
1.3 KiB
TypeScript

/**
* @ai-summary React hook for data synchronization management
*/
import { useEffect, useRef } from 'react';
import { useQueryClient } from '@tanstack/react-query';
import { DataSyncManager } from '../sync/data-sync';
import { useNavigationStore } from '../store/navigation';
export const useDataSync = () => {
const queryClient = useQueryClient();
const syncManagerRef = useRef<DataSyncManager | null>(null);
const navigationStore = useNavigationStore();
useEffect(() => {
// Initialize data sync manager
syncManagerRef.current = new DataSyncManager(queryClient, {
enableCrossTabs: true,
enableOptimisticUpdates: true,
enableBackgroundSync: true,
syncInterval: 30000,
});
return () => {
syncManagerRef.current?.cleanup();
};
}, [queryClient]);
// Listen for navigation changes and trigger prefetching
useEffect(() => {
if (syncManagerRef.current) {
syncManagerRef.current.prefetchForNavigation(navigationStore.activeScreen);
}
}, [navigationStore.activeScreen]);
return {
optimisticVehicleUpdate: (vehicleId: string, updates: any) => {
syncManagerRef.current?.optimisticVehicleUpdate(vehicleId, updates);
},
prefetchForNavigation: (screen: string) => {
syncManagerRef.current?.prefetchForNavigation(screen);
},
};
};