Spaces:
Sleeping
Sleeping
| import { useCallback } from 'react'; | |
| import { useStateStore } from '@/store/state'; | |
| export function useApiStatusTracker() { | |
| const { updateApiStatus } = useStateStore(); | |
| const trackApi = useCallback( | |
| async <T>(apiName: string, apiCall: () => Promise<T>): Promise<T> => { | |
| const startTime = Date.now(); | |
| updateApiStatus(apiName, { status: 'loading', duration: 0 }); | |
| try { | |
| const result = await apiCall(); | |
| const duration = (Date.now() - startTime) / 1000; | |
| updateApiStatus(apiName, { status: 'success', duration }); | |
| return result; | |
| } catch (error) { | |
| const duration = (Date.now() - startTime) / 1000; | |
| updateApiStatus(apiName, { status: 'error', duration }); | |
| throw error; | |
| } | |
| }, | |
| [updateApiStatus] | |
| ); | |
| return { trackApi }; | |
| } |