rune
Version:
CLI to upload your games to Rune
42 lines (41 loc) • 2.54 kB
JavaScript
import { Text, Box } from "ink";
import React, { useMemo } from "react";
import { gameDevItemLabel } from "../../lib/gameDevItemLabel.js";
export function Details({ game, me, }) {
const { gameDevs, gameDevMe } = useMemo(() => {
const gameDevs = game?.gameDevs.nodes;
const gameDevMe = gameDevs?.find((gameDev) => gameDev.userId === me?.devId);
return { gameDevs, gameDevMe };
}, [game, me?.devId]);
const { draftVersion, inReviewVersion, activeVersion } = useMemo(() => {
// gameVersions are already ordered by most recent first
// Hence .find will take the most recent per status
return {
draftVersion: game.gameVersions.nodes.find((n) => n.status === "DRAFT"),
inReviewVersion: game.gameVersions.nodes.find((n) => n.status === "IN_REVIEW"),
activeVersion: game.gameVersions.nodes.find((n) => n.status === "ACTIVE"),
};
}, [game.gameVersions.nodes]);
if (!game)
return React.createElement(React.Fragment, null);
return (React.createElement(Box, { flexDirection: "column" },
React.createElement(Box, { flexDirection: "column", borderStyle: "single" },
React.createElement(Text, { bold: true }, game.title)),
React.createElement(Box, { flexDirection: "column" },
React.createElement(DetailsRow, { name: "Description", value: game.description }),
React.createElement(DetailsRow, { name: "Team", value: gameDevs
?.map((gameDev) => gameDevItemLabel({ gameDev }))
.join(", ") }),
React.createElement(DetailsRow, { name: "Your role", value: gameDevMe ? gameDevMe.type : "PLAYER" }),
draftVersion &&
draftVersion.gameVersionId > (activeVersion?.gameVersionId ?? 0) && (React.createElement(DetailsRow, { name: "Draft version", value: draftVersion.gameVersionId.toString() })),
inReviewVersion &&
inReviewVersion.gameVersionId >
(activeVersion?.gameVersionId ?? 0) && (React.createElement(DetailsRow, { name: "Review version", value: inReviewVersion.gameVersionId.toString() })),
React.createElement(DetailsRow, { name: "Active version", value: activeVersion ? activeVersion.gameVersionId.toString() : "-" }))));
}
const DetailsRow = ({ name, value, }) => (React.createElement(Box, { flexDirection: "row" },
React.createElement(Text, { bold: true },
name,
": "),
React.createElement(Text, null, value)));