Some checks failed
Integration Tests / integration-tests (push) Failing after 20s
Integration Tests / performance-tests (push) Has been skipped
Service Adapters (Python FastAPI) / test (3.11) (push) Failing after 23s
Frontend (React) / test (20) (push) Failing after 1m3s
Frontend (React) / build (push) Has been skipped
Frontend (React) / lighthouse (push) Has been skipped
Service Adapters (Python FastAPI) / test (3.12) (push) Failing after 23s
Service Adapters (Python FastAPI) / test (3.13) (push) Failing after 20s
Service Adapters (Python FastAPI) / build (push) Has been skipped
### Summary of Changes - Removed proxy configuration in `rsbuild.config.js` as the API Gateway is not running. - Added smooth transitions and gentle loading overlays in CSS for improved user experience during data loading. - Updated `Dashboard` component to conditionally display loading spinner and gentle loading overlay based on data fetching state. - Enhanced `useOfflineAwareServiceStatus` and `useOfflineAwareSystemData` hooks to manage loading states and service status more effectively. - Increased refresh intervals for service status and system data to reduce API call frequency. ### Expected Results - Improved user experience with smoother loading transitions and better feedback during data refreshes. - Enhanced handling of service status checks, providing clearer information when services are unavailable. - Streamlined code for managing loading states, making it easier to maintain and extend in the future.
43 lines
916 B
JavaScript
43 lines
916 B
JavaScript
import { useState, useCallback } from 'react';
|
|
|
|
export const useGentleLoading = (initialLoading = false) => {
|
|
const [loading, setLoading] = useState(initialLoading);
|
|
const [refreshing, setRefreshing] = useState(false);
|
|
|
|
const startLoading = useCallback(() => {
|
|
setLoading(true);
|
|
}, []);
|
|
|
|
const stopLoading = useCallback(() => {
|
|
setLoading(false);
|
|
}, []);
|
|
|
|
const startRefreshing = useCallback(() => {
|
|
setRefreshing(true);
|
|
}, []);
|
|
|
|
const stopRefreshing = useCallback(() => {
|
|
setRefreshing(false);
|
|
}, []);
|
|
|
|
const withGentleLoading = useCallback(async (asyncFunction) => {
|
|
try {
|
|
setRefreshing(true);
|
|
const result = await asyncFunction();
|
|
return result;
|
|
} finally {
|
|
setRefreshing(false);
|
|
}
|
|
}, []);
|
|
|
|
return {
|
|
loading,
|
|
refreshing,
|
|
startLoading,
|
|
stopLoading,
|
|
startRefreshing,
|
|
stopRefreshing,
|
|
withGentleLoading
|
|
};
|
|
};
|