import React, {useState} from 'react' import {useLoaderData, useNavigate, useParams} from "react-router-dom"; import {OverlayTrigger, Spinner, Toast, ToastContainer} from "react-bootstrap"; import {Karakter2E} from "../domain-models/karakter2E"; import Tulajdonsagok2E from "../components/Tulajdonsagok2E"; import OsztalySelector2E from "../components/OsztalySelector2E"; import {Osztaly2E} from "../domain-models/osztaly2E"; import KarakterKepzettsegek from "../components/Kepzettsegek2E"; import MasodlagosErtekek from "../components/MasodlagosErtekek"; import Felszereles from "../components/Felszereles"; import LevelUps from "../components/LevelUps"; import {LevelDown, LevelUp} from "../domain-models/szintlepes"; import HarcosFegyverSpecializacio from "../components/HarcosFegyverSpec"; import saveOverlayTooltip from "../../first-edition/components/SaveOverlayTooltip"; import {StoreNewCharacter2E, UpdateCharacter2E} from "../api/character.api"; import {Faro} from "@grafana/faro-web-sdk"; import {CreatePDF} from "../pdf/character.pdf"; import {KarakterInputToPdfView} from "../pdf/karakter_pdf_view"; import {useDispatch, useSelector} from "react-redux"; import {AppDispatch, RootState} from "../../store"; import {userSelector} from "../../shared/domain-models/userSlice"; import {SaveModal} from "../../shared/components/SaveModal"; import {characterSelector, setCharacter} from "../domain-models/characterSlice"; import Szarmazas from "../components/Szarmazas"; import Varazslatok from "../components/Varazslatok"; function CreateCharacter2E(props: { faro?: Faro }) { const {faro} = props const { id } = useParams(); const fetchedUser = useSelector.withTypes()(userSelector); const loaderData = useLoaderData() as Karakter2E & { isPublic: boolean } | undefined; const dispatch = useDispatch.withTypes()() const initialIsPublic = loaderData?.isPublic ?? fetchedUser?.email == null; const navigate = useNavigate(); const karakter = useSelector.withTypes()(characterSelector) const setKarakter = (newState: Karakter2E) => dispatch(setCharacter(newState)); let [showSaveModal, setShowSaveModal] = useState(false); let [newId, setNewId] = useState(null as string | null) let [showSaved, setShowSaved] = useState(false); let [isPDFRendering, setIsPDFRendering] = useState(false) let [isSaving, setIsSaving] = useState(false) let [isPublic, setIsPublic] = useState(initialIsPublic); const newCharacterUrl = () => `${window.location.origin}/2e/karakter/${newId}` const handleSaveModalCopyAndClose = async () => { await navigator.clipboard.writeText(newCharacterUrl()); handleSaveModalClose() } const handleSaveModalClose = () => { setShowSaveModal(false); navigate(`/2e/karakter/${newId}`) } const hideSaved = () => setShowSaved(false); const onSaveClicked = async () => { setIsSaving(true); faro?.api.pushEvent('character_stored', { osztaly: karakter.szintlepesek[0].osztaly.toString(), szint: karakter.szint.toString(), faj: karakter.faj.toString(), is_public: isPublic.toString(), edition: "2e", }) if (id == null) { let recievedId = await StoreNewCharacter2E(karakter, isPublic); setNewId(recievedId) setIsSaving(false) setShowSaveModal(true); } else { await UpdateCharacter2E(id, karakter, isPublic); setIsSaving(false) setShowSaved(true); setTimeout(() => { hideSaved(); }, 5000) } } return

Karakter {!!id ? "szerkesztése" : "létrehozása"}

Karakter mentve!
event.preventDefault()}>

Származás



Tanult

{karakter.szintlepesek[0].osztaly === Osztaly2E.Harcos && }
{/* 1. szinten */}
{karakter.szint > 1 &&
}
{karakter.szint < 12 && } {karakter.szint > 1 && }


Véglegesítés
{fetchedUser.email != null &&
}
{fetchedUser.email == null ? : }
} export default CreateCharacter2E;