misc outfit preview fixups

This commit is contained in:
Matt Dunn-Rankin 2020-04-23 23:43:39 -07:00
parent da0e35d4e2
commit 95eb3a56e0
2 changed files with 21 additions and 6 deletions

View file

@ -43,7 +43,10 @@ function OutfitPreview({ itemIds, speciesId, colorId }) {
} }
} }
`, `,
{ variables: { itemIds, speciesId, colorId } } {
variables: { itemIds, speciesId, colorId },
returnPartialData: true,
}
); );
if (error) { if (error) {
@ -62,7 +65,12 @@ function OutfitPreview({ itemIds, speciesId, colorId }) {
<Box pos="relative" height="100%" width="100%"> <Box pos="relative" height="100%" width="100%">
{getVisibleLayers(data).map((layer) => ( {getVisibleLayers(data).map((layer) => (
<FullScreenCenter key={layer.id}> <FullScreenCenter key={layer.id}>
<Image src={layer.imageUrl} maxWidth="100%" maxHeight="100%" /> <Image
src={layer.imageUrl}
objectFit="contain"
maxWidth="100%"
maxHeight="100%"
/>
</FullScreenCenter> </FullScreenCenter>
))} ))}
{loading && ( {loading && (
@ -91,9 +99,16 @@ function getVisibleLayers(data) {
const allAppearances = [ const allAppearances = [
data.petAppearance, data.petAppearance,
...data.items.map((i) => i.appearanceOn), ...(data.items || []).map((i) => i.appearanceOn),
]; ].filter((a) => a);
const allLayers = allAppearances.map((a) => a.layers).flat(); let allLayers = allAppearances.map((a) => a.layers).flat();
// Clean up our data a bit, by ensuring only one layer per zone. This
// shouldn't happen in theory, but sometimes our database doesn't clean up
// after itself correctly :(
allLayers = allLayers.filter((l, i) => {
return allLayers.findIndex((l2) => l2.zone.id === l.zone.id) === i;
});
const allRestrictedZoneIds = allAppearances const allRestrictedZoneIds = allAppearances
.map((l) => l.restrictedZones) .map((l) => l.restrictedZones)

View file

@ -1,7 +1,7 @@
import React from "react"; import React from "react";
import { Box } from "@chakra-ui/core"; import { Box } from "@chakra-ui/core";
export function Delay({ children, ms = 500 }) { export function Delay({ children, ms = 300 }) {
const [isVisible, setIsVisible] = React.useState(false); const [isVisible, setIsVisible] = React.useState(false);
React.useEffect(() => { React.useEffect(() => {