rune
Version:
CLI to upload your games to Rune
40 lines (39 loc) • 1.7 kB
JavaScript
import React, { useState, useCallback, useEffect, useMemo } from "react";
import { Select } from "../../components/Select.js";
import { Step } from "../../components/Step.js";
import { GameDevType } from "../../generated/types.js";
import { renderGameDevType } from "../../lib/renderGameDevType.js";
export function ChooseMemberTypeStep({ currentMemberType, onComplete, showRemove, }) {
const [memberType, setMemberType] = useState(GameDevType.TESTER);
const [submitted, setSubmitted] = useState(false);
useEffect(() => {
if (currentMemberType)
setMemberType(currentMemberType);
}, [currentMemberType]);
const items = useMemo(() => [
...(showRemove
? [
{
label: "REMOVE MEMBER",
value: null,
},
]
: []),
...Object.values(GameDevType)
.map((value) => ({
label: renderGameDevType(value),
value,
}))
.sort((i1, i2) => i1.label.localeCompare(i2.value)),
], [showRemove]);
const onSubmit = useCallback(() => {
setSubmitted(true);
onComplete(memberType);
}, [memberType, onComplete]);
const chosenMemberTypeLabel = useMemo(() => {
if (memberType === null)
return "REMOVE MEMBER";
return renderGameDevType(memberType);
}, [memberType]);
return (React.createElement(Step, { status: submitted ? "success" : "userInput", label: submitted ? chosenMemberTypeLabel : "Select a role", view: !submitted && (React.createElement(Select, { items: items, value: memberType, onChange: setMemberType, onSubmit: onSubmit })) }));
}