From 8c7b9fbbddbb9a493feb415bc1919aca1ae4f59f Mon Sep 17 00:00:00 2001 From: Stephen Zhou <38493346+hyoban@users.noreply.github.com> Date: Tue, 1 Sep 2026 12:17:51 +0800 Subject: [PATCH] refactor(knowledge-fs): split document workflow notices --- .../new-rag/documents/detail/status.tsx | 108 +++++++++--------- .../documents/detail/tasks-surface.tsx | 26 +---- 2 files changed, 59 insertions(+), 75 deletions(-) diff --git a/web/features/new-rag/documents/detail/status.tsx b/web/features/new-rag/documents/detail/status.tsx index a6c48d2b250..c6bc546d058 100644 --- a/web/features/new-rag/documents/detail/status.tsx +++ b/web/features/new-rag/documents/detail/status.tsx @@ -1,46 +1,27 @@ import type { RefObject } from 'react' -import type { DocumentProcessingTask } from '../models' import { Button } from '@langgenius/dify-ui/button' import { useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' +import { useDocumentTaskWorkflow, useDocumentWriteAccess } from './workflow-context' -export function DocumentDetailStatus({ - continueLookup, - isLookingUpTask, - latestTask, - lookupExhausted, - permissionRecoveryBusy, - permissionRecoveryNeeded, - refetchTasks, - retryWritePermission, - reindexInProgress, - tasksError, +export function DocumentTaskNotices({ titleRef, onViewTasks, }: { - continueLookup: () => void - isLookingUpTask: boolean - latestTask?: DocumentProcessingTask - lookupExhausted: boolean - permissionRecoveryBusy: boolean - permissionRecoveryNeeded: boolean - refetchTasks: () => void - retryWritePermission: () => Promise - reindexInProgress: boolean - tasksError: boolean titleRef: RefObject onViewTasks: () => void }) { const { t } = useTranslation('dataset') const { t: tCommon } = useTranslation('common') - const permissionRetryRef = useRef(null) - const permissionRecoveryWasNeededRef = useRef(false) - - useEffect(() => { - if (permissionRecoveryNeeded && !permissionRecoveryWasNeededRef.current) - requestAnimationFrame(() => permissionRetryRef.current?.focus()) - permissionRecoveryWasNeededRef.current = permissionRecoveryNeeded - }, [permissionRecoveryNeeded]) + const { + continueLookup, + isLookingUp: isLookingUpTask, + latestTask, + lookupExhausted, + refetch, + reindexInProgress, + tasksError, + } = useDocumentTaskWorkflow() return ( <> @@ -82,29 +63,7 @@ export function DocumentDetailStatus({ role="alert" > {t(($) => $['newKnowledge.tasksErrorDescription'])} - - - )} - - {permissionRecoveryNeeded && ( -
- {t(($) => $['newKnowledge.documentPermissionRestricted'])} - +
)} @@ -139,3 +98,46 @@ export function DocumentDetailStatus({ ) } + +export function DocumentPermissionRecoveryNotice({ + titleRef, +}: { + titleRef: RefObject +}) { + const { t } = useTranslation('dataset') + const { t: tCommon } = useTranslation('common') + const { permissionRecoveryBusy, permissionRecoveryNeeded, retryWritePermission } = + useDocumentWriteAccess() + const permissionRetryRef = useRef(null) + const permissionRecoveryWasNeededRef = useRef(false) + + useEffect(() => { + if (permissionRecoveryNeeded && !permissionRecoveryWasNeededRef.current) + requestAnimationFrame(() => permissionRetryRef.current?.focus()) + permissionRecoveryWasNeededRef.current = permissionRecoveryNeeded + }, [permissionRecoveryNeeded]) + + if (!permissionRecoveryNeeded) return null + + return ( +
+ {t(($) => $['newKnowledge.documentPermissionRestricted'])} + +
+ ) +} diff --git a/web/features/new-rag/documents/detail/tasks-surface.tsx b/web/features/new-rag/documents/detail/tasks-surface.tsx index a07ab96b63f..bc077f6c8c3 100644 --- a/web/features/new-rag/documents/detail/tasks-surface.tsx +++ b/web/features/new-rag/documents/detail/tasks-surface.tsx @@ -9,7 +9,7 @@ import { consoleQuery } from '@/service/client' import { logicalDocumentListFromApi } from '../models' import { ProcessingTasksDrawer } from '../tasks/drawer' import { createTaskProgressStore } from '../tasks/progress-store' -import { DocumentDetailStatus } from './status' +import { DocumentPermissionRecoveryNotice, DocumentTaskNotices } from './status' import { useDocumentTaskWorkflow, useDocumentWriteAccess } from './workflow-context' export function DocumentTasksSurface({ @@ -25,23 +25,17 @@ export function DocumentTasksSurface({ }) { const { t } = useTranslation('dataset') const { - continueLookup, fetchNextPage, hasNextPage, isFetchNextPageError, isFetching, isFetchingNextPage, - isLookingUp, isPending, - latestTask, - lookupExhausted, refetch, - reindexInProgress, tasks, tasksError, } = useDocumentTaskWorkflow() - const { canEdit, permissionRecoveryBusy, permissionRecoveryNeeded, retryWritePermission } = - useDocumentWriteAccess() + const { canEdit, permissionRecoveryBusy, retryWritePermission } = useDocumentWriteAccess() const [open, setOpen] = useState(false) const taskProgressStoreRef = useRef | null>(null) if (!taskProgressStoreRef.current) taskProgressStoreRef.current = createTaskProgressStore() @@ -72,20 +66,8 @@ export function DocumentTasksSurface({ return ( <> - void refetch()} - reindexInProgress={reindexInProgress} - retryWritePermission={retryWritePermission} - tasksError={Boolean(tasksError)} - titleRef={titleRef} - onViewTasks={() => setOpen(true)} - /> + setOpen(true)} /> +