diff --git a/client/src/api/ai.api.ts b/client/src/api/ai.api.ts index 0e20280d..8d083c2c 100644 --- a/client/src/api/ai.api.ts +++ b/client/src/api/ai.api.ts @@ -21,9 +21,5 @@ instanceForAi.interceptors.request.use((config: InternalAxiosRequestConfig) => { }); export function AudioAiConvert(formData: FormData) { - return instanceForAi.post(`/ai/audio`, formData, { - headers: { - "Content-Type": "multipart/form-data", - }, - }); + return instanceForAi.post(`/ai/audio`, formData); } diff --git a/client/src/components/MindMapMainSection/ControlSection/TextUpload.tsx b/client/src/components/MindMapMainSection/ControlSection/TextUpload.tsx index 14c800b4..06099061 100644 --- a/client/src/components/MindMapMainSection/ControlSection/TextUpload.tsx +++ b/client/src/components/MindMapMainSection/ControlSection/TextUpload.tsx @@ -12,8 +12,6 @@ import { createPortal } from "react-dom"; export default function TextUpload() { const { content, updateContent, availabilityInform, handleMouseEnter, handleMouseLeave, errorMsg, updateErrorMsg } = useUpload(); - const role = useConnectionStore((state) => state.currentRole); - const ownerAvailability = role === "owner"; const handleSocketEvent = useConnectionStore((state) => state.handleSocketEvent); const { open, openModal, closeModal } = useModal(); @@ -26,7 +24,8 @@ export default function TextUpload() { } function handleAiProcessButton() { - if (!textUploadValidation() || !ownerAvailability) return; + if (availabilityInform) return; + if (!textUploadValidation()) return; updateErrorMsg(""); handleSocketEvent({ actionType: "aiRequest", payload: { aiContent: content } }); } diff --git a/client/src/components/MindMapMainSection/ControlSection/UploadBox.tsx b/client/src/components/MindMapMainSection/ControlSection/UploadBox.tsx index cfc26f67..b40c77d1 100644 --- a/client/src/components/MindMapMainSection/ControlSection/UploadBox.tsx +++ b/client/src/components/MindMapMainSection/ControlSection/UploadBox.tsx @@ -53,7 +53,6 @@ export default function UploadBox({ file, setFile }: UploadBoxProps) { setIsDragging(false); }; - //TODO : 머시기 확장자에서 나중에 정확히 확장자 표기하기 return (
state.handleSocketEvent); const propagateError = useConnectionStore((state) => state.propagateError); + const [key, setKey] = useState(0); function fileValidation(file) { if (!file) { @@ -37,10 +38,10 @@ export default function VoiceFileUpload() { } async function sendAudioFile() { + if (availabilityInform) return; if (!fileValidation(file)) return; updateErrorMsg(""); handleSocketEvent({ actionType: "audioAiRequest" }); - try { const mindMapId = await getMindMapByConnectionId(connectionId); const formData = audioFormData(file, mindMapId, connectionId); @@ -50,29 +51,26 @@ export default function VoiceFileUpload() { } finally { updateLoadingStatus({ type: "aiPending", status: false }); setFile(null); + setKey((prev) => prev + 1); } } return ( - <> -
- -

AI 변환 남은 횟수 : {aiCount}번

-
- - {errorMsg &&

{errorMsg}

} -
-
- clovaX -
+
+ +

AI 변환 남은 횟수 : {aiCount}번

+
+ + {errorMsg &&

{errorMsg}

} +
{createPortal( , diff --git a/client/src/store/NodeListProvider.tsx b/client/src/store/NodeListProvider.tsx index 6df54d8e..33a57668 100644 --- a/client/src/store/NodeListProvider.tsx +++ b/client/src/store/NodeListProvider.tsx @@ -167,6 +167,7 @@ export default function NodeListProvider({ children }: { children: ReactNode }) initializeAiCount, loadingStatus, stage, + updateLoadingStatus, }} > {children}