import ChevronRightIcon from "@mui/icons-material/ChevronRight"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button"; import Card from "@mui/material/Card"; import CardActionArea from "@mui/material/CardActionArea"; import CardActions from "@mui/material/CardActions"; import Typography from "@mui/material/Typography"; import { useState } from "react"; import { useSelector } from "react-redux"; import { MaxCharactersDialog } from "~/components/MaxCharactersDialog"; import { useAuth } from "~/contexts/Authentication"; import { useClaimCharacter } from "~/hooks/useClaimCharacter"; import backgroundImage from "~/images/claim.png"; import { appEnvSelectors } from "~/tools/js/Shared/selectors"; import { DESKTOP_COMPONENT_START_WIDTH, TABLET_COMPONENT_START_WIDTH, } from "../../config"; import ClaimConfirmationDialog from "../WatchTourDialog/ClaimConfirmationDialog"; const renderButtonContent = (signedIn: boolean) => ( {!signedIn && ( Create Account to )} Claim Character ); // z-index of the sidebar controls const zIndex = 60002; const createAccountLink = `/create-account?returnUrl=${window.location.pathname}`; const ClaimPremadeButton: React.FC = () => { const params = new URLSearchParams(globalThis.location.search); const campaignJoinCode = params.get("campaignJoinCode"); const isAssigned = params.get("isAssigned") === "false" ? false : true; const [isMaxCharacterMessageOpen, setIsMaxCharacterMessageOpen] = useState(false); const envDimensions = useSelector(appEnvSelectors.getDimensions); const { characterSlotLimit, activeCharacterCount } = useSelector( appEnvSelectors.getCharacterSlots ); // Character slot limit is null for admin accounts const hasOpenSlot = characterSlotLimit === null || activeCharacterCount < characterSlotLimit; const [ claimCharacter, isClaimingCharacter, isFinishedClaimingCharacter, newCharacterId, campaignId, ] = useClaimCharacter({ campaignJoinCode, isAssigned, }); const user = useAuth(); const signedIn = !!user; const handleClaimButtonClick = () => { hasOpenSlot ? claimCharacter() : setIsMaxCharacterMessageOpen(true); }; return ( <> {envDimensions.window.width >= TABLET_COMPONENT_START_WIDTH ? ( ) : ( )} setIsMaxCharacterMessageOpen(false)} useMyCharactersLink /> {isFinishedClaimingCharacter && !!newCharacterId && ( )} ); }; export default ClaimPremadeButton;