123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 'use client'
- import type { FC } from 'react'
- import React, { useCallback, useEffect, useState } from 'react'
- import NoData from './no-data'
- import Firecrawl from './firecrawl'
- import { useModalContext } from '@/context/modal-context'
- import type { CrawlOptions, CrawlResultItem } from '@/models/datasets'
- import { fetchDataSources } from '@/service/datasets'
- import { type DataSourceItem, DataSourceProvider } from '@/models/common'
- type Props = {
- onPreview: (payload: CrawlResultItem) => void
- checkedCrawlResult: CrawlResultItem[]
- onCheckedCrawlResultChange: (payload: CrawlResultItem[]) => void
- onJobIdChange: (jobId: string) => void
- crawlOptions: CrawlOptions
- onCrawlOptionsChange: (payload: CrawlOptions) => void
- }
- const Website: FC<Props> = ({
- onPreview,
- checkedCrawlResult,
- onCheckedCrawlResultChange,
- onJobIdChange,
- crawlOptions,
- onCrawlOptionsChange,
- }) => {
- const { setShowAccountSettingModal } = useModalContext()
- const [isLoaded, setIsLoaded] = useState(false)
- const [isSetFirecrawlApiKey, setIsSetFirecrawlApiKey] = useState(false)
- const checkSetApiKey = useCallback(async () => {
- const res = await fetchDataSources() as any
- const isFirecrawlSet = res.sources.some((item: DataSourceItem) => item.provider === DataSourceProvider.fireCrawl)
- setIsSetFirecrawlApiKey(isFirecrawlSet)
- }, [])
- useEffect(() => {
- checkSetApiKey().then(() => {
- setIsLoaded(true)
- })
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [])
- const handleOnConfig = useCallback(() => {
- setShowAccountSettingModal({
- payload: 'data-source',
- onCancelCallback: checkSetApiKey,
- })
- }, [checkSetApiKey, setShowAccountSettingModal])
- if (!isLoaded)
- return null
- return (
- <div>
- {isSetFirecrawlApiKey
- ? (
- <Firecrawl
- onPreview={onPreview}
- checkedCrawlResult={checkedCrawlResult}
- onCheckedCrawlResultChange={onCheckedCrawlResultChange}
- onJobIdChange={onJobIdChange}
- crawlOptions={crawlOptions}
- onCrawlOptionsChange={onCrawlOptionsChange}
- />
- )
- : (
- <NoData onConfig={handleOnConfig} />
- )}
- </div>
- )
- }
- export default React.memo(Website)
|