diff --git a/src/pages/ChatPage.jsx b/src/pages/ChatPage.jsx index 6d50111..9946539 100644 --- a/src/pages/ChatPage.jsx +++ b/src/pages/ChatPage.jsx @@ -4,6 +4,7 @@ import DevChatInput from '../tools/dev_chatbot/ChatInput.jsx'; import { marked } from 'marked'; marked.setOptions({ mangle:false, headerIds:false }); import { fetchOpenAIChat, fetchOpenAIImage, classifyRequest } from '../services/openaiService'; +import { useAuth } from '../context/AuthContext'; import { API_BASE_URL } from '../config'; // === Chat History Panel 컴포넌트 추가 === @@ -100,6 +101,7 @@ function FileSidebar() { export default function ChatPage() { const { selectedTool } = useTool(); + const { user } = useAuth(); const [messages, setMessages] = useState(() => { try { const toolIdInitial = selectedTool?.id || 'chatgpt'; @@ -171,6 +173,10 @@ export default function ChatPage() { } const sendMessage = async () => { + if (!user) { + alert('로그인이 필요합니다'); + return; + } if (!input.trim()) return; const userMsg = { type: 'user', content: input.trim(), time: new Date().toLocaleTimeString() }; setMessages((prev) => [...prev, userMsg]); @@ -429,6 +435,7 @@ function DocTranslationSidebar() { } function DocTranslationChat() { + const { user } = useAuth(); const { selectedTool } = useTool(); const [messages, setMessages] = useState([]); const [input, setInput] = useState(''); @@ -450,6 +457,10 @@ function DocTranslationChat() { }, [messages]); const sendMessage = async () => { + if (!user) { + alert('로그인이 필요합니다'); + return; + } if (!input.trim()) return; const userMsg = { type: 'user', content: input.trim(), time: new Date().toLocaleTimeString() }; setMessages((prev) => [...prev, userMsg, { type: 'loading', start: Date.now() }]); diff --git a/src/tools/dev_chatbot/ChatInput.jsx b/src/tools/dev_chatbot/ChatInput.jsx index f47a01b..a935c32 100644 --- a/src/tools/dev_chatbot/ChatInput.jsx +++ b/src/tools/dev_chatbot/ChatInput.jsx @@ -1,11 +1,13 @@ import React, { useState, useRef, useEffect } from 'react'; import { ChatHandler } from './ChatHandler'; import { useTool } from '../../context/ToolContext'; +import { useAuth } from '../../context/AuthContext'; import { marked } from 'marked'; marked.setOptions({ mangle:false, headerIds:false }); export default function DevChatInput() { const { selectedTool } = useTool(); + const { user } = useAuth(); const [inputText, setInputText] = useState(''); const inputRef = useRef(null); const [selectedFiles, setSelectedFiles] = useState([]); @@ -40,6 +42,10 @@ export default function DevChatInput() { const handleFileRemove = (idx) => setSelectedFiles((prev) => prev.filter((_, i) => i !== idx)); const handleSend = async () => { + if (!user) { + alert('로그인이 필요합니다'); + return; + } if (!inputText && selectedFiles.length === 0) return; setLoading(true); const userMessage = { text: inputText, files: selectedFiles, sender: 'user', time: new Date().toLocaleTimeString() };