| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 'use client'
- import type { FC } from 'react'
- import React from 'react'
- import { useTranslation } from 'react-i18next'
- import {
- RiEditLine,
- RiFileEditLine,
- } from '@remixicon/react'
- import ActionButton from '@/app/components/base/action-button'
- import Tooltip from '@/app/components/base/tooltip'
- import { addAnnotation } 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
- cached: boolean
- query: string
- answer: string
- onAdded: (annotationId: string, authorName: string) => void
- onEdit: () => void
- }
-
- const AnnotationCtrlButton: FC<Props> = ({
- cached,
- query,
- answer,
- appId,
- messageId,
- onAdded,
- onEdit,
- }) => {
- const { t } = useTranslation()
- const { plan, enableBilling } = useProviderContext()
- const isAnnotationFull = (enableBilling && plan.usage.annotatedResponse >= plan.total.annotatedResponse)
- const { setShowAnnotationFullModal } = useModalContext()
- 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)
- }
-
- return (
- <>
- {cached && (
- <Tooltip
- popupContent={t('appDebug.feature.annotation.edit')}
- >
- <ActionButton onClick={onEdit}>
- <RiEditLine className='h-4 w-4' />
- </ActionButton>
- </Tooltip>
- )}
- {!cached && answer && (
- <Tooltip
- popupContent={t('appDebug.feature.annotation.add')}
- >
- <ActionButton onClick={handleAdd}>
- <RiFileEditLine className='h-4 w-4' />
- </ActionButton>
- </Tooltip>
- )}
- </>
- )
- }
- export default React.memo(AnnotationCtrlButton)
|