mirror of
https://github.com/langgenius/dify.git
synced 2026-05-05 00:57:04 +08:00
refactor: Refactor useOnlineDocument hook
This commit is contained in:
parent
0284e7556e
commit
68d59ee8b3
@ -24,7 +24,7 @@ type OnlineDocumentsProps = {
|
|||||||
setSearchValue: (value: string) => void
|
setSearchValue: (value: string) => void
|
||||||
currentWorkspaceId: string
|
currentWorkspaceId: string
|
||||||
setCurrentWorkspaceId: (workspaceId: string) => void
|
setCurrentWorkspaceId: (workspaceId: string) => void
|
||||||
PagesMapAndSelectedPagesId: [DataSourceNotionPageMap, Set<string>, Set<string>]
|
PagesMapAndSelectedPagesId: DataSourceNotionPageMap
|
||||||
selectedPagesId: Set<string>
|
selectedPagesId: Set<string>
|
||||||
setSelectedPagesId: (selectedPagesId: Set<string>) => void
|
setSelectedPagesId: (selectedPagesId: Set<string>) => void
|
||||||
}
|
}
|
||||||
@ -93,7 +93,7 @@ const OnlineDocuments = ({
|
|||||||
}, [setCurrentWorkspaceId])
|
}, [setCurrentWorkspaceId])
|
||||||
|
|
||||||
const handleSelectPages = useCallback((newSelectedPagesId: Set<string>) => {
|
const handleSelectPages = useCallback((newSelectedPagesId: Set<string>) => {
|
||||||
const selectedPages = Array.from(newSelectedPagesId).map(pageId => PagesMapAndSelectedPagesId[0][pageId])
|
const selectedPages = Array.from(newSelectedPagesId).map(pageId => PagesMapAndSelectedPagesId[pageId])
|
||||||
|
|
||||||
setSelectedPagesId(new Set(Array.from(newSelectedPagesId)))
|
setSelectedPagesId(new Set(Array.from(newSelectedPagesId)))
|
||||||
onSelect(selectedPages)
|
onSelect(selectedPages)
|
||||||
@ -101,7 +101,7 @@ const OnlineDocuments = ({
|
|||||||
|
|
||||||
const handlePreviewPage = useCallback((previewPageId: string) => {
|
const handlePreviewPage = useCallback((previewPageId: string) => {
|
||||||
if (onPreview)
|
if (onPreview)
|
||||||
onPreview(PagesMapAndSelectedPagesId[0][previewPageId])
|
onPreview(PagesMapAndSelectedPagesId[previewPageId])
|
||||||
}, [PagesMapAndSelectedPagesId, onPreview])
|
}, [PagesMapAndSelectedPagesId, onPreview])
|
||||||
|
|
||||||
const headerInfo = useMemo(() => {
|
const headerInfo = useMemo(() => {
|
||||||
@ -138,10 +138,10 @@ const OnlineDocuments = ({
|
|||||||
<div className='overflow-hidden rounded-b-xl'>
|
<div className='overflow-hidden rounded-b-xl'>
|
||||||
<PageSelector
|
<PageSelector
|
||||||
checkedIds={selectedPagesId}
|
checkedIds={selectedPagesId}
|
||||||
disabledValue={PagesMapAndSelectedPagesId[2]}
|
disabledValue={new Set()}
|
||||||
searchValue={searchValue}
|
searchValue={searchValue}
|
||||||
list={currentWorkspace?.pages || []}
|
list={currentWorkspace?.pages || []}
|
||||||
pagesMap={PagesMapAndSelectedPagesId[0]}
|
pagesMap={PagesMapAndSelectedPagesId}
|
||||||
onSelect={handleSelectPages}
|
onSelect={handleSelectPages}
|
||||||
canPreview={!isInPipeline}
|
canPreview={!isInPipeline}
|
||||||
previewPageId={previewPageId}
|
previewPageId={previewPageId}
|
||||||
@ -135,15 +135,9 @@ export const useOnlineDocuments = () => {
|
|||||||
const [onlineDocuments, setOnlineDocuments] = useState<NotionPage[]>([])
|
const [onlineDocuments, setOnlineDocuments] = useState<NotionPage[]>([])
|
||||||
const [currentDocument, setCurrentDocument] = useState<NotionPage | undefined>()
|
const [currentDocument, setCurrentDocument] = useState<NotionPage | undefined>()
|
||||||
|
|
||||||
const PagesMapAndSelectedPagesId: [DataSourceNotionPageMap, Set<string>, Set<string>] = useMemo(() => {
|
const PagesMapAndSelectedPagesId: DataSourceNotionPageMap = useMemo(() => {
|
||||||
const selectedPagesId = new Set<string>()
|
|
||||||
const boundPagesId = new Set<string>()
|
|
||||||
const pagesMap = (documentsData || []).reduce((prev: DataSourceNotionPageMap, next: DataSourceNotionWorkspace) => {
|
const pagesMap = (documentsData || []).reduce((prev: DataSourceNotionPageMap, next: DataSourceNotionWorkspace) => {
|
||||||
next.pages.forEach((page) => {
|
next.pages.forEach((page) => {
|
||||||
if (page.is_bound) {
|
|
||||||
selectedPagesId.add(page.page_id)
|
|
||||||
boundPagesId.add(page.page_id)
|
|
||||||
}
|
|
||||||
prev[page.page_id] = {
|
prev[page.page_id] = {
|
||||||
...page,
|
...page,
|
||||||
workspace_id: next.workspace_id,
|
workspace_id: next.workspace_id,
|
||||||
@ -152,9 +146,9 @@ export const useOnlineDocuments = () => {
|
|||||||
|
|
||||||
return prev
|
return prev
|
||||||
}, {})
|
}, {})
|
||||||
return [pagesMap, selectedPagesId, boundPagesId]
|
return pagesMap
|
||||||
}, [documentsData])
|
}, [documentsData])
|
||||||
const defaultSelectedPagesId = [...Array.from(PagesMapAndSelectedPagesId[1]), ...(onlineDocuments.map(doc => doc.page_id) || [])]
|
const defaultSelectedPagesId = [...(onlineDocuments.map(doc => doc.page_id) || [])]
|
||||||
const [selectedPagesId, setSelectedPagesId] = useState<Set<string>>(new Set(defaultSelectedPagesId))
|
const [selectedPagesId, setSelectedPagesId] = useState<Set<string>>(new Set(defaultSelectedPagesId))
|
||||||
|
|
||||||
const previewOnlineDocument = useRef<NotionPage>(onlineDocuments[0])
|
const previewOnlineDocument = useRef<NotionPage>(onlineDocuments[0])
|
||||||
|
|||||||
@ -2,12 +2,13 @@
|
|||||||
import { useCallback, useMemo, useRef, useState } from 'react'
|
import { useCallback, useMemo, useRef, useState } from 'react'
|
||||||
import DataSourceOptions from './data-source-options'
|
import DataSourceOptions from './data-source-options'
|
||||||
import type { CrawlResultItem, DocumentItem, CustomFile as File, FileIndexingEstimateResponse } from '@/models/datasets'
|
import type { CrawlResultItem, DocumentItem, CustomFile as File, FileIndexingEstimateResponse } from '@/models/datasets'
|
||||||
import LocalFile from '@/app/components/rag-pipeline/components/panel/test-run/data-source/local-file'
|
import LocalFile from '@/app/components/datasets/documents/create-from-pipeline/data-source/local-file'
|
||||||
import { useProviderContextSelector } from '@/context/provider-context'
|
import { useProviderContextSelector } from '@/context/provider-context'
|
||||||
import type { NotionPage } from '@/models/common'
|
import type { NotionPage } from '@/models/common'
|
||||||
import OnlineDocuments from '@/app/components/rag-pipeline/components/panel/test-run/data-source/online-documents'
|
import OnlineDocuments from '@/app/components/datasets/documents/create-from-pipeline/data-source/online-documents'
|
||||||
import VectorSpaceFull from '@/app/components/billing/vector-space-full'
|
import VectorSpaceFull from '@/app/components/billing/vector-space-full'
|
||||||
import WebsiteCrawl from '@/app/components/rag-pipeline/components/panel/test-run/data-source/website-crawl'
|
import WebsiteCrawl from '@/app/components/datasets/documents/create-from-pipeline/data-source/website-crawl'
|
||||||
|
import OnlineDrive from '@/app/components/datasets/documents/create-from-pipeline/data-source/online-drive'
|
||||||
import Actions from './actions'
|
import Actions from './actions'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import type { Datasource } from '@/app/components/rag-pipeline/components/panel/test-run/types'
|
import type { Datasource } from '@/app/components/rag-pipeline/components/panel/test-run/types'
|
||||||
@ -27,7 +28,6 @@ import type { InitialDocumentDetail, PublishedPipelineRunPreviewResponse, Publis
|
|||||||
import { DatasourceType } from '@/models/pipeline'
|
import { DatasourceType } from '@/models/pipeline'
|
||||||
import { TransferMethod } from '@/types/app'
|
import { TransferMethod } from '@/types/app'
|
||||||
import { useAddDocumentsSteps, useLocalFile, useOnlineDocuments, useOnlineDrive, useWebsiteCrawl } from './hooks'
|
import { useAddDocumentsSteps, useLocalFile, useOnlineDocuments, useOnlineDrive, useWebsiteCrawl } from './hooks'
|
||||||
import OnlineDrive from '@/app/components/rag-pipeline/components/panel/test-run/data-source/online-drive'
|
|
||||||
|
|
||||||
const CreateFormPipeline = () => {
|
const CreateFormPipeline = () => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
|
|||||||
@ -114,15 +114,9 @@ export const useOnlineDocuments = () => {
|
|||||||
const [currentWorkspaceId, setCurrentWorkspaceId] = useState('')
|
const [currentWorkspaceId, setCurrentWorkspaceId] = useState('')
|
||||||
const [onlineDocuments, setOnlineDocuments] = useState<NotionPage[]>([])
|
const [onlineDocuments, setOnlineDocuments] = useState<NotionPage[]>([])
|
||||||
|
|
||||||
const PagesMapAndSelectedPagesId: [DataSourceNotionPageMap, Set<string>, Set<string>] = useMemo(() => {
|
const PagesMapAndSelectedPagesId: DataSourceNotionPageMap = useMemo(() => {
|
||||||
const selectedPagesId = new Set<string>()
|
|
||||||
const boundPagesId = new Set<string>()
|
|
||||||
const pagesMap = (documentsData || []).reduce((prev: DataSourceNotionPageMap, next: DataSourceNotionWorkspace) => {
|
const pagesMap = (documentsData || []).reduce((prev: DataSourceNotionPageMap, next: DataSourceNotionWorkspace) => {
|
||||||
next.pages.forEach((page) => {
|
next.pages.forEach((page) => {
|
||||||
if (page.is_bound) {
|
|
||||||
selectedPagesId.add(page.page_id)
|
|
||||||
boundPagesId.add(page.page_id)
|
|
||||||
}
|
|
||||||
prev[page.page_id] = {
|
prev[page.page_id] = {
|
||||||
...page,
|
...page,
|
||||||
workspace_id: next.workspace_id,
|
workspace_id: next.workspace_id,
|
||||||
@ -131,9 +125,9 @@ export const useOnlineDocuments = () => {
|
|||||||
|
|
||||||
return prev
|
return prev
|
||||||
}, {})
|
}, {})
|
||||||
return [pagesMap, selectedPagesId, boundPagesId]
|
return pagesMap
|
||||||
}, [documentsData])
|
}, [documentsData])
|
||||||
const defaultSelectedPagesId = [...Array.from(PagesMapAndSelectedPagesId[1]), ...(onlineDocuments.map(doc => doc.page_id) || [])]
|
const defaultSelectedPagesId = [...(onlineDocuments.map(doc => doc.page_id) || [])]
|
||||||
const [selectedPagesId, setSelectedPagesId] = useState<Set<string>>(new Set(defaultSelectedPagesId))
|
const [selectedPagesId, setSelectedPagesId] = useState<Set<string>>(new Set(defaultSelectedPagesId))
|
||||||
|
|
||||||
const updateOnlineDocuments = (value: NotionPage[]) => {
|
const updateOnlineDocuments = (value: NotionPage[]) => {
|
||||||
|
|||||||
@ -2,10 +2,11 @@ import { useStore as useWorkflowStoreWithSelector } from '@/app/components/workf
|
|||||||
import { useCallback, useMemo, useState } from 'react'
|
import { useCallback, useMemo, useState } from 'react'
|
||||||
import { useLocalFile, useOnlineDocuments, useOnlineDrive, useTestRunSteps, useWebsiteCrawl } from './hooks'
|
import { useLocalFile, useOnlineDocuments, useOnlineDrive, useTestRunSteps, useWebsiteCrawl } from './hooks'
|
||||||
import DataSourceOptions from './data-source-options'
|
import DataSourceOptions from './data-source-options'
|
||||||
import LocalFile from './data-source/local-file'
|
import LocalFile from '@/app/components/datasets/documents/create-from-pipeline/data-source/local-file'
|
||||||
import OnlineDocuments from './data-source/online-documents'
|
import OnlineDocuments from '@/app/components/datasets/documents/create-from-pipeline/data-source/online-documents'
|
||||||
import WebsiteCrawl from './data-source/website-crawl'
|
import WebsiteCrawl from '@/app/components/datasets/documents/create-from-pipeline/data-source/website-crawl'
|
||||||
import Actions from './data-source/actions'
|
import OnlineDrive from '@/app/components/datasets/documents/create-from-pipeline/data-source/online-drive'
|
||||||
|
import Actions from './actions'
|
||||||
import DocumentProcessing from './document-processing'
|
import DocumentProcessing from './document-processing'
|
||||||
import { useWorkflowRun } from '@/app/components/workflow/hooks'
|
import { useWorkflowRun } from '@/app/components/workflow/hooks'
|
||||||
import type { Datasource } from './types'
|
import type { Datasource } from './types'
|
||||||
@ -14,7 +15,6 @@ import { TransferMethod } from '@/types/app'
|
|||||||
import CloseButton from './close-button'
|
import CloseButton from './close-button'
|
||||||
import Header from './header'
|
import Header from './header'
|
||||||
import FooterTips from './footer-tips'
|
import FooterTips from './footer-tips'
|
||||||
import OnlineDrive from './data-source/online-drive'
|
|
||||||
|
|
||||||
const TestRunPanel = () => {
|
const TestRunPanel = () => {
|
||||||
const setShowDebugAndPreviewPanel = useWorkflowStoreWithSelector(state => state.setShowDebugAndPreviewPanel)
|
const setShowDebugAndPreviewPanel = useWorkflowStoreWithSelector(state => state.setShowDebugAndPreviewPanel)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user