diff --git a/client/src/components/helpers/Loader.js b/client/src/components/helpers/Loader.js
index b55499693d..8bd5a55f3a 100644
--- a/client/src/components/helpers/Loader.js
+++ b/client/src/components/helpers/Loader.js
@@ -1,20 +1,29 @@
-import React from 'react';
+import React, { useState, useEffect } from 'react';
import PropTypes from 'prop-types';
import Spinner from 'react-spinkit';
import './loader.css';
-function Loader({ fullScreen }) {
+function Loader({ fullScreen, timeout }) {
+ const [showSpinner, setShowSpinner] = useState(!timeout);
+ useEffect(() => {
+ let timerId;
+ if (!showSpinner) {
+ timerId = setTimeout(() => setShowSpinner(true), timeout);
+ }
+ return () => clearTimeout(timerId);
+ }, [setShowSpinner, showSpinner, timeout]);
return (
-
-
+
+ {showSpinner && }
);
}
Loader.displayName = 'Loader';
Loader.propTypes = {
- fullScreen: PropTypes.bool
+ fullScreen: PropTypes.bool,
+ timeout: PropTypes.number
};
export default Loader;
diff --git a/client/src/components/helpers/__snapshots__/Loader.test.js.snap b/client/src/components/helpers/__snapshots__/Loader.test.js.snap
index 9735141bd4..2008f8e0aa 100644
--- a/client/src/components/helpers/__snapshots__/Loader.test.js.snap
+++ b/client/src/components/helpers/__snapshots__/Loader.test.js.snap
@@ -2,7 +2,7 @@
exports[`
matches the fullScreen render snapshot 1`] = `
matches the fullScreen render snapshot 1`] = `
exports[`
matches to the default render snapshot 1`] = `
import('react-monaco-editor'));
@@ -130,7 +131,7 @@ class Editor extends Component {
const { contents, ext, theme, fileKey } = this.props;
const editorTheme = theme === 'night' ? 'vs-dark-custom' : 'vs-custom';
return (
- }>
+ }>