import type { LogicalDocument, LogicalDocumentRevision, } from '@dify/contracts/knowledge-fs/types.gen' import type { RefObject } from 'react' import { Button } from '@langgenius/dify-ui/button' import { Select, SelectContent, SelectItem, SelectItemIndicator, SelectItemText, SelectLabel, SelectTrigger, } from '@langgenius/dify-ui/select' import { useEffect, useId, useRef } from 'react' import { useTranslation } from 'react-i18next' import Link from '@/next/link' export function DocumentDetailHeader({ backPath, document, effectiveRevision, fetchNextRevisionPage, hasNextRevisionPage, isFetchNextRevisionPageError, isFetchingNextRevisionPage, onReindex, onRevisionChange, reindexDisabled, reindexDisabledReasonId, reindexing, revisions, titleRef, }: { backPath: string document: LogicalDocument effectiveRevision?: number fetchNextRevisionPage: () => void hasNextRevisionPage: boolean isFetchNextRevisionPageError: boolean isFetchingNextRevisionPage: boolean onReindex: () => void onRevisionChange: (revision: number) => void reindexDisabled: boolean reindexDisabledReasonId?: string reindexing: boolean revisions: Array> titleRef: RefObject }) { const { t } = useTranslation('dataset') const { t: tCommon } = useTranslation('common') const revisionTriggerRef = useRef(null) const loadMoreRevisionLabelId = useId() 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 ( <> {t(($) => $['newKnowledge.documents'])}

{document.title}

{revisions.length > 0 && effectiveRevision !== undefined && ( )} {(hasNextRevisionPage || isFetchNextRevisionPageError) && ( )}
{isFetchNextRevisionPageError && (

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

)} ) }