import { Popover, PopoverContent, PopoverTrigger } from '@langgenius/dify-ui/popover' import { useQuery } from '@tanstack/react-query' import { useState } from 'react' import { useTranslation } from 'react-i18next' import { ACCOUNT_SETTING_TAB } from '@/app/components/header/account-setting/constants' import { useIntegrationsSetting } from '@/app/components/header/account-setting/use-integrations-setting' import { consoleQuery } from '@/service/client' import { ApiBasedExtensionModal } from './modal' type ApiBasedExtensionSelectorProps = { value: string onChange: (value: string) => void } export function ApiBasedExtensionSelector({ value, onChange }: ApiBasedExtensionSelectorProps) { const { t } = useTranslation() const [open, setOpen] = useState(false) const [addModalOpen, setAddModalOpen] = useState(false) const openIntegrationsSetting = useIntegrationsSetting() const { data: apiBasedExtensions = [] } = useQuery( consoleQuery.apiBasedExtension.get.queryOptions(), ) const handleSelect = (id: string) => { onChange(id) setOpen(false) } const currentItem = apiBasedExtensions.find((item) => item.id === value) const handleApiBasedExtensionSaved = () => { setAddModalOpen(false) } const handleAddModalOpenChange = (nextOpen: boolean) => { if (!nextOpen) setAddModalOpen(false) } return ( <> {currentItem ? ( {currentItem.name} {currentItem.api_endpoint} ) : ( {t(($) => $['apiBasedExtension.selector.placeholder'], { ns: 'common', })} )} } /> {t(($) => $['apiBasedExtension.selector.title'], { ns: 'common' })} { setOpen(false) openIntegrationsSetting({ payload: ACCOUNT_SETTING_TAB.API_BASED_EXTENSION, }) }} > {t(($) => $['apiBasedExtension.selector.manage'], { ns: 'common' })} {apiBasedExtensions.map((item) => ( handleSelect(item.id)} > {item.name} {item.api_endpoint} ))} { setOpen(false) setAddModalOpen(true) }} > {t(($) => $['operation.add'], { ns: 'common' })} {addModalOpen && ( )} > ) }