| 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)
 |