From 9792cd37223cc42317ddddb04fd84ca27af7dd3f Mon Sep 17 00:00:00 2001 From: ddingjoo Date: Tue, 6 Jan 2026 19:14:57 +0900 Subject: [PATCH] =?UTF-8?q?[FIX]=20=EC=B1=84=ED=8C=85=20=EB=AA=A8=EB=8B=AC?= =?UTF-8?q?=20=EC=B5=9C=EC=86=8C=ED=99=94=20=EC=8B=9C=20=EC=9A=B0=EC=B8=A1?= =?UTF-8?q?=20=ED=95=98=EB=8B=A8=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 최소화 시 현재 위치 저장 후 우측 하단으로 자동 이동 - 최대화 시 저장된 위치로 복원 Closes #47 --- .../freetalk/components/ChatRoomModal.jsx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/domains/freetalk/components/ChatRoomModal.jsx b/src/domains/freetalk/components/ChatRoomModal.jsx index aa7f209..49ace7b 100644 --- a/src/domains/freetalk/components/ChatRoomModal.jsx +++ b/src/domains/freetalk/components/ChatRoomModal.jsx @@ -40,6 +40,7 @@ const ChatRoomModal = ({ open, onClose, room, onLeave }) => { const [playingTTS, setPlayingTTS] = useState(null) const [minimized, setMinimized] = useState(false) const [position, setPosition] = useState({ x: 0, y: 0 }) + const [savedPosition, setSavedPosition] = useState({ x: 0, y: 0 }) const [isDragging, setIsDragging] = useState(false) const [dragOffset, setDragOffset] = useState({ x: 0, y: 0 }) // 메시지 목록 조회 @@ -192,6 +193,19 @@ const ChatRoomModal = ({ open, onClose, room, onLeave }) => { } } + // 최소화/최대화 토글 + const handleToggleMinimize = () => { + if (!minimized) { + // 최소화: 현재 위치 저장 후 우측 하단으로 이동 + setSavedPosition(position) + setPosition({ x: 0, y: 0 }) + } else { + // 최대화: 저장된 위치로 복원 + setPosition(savedPosition) + } + setMinimized(!minimized) + } + // 채팅방 퇴장 const handleLeaveRoom = async () => { try { @@ -269,7 +283,7 @@ const ChatRoomModal = ({ open, onClose, room, onLeave }) => { - setMinimized(!minimized)} sx={{ color: 'white' }} title={minimized ? '최대화' : '최소화'}> + {minimized ? : }