🔧 검색 미리보기 기능 수정

- API 호출 방식 개선 (fetch 직접 사용)
- HTML 응답에서 텍스트 추출 로직 추가
- 미리보기 모달 UX 개선 (ESC 키, 클릭으로 닫기)
- 내용 표시 최적화 (스크롤, 워드랩)
- 에러 처리 강화 (fallback to original content)
This commit is contained in:
Hyungi Ahn
2025-09-02 17:04:02 +09:00
parent 4329a1c9a6
commit 0afe6dcf65
2 changed files with 57 additions and 7 deletions

View File

@@ -215,15 +215,54 @@ window.searchApp = function() {
switch (result.type) {
case 'document':
// 문서 내용 API 호출
const docContent = await this.api.get(`/documents/${result.document_id}/content`);
content = docContent;
case 'document_content':
try {
// 문서 내용 API 호출 (HTML 응답)
const response = await fetch(`/api/documents/${result.document_id}/content`, {
headers: {
'Authorization': `Bearer ${localStorage.getItem('token')}`
}
});
if (response.ok) {
const htmlContent = await response.text();
// HTML에서 텍스트만 추출
const parser = new DOMParser();
const doc = parser.parseFromString(htmlContent, 'text/html');
content = doc.body.textContent || doc.body.innerText || '';
// 너무 길면 자르기
if (content.length > 2000) {
content = content.substring(0, 2000) + '...';
}
} else {
content = result.content;
}
} catch (err) {
console.warn('문서 내용 로드 실패, 기본 내용 사용:', err);
content = result.content;
}
break;
case 'note':
// 노트 내용 API 호출
const noteContent = await this.api.get(`/note-documents/${result.id}/content`);
content = noteContent;
try {
// 노트 내용 API 호출
const noteContent = await this.api.get(`/note-documents/${result.id}/content`);
content = noteContent;
} catch (err) {
console.warn('노트 내용 로드 실패, 기본 내용 사용:', err);
content = result.content;
}
break;
case 'memo':
try {
// 메모 노드 상세 정보 로드
const memoNode = await this.api.get(`/memo-trees/nodes/${result.id}`);
content = memoNode.content || result.content;
} catch (err) {
console.warn('메모 내용 로드 실패, 기본 내용 사용:', err);
content = result.content;
}
break;
default: