From 8ad7339448bdc5b6d5090a2f1144d0ba5d5920c3 Mon Sep 17 00:00:00 2001 From: chanx <1243304602@qq.com> Date: Mon, 9 Feb 2026 19:53:24 +0800 Subject: [PATCH] Fix: Add authentication validation to the document API interface for embedded pages. (#13078) ### What problem does this PR solve? Fix: Add authentication validation to the document API interface for embedded pages and modify the document display styles. ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- .../document-preview/image-preview.tsx | 16 +++++----- web/src/components/document-preview/index.tsx | 1 + .../document-preview/pdf-preview.tsx | 8 ++++- .../reference-document-list.tsx | 31 ++++++++++++++++--- web/src/hooks/use-document-request.ts | 10 ++++-- .../document-preview-modal/index.tsx | 5 ++- web/src/routes.tsx | 1 - web/src/utils/api.ts | 2 +- 8 files changed, 54 insertions(+), 20 deletions(-) diff --git a/web/src/components/document-preview/image-preview.tsx b/web/src/components/document-preview/image-preview.tsx index 3b922f58c2..484d716e33 100644 --- a/web/src/components/document-preview/image-preview.tsx +++ b/web/src/components/document-preview/image-preview.tsx @@ -51,7 +51,7 @@ export const ImagePreviewer: React.FC = ({ return (
@@ -62,14 +62,12 @@ export const ImagePreviewer: React.FC = ({ )} {!isLoading && imageSrc && ( -
- {'image'} URL.revokeObjectURL(imageSrc!)} - /> -
+ {'image'} URL.revokeObjectURL(imageSrc!)} + /> )}
); diff --git a/web/src/components/document-preview/index.tsx b/web/src/components/document-preview/index.tsx index 334cae4511..62a9078c43 100644 --- a/web/src/components/document-preview/index.tsx +++ b/web/src/components/document-preview/index.tsx @@ -27,6 +27,7 @@ const Preview = ({ {fileType === 'pdf' && highlights && setWidthAndHeight && (
{}; useEffect(() => { + let timer = null; if (state?.length && state?.length > 0) { - ref?.current(state[0]); + timer = setTimeout(() => { + ref?.current(state[0]); + }, 100); } + return () => { + if (timer) clearTimeout(timer); + }; }, [state]); const httpHeaders = { diff --git a/web/src/components/next-message-item/reference-document-list.tsx b/web/src/components/next-message-item/reference-document-list.tsx index 65a4a613bc..cf1cff06f8 100644 --- a/web/src/components/next-message-item/reference-document-list.tsx +++ b/web/src/components/next-message-item/reference-document-list.tsx @@ -1,17 +1,27 @@ import { Card, CardContent } from '@/components/ui/card'; +import { useSetModalState } from '@/hooks/common-hooks'; import { Docagg } from '@/interfaces/database/chat'; +import PdfDrawer from '@/pages/next-search/document-preview-modal'; import { middleEllipsis } from '@/utils/common-util'; +import { useState } from 'react'; import FileIcon from '../file-icon'; -import NewDocumentLink from '../new-document-link'; export function ReferenceDocumentList({ list }: { list: Docagg[] }) { + const { visible, showModal, hideModal } = useSetModalState(); + const [selectedDocument, setSelectedDocument] = useState(); return (
{list.map((item) => ( - + { + setSelectedDocument(item); + showModal(); + }} + > - {middleEllipsis(item.doc_name)} - + */} +
+ {middleEllipsis(item.doc_name)} +
))} + {visible && selectedDocument && ( + + )}
); } diff --git a/web/src/hooks/use-document-request.ts b/web/src/hooks/use-document-request.ts index 22fd1dc5bd..9075e50b10 100644 --- a/web/src/hooks/use-document-request.ts +++ b/web/src/hooks/use-document-request.ts @@ -16,7 +16,8 @@ import { import i18n from '@/locales/config'; import { EMPTY_METADATA_FIELD } from '@/pages/dataset/dataset/use-select-filters'; import kbService, { listDocument } from '@/services/knowledge-service'; -import api, { api_host } from '@/utils/api'; +import api, { api_host, ExternalApi } from '@/utils/api'; +import { getSearchValue } from '@/utils/common-util'; import { buildChunkHighlights } from '@/utils/document-util'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useDebounce } from 'ahooks'; @@ -464,11 +465,14 @@ export const useCreateDocument = () => { }; export const useGetDocumentUrl = (documentId?: string) => { + const auth = getSearchValue('auth'); const getDocumentUrl = useCallback( (id?: string) => { - return `${api_host}/document/get/${documentId || id}`; + return auth + ? `${ExternalApi}/v1/documents/${documentId || id}` + : `${api_host}/document/get/${documentId || id}`; }, - [documentId], + [documentId, auth], ); return getDocumentUrl; diff --git a/web/src/pages/next-search/document-preview-modal/index.tsx b/web/src/pages/next-search/document-preview-modal/index.tsx index 00da5a8d7a..a4ac31e6c6 100644 --- a/web/src/pages/next-search/document-preview-modal/index.tsx +++ b/web/src/pages/next-search/document-preview-modal/index.tsx @@ -8,6 +8,7 @@ import { import { IModalProps } from '@/interfaces/common'; import { IReferenceChunk } from '@/interfaces/database/chat'; import { IChunk } from '@/interfaces/database/knowledge'; +import { cn } from '@/lib/utils'; import { useEffect, useState } from 'react'; interface IProps extends IModalProps { @@ -54,7 +55,9 @@ const PdfDrawer = ({ showfooter={false} >