Spaces:
Sleeping
Sleeping
File size: 820 Bytes
68f7925 | 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 | 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 };
} |