import React, { useMemo } from 'react' import { useTranslation } from 'react-i18next' import { useContext } from 'use-context-selector' import { useBoolean } from 'ahooks' import { RiAddLine, RiApps2AddLine, RiBookOpenLine, } from '@remixicon/react' import EndpointModal from './endpoint-modal' import EndpointCard from './endpoint-card' import { NAME_FIELD } from './utils' import { toolCredentialToFormSchemas } from '@/app/components/tools/utils/to-form-schema' import ActionButton from '@/app/components/base/action-button' import Tooltip from '@/app/components/base/tooltip' import Toast from '@/app/components/base/toast' import { useCreateEndpoint, useEndpointList, useInvalidateEndpointList, } from '@/service/use-endpoints' import type { PluginDetail } from '@/app/components/plugins/types' import { LanguagesSupported } from '@/i18n/language' import I18n from '@/context/i18n' import cn from '@/utils/classnames' type Props = { detail: PluginDetail } const EndpointList = ({ detail }: Props) => { const { t } = useTranslation() const { locale } = useContext(I18n) const pluginUniqueID = detail.plugin_unique_identifier const declaration = detail.declaration.endpoint const showTopBorder = detail.declaration.tool const { data } = useEndpointList(detail.plugin_id) const invalidateEndpointList = useInvalidateEndpointList() const [isShowEndpointModal, { setTrue: showEndpointModal, setFalse: hideEndpointModal, }] = useBoolean(false) const formSchemas = useMemo(() => { return toolCredentialToFormSchemas([NAME_FIELD, ...declaration.settings]) }, [declaration.settings]) const { mutate: createEndpoint } = useCreateEndpoint({ onSuccess: async () => { await invalidateEndpointList(detail.plugin_id) hideEndpointModal() }, onError: () => { Toast.notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) }, }) const handleCreate = (state: any) => createEndpoint({ pluginUniqueID, state, }) if (!data) return null return (