import { Box, Button, Container, TextField, Typography, Paper, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, FormControlLabel, Checkbox } from '@mui/material' import { useEffect, useState } from 'react' import { useNavigate, useParams } from 'react-router-dom' import api from '../lib/api' export default function CharacterEditPage() { const { id } = useParams() const navigate = useNavigate() const [name, setName] = useState('') const [server, setServer] = useState('') const [combatPower, setCombatPower] = useState('') const [isPublic, setIsPublic] = useState(false) const [error, setError] = useState('') const [openConfirm, setOpenConfirm] = useState(false) useEffect(() => { api.get(`/characters/${id}`) .then(res => { setName(res.data.name) setServer(res.data.server || '') setCombatPower(String(res.data.combat_power || '')) setIsPublic(Boolean(res.data.is_public)) }) .catch(() => setError('캐릭터 정보를 불러오는 데 실패했습니다.')) }, [id]) const handleUpdate = async () => { try { await api.put(`/characters/${id}`, { name, server, power: Number(combatPower), is_public: isPublic, }) navigate('/characters') } catch { setError('캐릭터 수정에 실패했습니다.') } } const handleDelete = async () => { try { await api.delete(`/characters/${id}`) navigate('/characters') } catch { setError('캐릭터 삭제에 실패했습니다.') } } return ( 캐릭터 수정 setName(e.target.value)} fullWidth /> setServer(e.target.value)} fullWidth /> setCombatPower(e.target.value)} fullWidth type="number" /> setIsPublic(e.target.checked)} />} label="친구에게 노출" /> {error && {error}} setOpenConfirm(false)} > 삭제 확인 정말 이 캐릭터를 삭제하시겠습니까? ) }