| import ProgressCircle from './ProgressCircle'; |
| import InProgressCall from './InProgressCall'; |
| import RetrievalIcon from './RetrievalIcon'; |
| import CancelledIcon from './CancelledIcon'; |
| import ProgressText from './ProgressText'; |
| import FinishedIcon from './FinishedIcon'; |
| import { useProgress } from '~/hooks'; |
|
|
| export default function RetrievalCall({ |
| initialProgress = 0.1, |
| isSubmitting, |
| }: { |
| initialProgress: number; |
| isSubmitting: boolean; |
| }) { |
| const progress = useProgress(initialProgress); |
| const radius = 56.08695652173913; |
| const circumference = 2 * Math.PI * radius; |
| const offset = circumference - progress * circumference; |
| const error = progress >= 2; |
|
|
| return ( |
| <div className="my-2.5 flex items-center gap-2.5"> |
| <div className="relative h-5 w-5 shrink-0"> |
| {progress < 1 ? ( |
| <InProgressCall progress={progress} isSubmitting={isSubmitting} error={error}> |
| <div |
| className="absolute left-0 top-0 flex h-full w-full items-center justify-center rounded-full bg-transparent text-white" |
| style={{ opacity: 1, transform: 'none' }} |
| > |
| <div> |
| <RetrievalIcon /> |
| </div> |
| <ProgressCircle radius={radius} circumference={circumference} offset={offset} /> |
| </div> |
| </InProgressCall> |
| ) : error ? ( |
| <CancelledIcon /> |
| ) : ( |
| <FinishedIcon /> |
| )} |
| </div> |
| <ProgressText |
| progress={progress} |
| onClick={() => ({})} |
| inProgressText={'Searching my knowledge'} |
| finishedText={'Used Retrieval'} |
| hasInput={false} |
| popover={false} |
| /> |
| </div> |
| ); |
| } |
|
|