'use client'
import type { FC } from 'react'
import React, { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next'
import useSWR from 'swr'
import { omit } from 'lodash-es'
import { useBoolean } from 'ahooks'
import { useContext } from 'use-context-selector'
import { RiApps2Line, RiFocus2Line, RiHistoryLine } from '@remixicon/react'
import Textarea from './textarea'
import s from './style.module.css'
import ModifyRetrievalModal from './modify-retrieval-modal'
import ResultItem from './components/result-item'
import ResultItemExternal from './components/result-item-external'
import cn from '@/utils/classnames'
import type { ExternalKnowledgeBaseHitTesting, ExternalKnowledgeBaseHitTestingResponse, HitTesting, HitTestingResponse } from '@/models/datasets'
import Loading from '@/app/components/base/loading'
import Drawer from '@/app/components/base/drawer'
import Pagination from '@/app/components/base/pagination'
import FloatRightContainer from '@/app/components/base/float-right-container'
import { fetchTestingRecords } from '@/service/datasets'
import DatasetDetailContext from '@/context/dataset-detail'
import type { RetrievalConfig } from '@/types/app'
import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints'
import useTimestamp from '@/hooks/use-timestamp'
import docStyle from '@/app/components/datasets/documents/detail/completed/style.module.css'
import { CardSkelton } from '../documents/detail/completed/skeleton/general-list-skeleton'
const limit = 10
type Props = {
  datasetId: string
}
const RecordsEmpty: FC = () => {
  const { t } = useTranslation()
  return 
    
      
    
    {t('datasetHitTesting.noRecentTip')}
   
}
const HitTestingPage: FC = ({ datasetId }: Props) => {
  const { t } = useTranslation()
  const { formatTime } = useTimestamp()
  const media = useBreakpoints()
  const isMobile = media === MediaType.mobile
  const [hitResult, setHitResult] = useState() // 初始化记录为空数组
  const [externalHitResult, setExternalHitResult] = useState()
  const [submitLoading, setSubmitLoading] = useState(false)
  const [text, setText] = useState('')
  const [currPage, setCurrPage] = React.useState(0)
  const { data: recordsRes, error, mutate: recordsMutate } = useSWR({
    action: 'fetchTestingRecords',
    datasetId,
    params: { limit, page: currPage + 1 },
  }, apiParams => fetchTestingRecords(omit(apiParams, 'action')))
  const total = recordsRes?.total || 0
  const { dataset: currentDataset } = useContext(DatasetDetailContext)
  const isExternal = currentDataset?.provider === 'external'
  const [retrievalConfig, setRetrievalConfig] = useState(currentDataset?.retrieval_model_dict as RetrievalConfig)
  const [isShowModifyRetrievalModal, setIsShowModifyRetrievalModal] = useState(false)
  const [isShowRightPanel, { setTrue: showRightPanel, setFalse: hideRightPanel, set: setShowRightPanel }] = useBoolean(!isMobile)
  const renderHitResults = (results: HitTesting[] | ExternalKnowledgeBaseHitTesting[]) => (
    
      
        {t('datasetHitTesting.hit.title', { num: results.length })}
      
      
        {results.map((record, idx) =>
          isExternal
            ? (
              
            )
            : (
              
            ),
        )}
      
     
  )
  const renderEmptyState = () => (
    
      
      
        {t('datasetHitTesting.hit.emptyTip')}
      
     
  )
  useEffect(() => {
    setShowRightPanel(!isMobile)
  }, [isMobile, setShowRightPanel])
  return (
    
      
        
          {t('datasetHitTesting.title')}
          {t('datasetHitTesting.desc')}
         
         
      
        
          {/* {renderHitResults(generalResultData)} */}
          {submitLoading
            ? 
              
            
            : (
              (() => {
                if (!hitResult?.records.length && !externalHitResult?.records.length)
                  return renderEmptyState()
                if (hitResult?.records.length)
                  return renderHitResults(hitResult.records)
                return renderHitResults(externalHitResult?.records || [])
              })()
            )
          }
        
 
  )
}
export default HitTestingPage