diff --git a/src/pages/CharacterEditPage.tsx b/src/pages/CharacterEditPage.tsx index 8986223..a1346cb 100644 --- a/src/pages/CharacterEditPage.tsx +++ b/src/pages/CharacterEditPage.tsx @@ -9,7 +9,9 @@ import { DialogActions, DialogContent, DialogContentText, - DialogTitle + DialogTitle, + FormControlLabel, + Checkbox } from '@mui/material' import { useEffect, useState } from 'react' import { useNavigate, useParams } from 'react-router-dom' @@ -22,6 +24,7 @@ export default function CharacterEditPage() { 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) @@ -31,6 +34,7 @@ export default function CharacterEditPage() { setName(res.data.name) setServer(res.data.server || '') setCombatPower(String(res.data.combat_power || '')) + setIsPublic(Boolean(res.data.is_public)) }) .catch(() => setError('캐릭터 정보를 불러오는 데 실패했습니다.')) }, [id]) @@ -40,7 +44,8 @@ export default function CharacterEditPage() { await api.put(`/characters/${id}`, { name, server, - combat_power: Number(combatPower) + combat_power: Number(combatPower), + is_public: isPublic }) navigate('/characters') } catch { @@ -82,6 +87,10 @@ export default function CharacterEditPage() { fullWidth type="number" /> + setIsPublic(e.target.checked)} />} + label="친구에게 노출" + /> {error && {error}} diff --git a/src/pages/HomeworkEditPage.tsx b/src/pages/HomeworkEditPage.tsx index d535279..94bc55b 100644 --- a/src/pages/HomeworkEditPage.tsx +++ b/src/pages/HomeworkEditPage.tsx @@ -1,6 +1,7 @@ import { Box, Button, Container, Paper, TextField, Typography, MenuItem, - Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions + Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, + FormControlLabel, Checkbox } from '@mui/material' import { useEffect, useState } from 'react' import { useParams, useNavigate } from 'react-router-dom' @@ -14,6 +15,7 @@ export default function HomeworkEditPage() { const [description, setDescription] = useState('') const [resetType, setResetType] = useState('') const [clearCount, setClearCount] = useState('') + const [isPublic, setIsPublic] = useState(false) const [error, setError] = useState('') const [openConfirm, setOpenConfirm] = useState(false) @@ -25,6 +27,7 @@ export default function HomeworkEditPage() { setDescription(hw.description || '') setResetType(hw.reset_type) setClearCount(String(hw.clear_count || '')) + setIsPublic(Boolean(hw.is_public)) }) .catch(() => setError('숙제 정보를 불러오는 데 실패했습니다.')) }, [id]) @@ -35,7 +38,8 @@ export default function HomeworkEditPage() { name: title, // ✅ title → name description, repeat_type: resetType, // ✅ reset_type → repeat_type - repeat_count: Number(clearCount) // ✅ clear_count → repeat_count + repeat_count: Number(clearCount), // ✅ clear_count → repeat_count + is_public: isPublic }) navigate('/homeworks') } catch { @@ -89,6 +93,10 @@ export default function HomeworkEditPage() { type="number" fullWidth /> + setIsPublic(e.target.checked)} />} + label="친구에게 노출" + /> {error && {error}} diff --git a/src/pages/RegisterCharacter.tsx b/src/pages/RegisterCharacter.tsx index a4d4093..731f02e 100644 --- a/src/pages/RegisterCharacter.tsx +++ b/src/pages/RegisterCharacter.tsx @@ -1,4 +1,4 @@ -import { Box, Button, Container, Paper, TextField, Typography } from '@mui/material' +import { Box, Button, Container, Paper, TextField, Typography, FormControlLabel, Checkbox } from '@mui/material' import { useState } from 'react' import api from '../lib/api' import { useNavigate } from 'react-router-dom' @@ -8,6 +8,7 @@ export default function RegisterCharacter() { const [server, setServer] = useState('') const [job, setJob] = useState('') const [power, setPower] = useState('') + const [isPublic, setIsPublic] = useState(false) const navigate = useNavigate() const handleSubmit = async () => { @@ -22,6 +23,7 @@ export default function RegisterCharacter() { server: server || undefined, job: job || undefined, combat_power: power ? parseInt(power, 10) : undefined, + is_public: isPublic, }) alert('캐릭터가 성공적으로 등록되었습니다.') navigate('/characters') @@ -64,6 +66,10 @@ export default function RegisterCharacter() { onChange={(e) => setPower(e.target.value)} fullWidth /> + setIsPublic(e.target.checked)} />} + label="친구에게 노출" + /> diff --git a/src/pages/RegisterHomework.tsx b/src/pages/RegisterHomework.tsx index a6a405e..99b1dee 100644 --- a/src/pages/RegisterHomework.tsx +++ b/src/pages/RegisterHomework.tsx @@ -4,7 +4,9 @@ import { Button, Typography, MenuItem, - Container + Container, + FormControlLabel, + Checkbox } from '@mui/material' import { useState } from 'react' import { useNavigate } from 'react-router-dom' @@ -15,6 +17,7 @@ export default function RegisterHomework() { const [description, setDescription] = useState('') const [resetType, setResetType] = useState('') const [clearCount, setClearCount] = useState(0) + const [isPublic, setIsPublic] = useState(false) const [error, setError] = useState('') const navigate = useNavigate() @@ -26,6 +29,7 @@ export default function RegisterHomework() { description, reset_type: resetType, clear_count: clearCount, + is_public: isPublic, }) navigate('/homeworks') } catch (err) { @@ -74,6 +78,10 @@ export default function RegisterHomework() { value={clearCount} onChange={(e) => setClearCount(parseInt(e.target.value) || 0)} /> + setIsPublic(e.target.checked)} />} + label="친구에게 노출" + /> {error && {error}}