diff --git a/src/app/HomePage.js b/src/app/HomePage.js
index 9be51750..c5ebb958 100644
--- a/src/app/HomePage.js
+++ b/src/app/HomePage.js
@@ -40,7 +40,7 @@ function HomePage() {
colorId={previewState?.colorId}
pose={previewState?.pose}
wornItemIds={[]}
- loadingDelay="1.5s"
+ loadingDelayMs={1500}
placeholder={
diff --git a/src/app/components/HangerSpinner.js b/src/app/components/HangerSpinner.js
index 4505493a..04efe560 100644
--- a/src/app/components/HangerSpinner.js
+++ b/src/app/components/HangerSpinner.js
@@ -86,12 +86,7 @@ function HangerSpinner({ size = "md", ...props }) {
`}
{...props}
>
-
+
>
);
diff --git a/src/app/components/OutfitPreview.js b/src/app/components/OutfitPreview.js
index 26af72d5..d87fdbb1 100644
--- a/src/app/components/OutfitPreview.js
+++ b/src/app/components/OutfitPreview.js
@@ -1,7 +1,7 @@
import React from "react";
import { css, cx } from "emotion";
import { CSSTransition, TransitionGroup } from "react-transition-group";
-import { Box, Flex, DarkMode, Text } from "@chakra-ui/core";
+import { Box, DarkMode, Flex, Text } from "@chakra-ui/core";
import { WarningIcon } from "@chakra-ui/icons";
import HangerSpinner from "./HangerSpinner";
@@ -25,10 +25,11 @@ function OutfitPreview({
speciesId,
colorId,
pose,
- appearanceId = null,
wornItemIds,
+ appearanceId = null,
placeholder,
- loadingDelay,
+ loadingDelayMs,
+ spinnerVariant,
}) {
const { loading, error, visibleLayers } = useOutfitAppearance({
speciesId,
@@ -55,15 +56,14 @@ function OutfitPreview({
}
return (
-
-
-
+
);
}
@@ -75,13 +75,18 @@ export function OutfitLayers({
loading,
visibleLayers,
placeholder,
- loadingDelay = "0.5s",
+ loadingDelayMs = 500,
+ spinnerVariant = "overlay",
doAnimations = false,
}) {
- const [isMounted, setIsMounted] = React.useState(false);
- React.useLayoutEffect(() => {
- setIsMounted(true);
- }, []);
+ const [loadingDelayHasPassed, setLoadingDelayHasPassed] = React.useState(
+ false
+ );
+
+ React.useEffect(() => {
+ const t = setTimeout(() => setLoadingDelayHasPassed(true), loadingDelayMs);
+ return () => clearTimeout(t);
+ }, [loadingDelayMs]);
return (
-
-
+ {spinnerVariant === "overlay" && (
+ <>
+
+ {/* Against the dark overlay, use the Dark Mode spinner. */}
+
+
+
+ >
+ )}
+ {spinnerVariant === "corner" && (
+
+ )}
);