diff --git a/web/features/new-rag/__tests__/document-detail-page.spec.tsx b/web/features/new-rag/__tests__/document-detail-page.spec.tsx index e09294f0ed8..682cbbd8f38 100644 --- a/web/features/new-rag/__tests__/document-detail-page.spec.tsx +++ b/web/features/new-rag/__tests__/document-detail-page.spec.tsx @@ -1882,22 +1882,7 @@ describe('DocumentDetailPage', () => { expect(chunksQuery.refetch).toHaveBeenCalledOnce() }) - it('loads older revisions and always includes the active revision in the selector', async () => { - const user = userEvent.setup() - revisionsQuery.data = { pages: [{ items: [activeRevision({ revision: 2 })] }] } - revisionsQuery.hasNextPage = true - - render() - - await user.click( - screen.getByRole('combobox', { name: 'dataset.newKnowledge.documentRevision' }), - ) - expect(await screen.findByRole('option', { name: /v3/ })).toBeInTheDocument() - await user.click(screen.getByRole('button', { name: 'dataset.newKnowledge.loadMoreRevisions' })) - expect(revisionsQuery.fetchNextPage).toHaveBeenCalledOnce() - }) - - it('restores the selected revision from the URL', () => { + it('uses a revision from the URL without exposing revision controls', () => { revisionsQuery.data = { pages: [{ items: [activeRevision({ revision: 2, state: 'superseded' })] }], } @@ -1907,8 +1892,8 @@ describe('DocumentDetailPage', () => { }) expect( - screen.getByRole('combobox', { name: 'dataset.newKnowledge.documentRevision' }), - ).toHaveTextContent('v2') + screen.queryByRole('combobox', { name: 'dataset.newKnowledge.documentRevision' }), + ).not.toBeInTheDocument() expect(infiniteInput(chunksOptions.mock.lastCall?.[0])(null)).toEqual({ params: { control_space_id: 'space-1', @@ -1919,62 +1904,6 @@ describe('DocumentDetailPage', () => { }) }) - it('writes revision selection to browser history', async () => { - const user = userEvent.setup() - revisionsQuery.data = { - pages: [{ items: [activeRevision({ revision: 2, state: 'superseded' })] }], - } - const { onUrlUpdate } = render( - , - ) - - await user.click( - screen.getByRole('combobox', { name: 'dataset.newKnowledge.documentRevision' }), - ) - await user.click(await screen.findByRole('option', { name: /v2/ })) - - await waitFor(() => { - const urlUpdate = onUrlUpdate.mock.calls.at(-1)?.[0] - expect(urlUpdate?.searchParams.get('revision')).toBe('2') - expect(urlUpdate?.options.history).toBe('push') - }) - }) - - it('announces revision cursor errors and restores focus when the final page loads', async () => { - const user = userEvent.setup() - revisionsQuery.hasNextPage = true - const rendered = render( - , - ) - const loadMore = screen.getByRole('button', { - name: 'dataset.newKnowledge.loadMoreRevisions', - }) - - await user.click(loadMore) - revisionsQuery.isFetchingNextPage = true - rendered.rerender() - revisionsQuery.isFetchingNextPage = false - revisionsQuery.isFetchNextPageError = true - rendered.rerender() - expect(screen.getByRole('alert')).toHaveTextContent( - 'dataset.newKnowledge.documentRevisionsLoadError', - ) - expect(screen.getByRole('button', { name: 'common.operation.retry' })).toHaveFocus() - - await user.click(screen.getByRole('button', { name: 'common.operation.retry' })) - revisionsQuery.isFetchingNextPage = true - revisionsQuery.isFetchNextPageError = false - rendered.rerender() - revisionsQuery.isFetchingNextPage = false - revisionsQuery.hasNextPage = false - rendered.rerender() - await waitFor(() => - expect( - screen.getByRole('combobox', { name: 'dataset.newKnowledge.documentRevision' }), - ).toHaveFocus(), - ) - }) - it('finds a document task on later cursor pages and ignores stale revision tasks', async () => { tasksQuery.data = { pages: [{ items: [task({ documentId: 'another-document', id: 'another-task' })] }], diff --git a/web/features/new-rag/document-detail-header.tsx b/web/features/new-rag/document-detail-header.tsx index f74088b93b1..cff41aa66dc 100644 --- a/web/features/new-rag/document-detail-header.tsx +++ b/web/features/new-rag/document-detail-header.tsx @@ -1,16 +1,6 @@ import type { RefObject } from 'react' -import type { LogicalDocument, LogicalDocumentRevision } from './document-models' +import type { LogicalDocument } from './document-models' import { Button } from '@langgenius/dify-ui/button' -import { - Select, - SelectContent, - SelectItem, - SelectItemIndicator, - SelectItemText, - SelectLabel, - SelectTrigger, -} from '@langgenius/dify-ui/select' -import { useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' import Link from '@/next/link' @@ -19,59 +9,29 @@ export function DocumentDetailHeader({ canCancelReindex, cancelReindexBusy, document, - effectiveRevision, - fetchNextRevisionPage, - hasNextRevisionPage, - isFetchNextRevisionPageError, - isFetchingNextRevisionPage, onCancelReindex, onReindex, - onRevisionChange, reindexDisabled, reindexDisabledReasonId, reindexFailed, reindexInProgress, reindexing, - revisions, titleRef, }: { backPath: string canCancelReindex: boolean cancelReindexBusy: boolean document: LogicalDocument - effectiveRevision?: number - fetchNextRevisionPage: () => void - hasNextRevisionPage: boolean - isFetchNextRevisionPageError: boolean - isFetchingNextRevisionPage: boolean onCancelReindex: () => void onReindex: () => void - onRevisionChange: (revision: number) => void reindexDisabled: boolean reindexDisabledReasonId?: string reindexFailed: boolean reindexInProgress: boolean reindexing: boolean - revisions: Array> titleRef: RefObject }) { const { t } = useTranslation('dataset') - const { t: tCommon } = useTranslation('common') - const revisionTriggerRef = useRef(null) - const loadMoreRequestedRef = useRef(false) - const wasFetchingNextPageRef = useRef(false) - useEffect(() => { - if (isFetchingNextRevisionPage) wasFetchingNextPageRef.current = true - if ( - isFetchingNextRevisionPage || - !wasFetchingNextPageRef.current || - !loadMoreRequestedRef.current - ) - return - wasFetchingNextPageRef.current = false - loadMoreRequestedRef.current = false - if (!isFetchNextRevisionPageError && !hasNextRevisionPage) revisionTriggerRef.current?.focus() - }, [hasNextRevisionPage, isFetchNextRevisionPageError, isFetchingNextRevisionPage]) return ( <> @@ -93,44 +53,6 @@ export function DocumentDetailHeader({
- {revisions.length > 0 && effectiveRevision !== undefined && ( - - )} - {(hasNextRevisionPage || isFetchNextRevisionPageError) && ( - - )}
- {isFetchNextRevisionPageError && ( -

- {t(($) => $['newKnowledge.documentRevisionsLoadError'])} -

- )} ) } diff --git a/web/features/new-rag/document-detail-page.tsx b/web/features/new-rag/document-detail-page.tsx index 622f4023f4a..79451c097d3 100644 --- a/web/features/new-rag/document-detail-page.tsx +++ b/web/features/new-rag/document-detail-page.tsx @@ -275,14 +275,8 @@ export function DocumentDetailPage({ canCancelReindex={canCancelReindex} cancelReindexBusy={cancelReindexBusy} document={document} - effectiveRevision={effectiveRevision} - fetchNextRevisionPage={() => void revisionsQuery.fetchNextPage()} - hasNextRevisionPage={revisionsQuery.hasNextPage} - isFetchNextRevisionPageError={revisionsQuery.isFetchNextPageError} - isFetchingNextRevisionPage={revisionsQuery.isFetchingNextPage} onCancelReindex={() => void cancelReindex()} onReindex={() => void reindex()} - onRevisionChange={(revision) => void setDocumentLocation({ chunk: null, revision })} reindexDisabled={ !canEdit || reindexBusy || @@ -300,7 +294,6 @@ export function DocumentDetailPage({ reindexFailed={latestTask?.state === 'failed'} reindexInProgress={reindexInProgress} reindexing={reindexBusy || submissionPending} - revisions={availableRevisions} titleRef={titleRef} /> {!hasEditPermission && (