import { useQueryClient } from '@tanstack/react-query'; import { useEffect, useRef } from '@wordpress/element'; import { queryKeys } from '../shared/api/queryKeys'; import type { Status } from '../shared/api/types/status'; function hasDataVersionChanged( seenVersion: number | undefined, currentVersion: number ): boolean { return seenVersion !== undefined && seenVersion !== currentVersion; } export function useStatusSync( status: Status | undefined ): void { const queryClient = useQueryClient(); const dataVersion = status?.data_version; const seenVersion = useRef< number | undefined >( undefined ); useEffect( () => { if ( dataVersion === undefined ) { return; } if ( hasDataVersionChanged( seenVersion.current, dataVersion ) ) { void queryClient.invalidateQueries( { queryKey: queryKeys.links } ); void queryClient.invalidateQueries( { queryKey: queryKeys.fixes } ); void queryClient.invalidateQueries( { queryKey: queryKeys.jobs } ); } seenVersion.current = dataVersion; }, [ queryClient, dataVersion ] ); }