import { useCallback } from 'react'; import { useUiStore } from '../stores/uiStore'; export const useGlobalLoading = () => { const showLoader = useUiStore((state) => state.showLoader); const hideLoader = useUiStore((state) => state.hideLoader); const setLoading = useUiStore((state) => state.setLoading); const isGlobalLoading = useUiStore((state) => state.isLoading); const withLoading = useCallback((operation: () => Promise | T): Promise => { showLoader(); try { const result = operation(); return Promise.resolve(result).finally(() => { hideLoader(); }); } catch (error) { hideLoader(); return Promise.reject(error); } }, [showLoader, hideLoader]); return { showLoader, hideLoader, setLoading, withLoading, isGlobalLoading }; };