| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | 
							- 'use client'
 
- import type { FC } from 'react'
 
- import React, { useRef, useState } from 'react'
 
- import { useHover } from 'ahooks'
 
- import { useTranslation } from 'react-i18next'
 
- import cn from '@/utils/classnames'
 
- import { MessageCheckRemove, MessageFastPlus } from '@/app/components/base/icons/src/vender/line/communication'
 
- import { MessageFast } from '@/app/components/base/icons/src/vender/solid/communication'
 
- import { Edit04 } from '@/app/components/base/icons/src/vender/line/general'
 
- import RemoveAnnotationConfirmModal from '@/app/components/app/annotation/remove-annotation-confirm-modal'
 
- import Tooltip from '@/app/components/base/tooltip'
 
- import { addAnnotation, delAnnotation } from '@/service/annotation'
 
- import Toast from '@/app/components/base/toast'
 
- import { useProviderContext } from '@/context/provider-context'
 
- import { useModalContext } from '@/context/modal-context'
 
- type Props = {
 
-   appId: string
 
-   messageId?: string
 
-   annotationId?: string
 
-   className?: string
 
-   cached: boolean
 
-   query: string
 
-   answer: string
 
-   onAdded: (annotationId: string, authorName: string) => void
 
-   onEdit: () => void
 
-   onRemoved: () => void
 
- }
 
- const CacheCtrlBtn: FC<Props> = ({
 
-   className,
 
-   cached,
 
-   query,
 
-   answer,
 
-   appId,
 
-   messageId,
 
-   annotationId,
 
-   onAdded,
 
-   onEdit,
 
-   onRemoved,
 
- }) => {
 
-   const { t } = useTranslation()
 
-   const { plan, enableBilling } = useProviderContext()
 
-   const isAnnotationFull = (enableBilling && plan.usage.annotatedResponse >= plan.total.annotatedResponse)
 
-   const { setShowAnnotationFullModal } = useModalContext()
 
-   const [showModal, setShowModal] = useState(false)
 
-   const cachedBtnRef = useRef<HTMLDivElement>(null)
 
-   const isCachedBtnHovering = useHover(cachedBtnRef)
 
-   const handleAdd = async () => {
 
-     if (isAnnotationFull) {
 
-       setShowAnnotationFullModal()
 
-       return
 
-     }
 
-     const res: any = await addAnnotation(appId, {
 
-       message_id: messageId,
 
-       question: query,
 
-       answer,
 
-     })
 
-     Toast.notify({
 
-       message: t('common.api.actionSuccess') as string,
 
-       type: 'success',
 
-     })
 
-     onAdded(res.id, res.account?.name)
 
-   }
 
-   const handleRemove = async () => {
 
-     await delAnnotation(appId, annotationId!)
 
-     Toast.notify({
 
-       message: t('common.api.actionSuccess') as string,
 
-       type: 'success',
 
-     })
 
-     onRemoved()
 
-     setShowModal(false)
 
-   }
 
-   return (
 
-     <div className={cn('inline-block', className)}>
 
-       <div className='inline-flex p-0.5 space-x-0.5 rounded-lg bg-white border border-gray-100 shadow-md text-gray-500 cursor-pointer'>
 
-         {cached
 
-           ? (
 
-             <div>
 
-               <div
 
-                 ref={cachedBtnRef}
 
-                 className={cn(isCachedBtnHovering ? 'bg-[#FEF3F2] text-[#D92D20]' : 'bg-[#EEF4FF] text-[#444CE7]', 'flex p-1 space-x-1 items-center rounded-md leading-4 text-xs font-medium')}
 
-                 onClick={() => setShowModal(true)}
 
-               >
 
-                 {!isCachedBtnHovering
 
-                   ? (
 
-                     <>
 
-                       <MessageFast className='w-4 h-4' />
 
-                       <div>{t('appDebug.feature.annotation.cached')}</div>
 
-                     </>
 
-                   )
 
-                   : <>
 
-                     <MessageCheckRemove className='w-4 h-4' />
 
-                     <div>{t('appDebug.feature.annotation.remove')}</div>
 
-                   </>}
 
-               </div>
 
-             </div>
 
-           )
 
-           : answer
 
-             ? (
 
-               <Tooltip
 
-                 popupContent={t('appDebug.feature.annotation.add')}
 
-               >
 
-                 <div
 
-                   className='p-1 rounded-md hover:bg-[#EEF4FF] hover:text-[#444CE7] cursor-pointer'
 
-                   onClick={handleAdd}
 
-                 >
 
-                   <MessageFastPlus className='w-4 h-4' />
 
-                 </div>
 
-               </Tooltip>
 
-             )
 
-             : null
 
-         }
 
-         <Tooltip
 
-           popupContent={t('appDebug.feature.annotation.edit')}
 
-         >
 
-           <div
 
-             className='p-1 cursor-pointer rounded-md hover:bg-black/5'
 
-             onClick={onEdit}
 
-           >
 
-             <Edit04 className='w-4 h-4' />
 
-           </div>
 
-         </Tooltip>
 
-       </div>
 
-       <RemoveAnnotationConfirmModal
 
-         isShow={showModal}
 
-         onHide={() => setShowModal(false)}
 
-         onRemove={handleRemove}
 
-       />
 
-     </div>
 
-   )
 
- }
 
- export default React.memo(CacheCtrlBtn)
 
 
  |