diff --git a/src/app/HomePage.js b/src/app/HomePage.js index 9be5175..c5ebb95 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 4505493..04efe56 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 26af72d..d87fdbb 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" && ( + + )} );