diff --git a/ui/src/app/core/components/Spinner.js b/ui/src/app/core/components/Spinner.js
index 880f53d2a..c137bb9ac 100644
--- a/ui/src/app/core/components/Spinner.js
+++ b/ui/src/app/core/components/Spinner.js
@@ -2,8 +2,8 @@ import React from 'react';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { faSpinner } from '@fortawesome/free-solid-svg-icons';
-export function Spinner ({ size, className }) {
- return ()
+export function Spinner (props) {
+ return ()
}
export default Spinner;
\ No newline at end of file
diff --git a/ui/src/app/metadata/hoc/MetadataSelector.js b/ui/src/app/metadata/hoc/MetadataSelector.js
index b81db74b2..54a49d4df 100644
--- a/ui/src/app/metadata/hoc/MetadataSelector.js
+++ b/ui/src/app/metadata/hoc/MetadataSelector.js
@@ -1,5 +1,6 @@
import React from 'react';
import { useLocation, useParams } from 'react-router';
+import Spinner from '../../core/components/Spinner';
import { useMetadataEntity } from '../hooks/api';
export const MetadataTypeContext = React.createContext();
@@ -10,6 +11,7 @@ export const MetadataLoaderContext = React.createContext();
export function MetadataSelector({ children, ...props }) {
let { type, id } = useParams();
+ const [loading, setLoading] = React.useState(false);
const location = useLocation();
if (!type) {
@@ -30,25 +32,35 @@ export function MetadataSelector({ children, ...props }) {
const source = await get(`/${id}`);
if (response.ok) {
setMetadata(source);
+ setLoading(false);
}
}
function reload() {
+ setLoading(true);
loadMetadata(id);
+
}
React.useEffect(() => reload(), [id]);
return (
-
- {type &&
-
- {metadata && metadata.version &&
- {children(metadata, reload)}
+
+ {loading &&
+
+
}
+
+ {type &&
+
+ {metadata && metadata.version &&
+
+ {children(metadata, reload)}
+
+ }
+
}
-
- }
-
+
+
);
}