import { cloneDeep, pull, sortBy } from "lodash" import React, { memo, useCallback, useEffect, useState } from "react" import classnames from "classnames" import styles from "./styles.module.scss" import { DetailedBox } from "../../services/boxes" import { VolunteerKnowledge, VolunteerKnowledgeWithoutId } from "../../services/volunteers" interface Props { detailedBox: DetailedBox volunteerKnowledge: VolunteerKnowledge | undefined saveVolunteerKnowledge: (newVolunteerKnowledge: VolunteerKnowledge) => void } const BoxItem: React.FC = ({ detailedBox, volunteerKnowledge, saveVolunteerKnowledge, }): JSX.Element => { type ChoiceValue = keyof VolunteerKnowledgeWithoutId | "unknown" const [choice, setChoice] = useState("unknown") // const discordInvitation = useSelector(selectMiscDiscordInvitation) const { gameId, bggPhoto, title, bggId, poufpaf } = detailedBox const knowledgeChoices: { name: string; value: ChoiceValue }[] = [ { name: "?", value: "unknown" }, { name: "OK", value: "ok" }, { name: "Bof", value: "bof" }, { name: "Niet", value: "niet" }, ] useEffect(() => { if (!volunteerKnowledge) return let providedchoice = "unknown" if (volunteerKnowledge.ok.includes(gameId)) providedchoice = "ok" if (volunteerKnowledge.bof.includes(gameId)) providedchoice = "bof" if (volunteerKnowledge.niet.includes(gameId)) providedchoice = "niet" setChoice(providedchoice) }, [gameId, setChoice, volunteerKnowledge]) const onChoiceClick = useCallback( (value: ChoiceValue) => { if (!volunteerKnowledge) return const newVolunteerKnowledge: VolunteerKnowledge = cloneDeep(volunteerKnowledge) pull(newVolunteerKnowledge.ok, gameId) pull(newVolunteerKnowledge.bof, gameId) pull(newVolunteerKnowledge.niet, gameId) if (value !== "unknown") { newVolunteerKnowledge[value] = sortBy([...newVolunteerKnowledge[value], gameId]) } saveVolunteerKnowledge(newVolunteerKnowledge) }, [volunteerKnowledge, gameId, saveVolunteerKnowledge] ) return (
  • {title}
  • ) } export default memo(BoxItem)