Skip to content

Commit 0b1a71e

Browse files
committed
API수정
1 parent 101edc1 commit 0b1a71e

1 file changed

Lines changed: 29 additions & 88 deletions

File tree

src/components/ide/IDE.jsx

Lines changed: 29 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -143,20 +143,14 @@ const IDE = () => {
143143
// 비회원이면 API 호출 안함
144144
if (!isLoggedIn) return;
145145

146-
try {
147-
// 단순한 API 호출로 변경
148-
const response = await fetch('http://localhost:4000/api/files');
149-
150-
if (!response.ok) {
151-
throw new Error('파일 목록 불러오기 실패');
152-
}
153-
154-
const files = await response.json();
155-
setSavedFiles(files);
156-
} catch (error) {
157-
console.error('파일 목록 불러오기 오류:', error);
158-
// 오류 시 기본 파일 목록 유지
159-
}
146+
// 임시 로컬 파일 목록 사용
147+
const localFiles = [
148+
{ name: "untitled.py", code: '# 여기에 코드를 입력하세요' },
149+
{ name: "example.py", code: 'print("Hello, World!")' },
150+
{ name: "test.js", code: 'console.log("Testing JavaScript");' }
151+
];
152+
153+
setSavedFiles(localFiles);
160154
};
161155

162156
// 회원 상태가 변경될 때 파일 목록 갱신
@@ -218,19 +212,25 @@ const IDE = () => {
218212
// 현재 에디터의 값을 가져옴
219213
const currentCode = editorRef.current.getValue();
220214

221-
// API 호출 - HTML 예시에서 본 엔드포인트 사용
215+
// HTML 예시처럼 API 호출
222216
const response = await fetch('http://localhost:4000/api/run', {
223217
method: 'POST',
224218
headers: {
225219
'Content-Type': 'application/json',
226220
},
227221
body: JSON.stringify({
228222
code: currentCode,
229-
lang: selectedLanguage, // HTML 예시에서는 'lang'으로 전송
223+
lang: selectedLanguage,
230224
input: input
231225
}),
232226
});
233227

228+
console.log('보내는 데이터:', JSON.stringify({
229+
code: currentCode,
230+
lang: selectedLanguage,
231+
input: input
232+
}));
233+
234234
if (!response.ok) {
235235
throw new Error('API 호출 실패');
236236
}
@@ -298,7 +298,7 @@ const IDE = () => {
298298
};
299299

300300
// 파일 저장 함수
301-
const handleSave = async () => {
301+
const handleSave = () => {
302302
// 비회원은 로그인 유도
303303
if (!isLoggedIn) {
304304
alert("로그인 후 이용 가능한 기능입니다.");
@@ -309,27 +309,6 @@ const IDE = () => {
309309
// 현재 에디터의 값을 가져옴
310310
const currentCode = editorRef.current.getValue();
311311

312-
// API 호출
313-
const response = await fetch('http://localhost:4000/api/save', {
314-
method: 'POST',
315-
headers: {
316-
'Content-Type': 'application/json',
317-
},
318-
body: JSON.stringify({
319-
code: currentCode,
320-
fileName: fileName,
321-
language: selectedLanguage
322-
}),
323-
});
324-
325-
if (!response.ok) {
326-
throw new Error('파일 저장 실패');
327-
}
328-
329-
// 저장 성공
330-
setIsSaved(true);
331-
setCode(currentCode);
332-
333312
// 로컬 상태 업데이트
334313
const existingFileIndex = savedFiles.findIndex((file) => file.name === fileName);
335314

@@ -343,76 +322,38 @@ const IDE = () => {
343322
setSavedFiles([...savedFiles, { name: fileName, code: currentCode }]);
344323
}
345324

325+
setIsSaved(true);
326+
setCode(currentCode);
346327
toast("파일이 저장되었습니다.");
347328
} catch (error) {
348329
console.error('파일 저장 중 오류:', error);
349-
350-
// API 오류 시 로컬만 업데이트
351-
const currentCode = editorRef.current.getValue();
352-
const existingFileIndex = savedFiles.findIndex((file) => file.name === fileName);
353-
354-
if (existingFileIndex >= 0) {
355-
// 기존 파일 업데이트
356-
const updatedFiles = [...savedFiles];
357-
updatedFiles[existingFileIndex] = { name: fileName, code: currentCode };
358-
setSavedFiles(updatedFiles);
359-
} else {
360-
// 새 파일 추가
361-
setSavedFiles([...savedFiles, { name: fileName, code: currentCode }]);
362-
}
363-
364-
setIsSaved(true);
365-
setCode(currentCode);
366-
toast("API 연결 실패. 임시로 저장되었습니다.");
330+
toast("저장 중 오류가 발생했습니다.");
367331
}
368332
};
369333

370334
// 파일 선택 함수
371-
const handleFileSelect = async (name) => {
335+
const handleFileSelect = (name) => {
372336
// 현재 파일에 변경사항이 있으면 저장
373337
if (!isSaved) {
374338
const shouldSave = window.confirm('변경 사항을 저장하시겠습니까?');
375339
if (shouldSave) {
376-
await handleSave();
340+
handleSave();
377341
}
378342
}
379343

380-
try {
381-
// API에서 파일 내용 불러오기
382-
const response = await fetch(`http://localhost:4000/api/files/${name}`);
383-
384-
if (!response.ok) {
385-
throw new Error('파일 불러오기 실패');
386-
}
387-
388-
const fileData = await response.json();
389-
setFileName(fileData.name);
390-
setCode(fileData.code);
391-
setActiveFile(fileData.name);
344+
// 로컬 상태에서 파일 찾기
345+
const selectedFile = savedFiles.find((file) => file.name === name);
346+
if (selectedFile) {
347+
setFileName(selectedFile.name);
348+
setCode(selectedFile.code);
349+
setActiveFile(selectedFile.name);
392350
setIsSaved(true);
393351

394352
// 파일 확장자에 맞는 언어 설정
395-
const langId = getLanguageFromFileName(fileData.name);
353+
const langId = getLanguageFromFileName(selectedFile.name);
396354
if (langId) {
397355
setSelectedLanguage(langId);
398356
}
399-
} catch (error) {
400-
console.error('파일 불러오기 오류:', error);
401-
402-
// API 호출 실패 시 로컬 상태에서 불러오기 시도
403-
const selectedFile = savedFiles.find((file) => file.name === name);
404-
if (selectedFile) {
405-
setFileName(selectedFile.name);
406-
setCode(selectedFile.code);
407-
setActiveFile(selectedFile.name);
408-
setIsSaved(true);
409-
410-
// 파일 확장자에 맞는 언어 설정
411-
const langId = getLanguageFromFileName(selectedFile.name);
412-
if (langId) {
413-
setSelectedLanguage(langId);
414-
}
415-
}
416357
}
417358
};
418359

0 commit comments

Comments
 (0)