|
|
|
@ -1,4 +1,6 @@
|
|
|
|
import { useCallback, useEffect, useMemo, useState } from 'react'
|
|
|
|
import { useCallback, useEffect, useMemo, useState } from 'react'
|
|
|
|
|
|
|
|
import { useTranslation } from 'react-i18next'
|
|
|
|
|
|
|
|
import { useContext } from 'use-context-selector'
|
|
|
|
import useSWR from 'swr'
|
|
|
|
import useSWR from 'swr'
|
|
|
|
import cn from 'classnames'
|
|
|
|
import cn from 'classnames'
|
|
|
|
import s from './base.module.css'
|
|
|
|
import s from './base.module.css'
|
|
|
|
@ -9,6 +11,7 @@ import { preImportNotionPages } from '@/service/datasets'
|
|
|
|
import AccountSetting from '@/app/components/header/account-setting'
|
|
|
|
import AccountSetting from '@/app/components/header/account-setting'
|
|
|
|
import { NotionConnector } from '@/app/components/datasets/create/step-one'
|
|
|
|
import { NotionConnector } from '@/app/components/datasets/create/step-one'
|
|
|
|
import type { DataSourceNotionPage, DataSourceNotionPageMap, DataSourceNotionWorkspace } from '@/models/common'
|
|
|
|
import type { DataSourceNotionPage, DataSourceNotionPageMap, DataSourceNotionWorkspace } from '@/models/common'
|
|
|
|
|
|
|
|
import { ToastContext } from '@/app/components/base/toast'
|
|
|
|
|
|
|
|
|
|
|
|
export type NotionPageSelectorValue = DataSourceNotionPage & { workspace_id: string }
|
|
|
|
export type NotionPageSelectorValue = DataSourceNotionPage & { workspace_id: string }
|
|
|
|
|
|
|
|
|
|
|
|
@ -19,6 +22,8 @@ type NotionPageSelectorProps = {
|
|
|
|
previewPageId?: string
|
|
|
|
previewPageId?: string
|
|
|
|
onPreview?: (selectedPage: NotionPageSelectorValue) => void
|
|
|
|
onPreview?: (selectedPage: NotionPageSelectorValue) => void
|
|
|
|
datasetId?: string
|
|
|
|
datasetId?: string
|
|
|
|
|
|
|
|
countLimit: number
|
|
|
|
|
|
|
|
countUsed: number
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const NotionPageSelector = ({
|
|
|
|
const NotionPageSelector = ({
|
|
|
|
@ -28,7 +33,11 @@ const NotionPageSelector = ({
|
|
|
|
previewPageId,
|
|
|
|
previewPageId,
|
|
|
|
onPreview,
|
|
|
|
onPreview,
|
|
|
|
datasetId = '',
|
|
|
|
datasetId = '',
|
|
|
|
|
|
|
|
countLimit,
|
|
|
|
|
|
|
|
countUsed,
|
|
|
|
}: NotionPageSelectorProps) => {
|
|
|
|
}: NotionPageSelectorProps) => {
|
|
|
|
|
|
|
|
const { t } = useTranslation()
|
|
|
|
|
|
|
|
const { notify } = useContext(ToastContext)
|
|
|
|
const { data, mutate } = useSWR({ url: '/notion/pre-import/pages', datasetId }, preImportNotionPages)
|
|
|
|
const { data, mutate } = useSWR({ url: '/notion/pre-import/pages', datasetId }, preImportNotionPages)
|
|
|
|
const [prevData, setPrevData] = useState(data)
|
|
|
|
const [prevData, setPrevData] = useState(data)
|
|
|
|
const [searchValue, setSearchValue] = useState('')
|
|
|
|
const [searchValue, setSearchValue] = useState('')
|
|
|
|
@ -71,9 +80,13 @@ const NotionPageSelector = ({
|
|
|
|
const handleSelectWorkspace = useCallback((workspaceId: string) => {
|
|
|
|
const handleSelectWorkspace = useCallback((workspaceId: string) => {
|
|
|
|
setCurrentWorkspaceId(workspaceId)
|
|
|
|
setCurrentWorkspaceId(workspaceId)
|
|
|
|
}, [])
|
|
|
|
}, [])
|
|
|
|
const handleSelecPages = (selectedPagesId: Set<string>) => {
|
|
|
|
const handleSelecPages = (newSelectedPagesId: Set<string>) => {
|
|
|
|
setSelectedPagesId(new Set(Array.from(selectedPagesId)))
|
|
|
|
const selectedPages = Array.from(newSelectedPagesId).map(pageId => getPagesMapAndSelectedPagesId[0][pageId])
|
|
|
|
const selectedPages = Array.from(selectedPagesId).map(pageId => getPagesMapAndSelectedPagesId[0][pageId])
|
|
|
|
if (selectedPages.length > countLimit - countUsed) {
|
|
|
|
|
|
|
|
notify({ type: 'error', message: t('datasetCreation.stepOne.overCountLimit', { countLimit }) })
|
|
|
|
|
|
|
|
return false
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
setSelectedPagesId(new Set(Array.from(newSelectedPagesId)))
|
|
|
|
onSelect(selectedPages)
|
|
|
|
onSelect(selectedPages)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const handlePreviewPage = (previewPageId: string) => {
|
|
|
|
const handlePreviewPage = (previewPageId: string) => {
|
|
|
|
|