| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | import { useTranslation } from 'react-i18next'import Image from 'next/image'import SerpapiLogo from '../../assets/serpapi.png'import KeyValidator from '../key-validator'import type { Form, ValidateValue } from '../key-validator/declarations'import { updatePluginKey, validatePluginKey } from './utils'import { useToastContext } from '@/app/components/base/toast'import type { PluginProvider } from '@/models/common'import { useAppContext } from '@/context/app-context'type SerpapiPluginProps = {  plugin: PluginProvider  onUpdate: () => void}const SerpapiPlugin = ({  plugin,  onUpdate,}: SerpapiPluginProps) => {  const { t } = useTranslation()  const { isCurrentWorkspaceManager } = useAppContext()  const { notify } = useToastContext()  const forms: Form[] = [{    key: 'api_key',    title: t('common.plugin.serpapi.apiKey'),    placeholder: t('common.plugin.serpapi.apiKeyPlaceholder'),    value: plugin.credentials?.api_key,    validate: {      before: (v) => {        if (v?.api_key)          return true      },      run: async (v) => {        return validatePluginKey('serpapi', {          credentials: {            api_key: v?.api_key,          },        })      },    },    handleFocus: (v, dispatch) => {      if (v.api_key === plugin.credentials?.api_key)        dispatch({ ...v, api_key: '' })    },  }]  const handleSave = async (v: ValidateValue) => {    if (!v?.api_key || v?.api_key === plugin.credentials?.api_key)      return    const res = await updatePluginKey('serpapi', {      credentials: {        api_key: v?.api_key,      },    })    if (res.status === 'success') {      notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') })      onUpdate()      return true    }  }  return (    <KeyValidator      type='serpapi'      title={<Image alt='serpapi logo' src={SerpapiLogo} width={64} />}      status={plugin.credentials?.api_key ? 'success' : 'add'}      forms={forms}      keyFrom={{        text: t('common.plugin.serpapi.keyFrom'),        link: 'https://serpapi.com/manage-api-key',      }}      onSave={handleSave}      disabled={!isCurrentWorkspaceManager}    />  )}export default SerpapiPlugin
 |