'use client' import React, { useState } from 'react' import { useTranslation } from 'react-i18next' import { RiCloseLine, RiEditLine, RiKeyLine, RiUserLine, } from '@remixicon/react' import Modal from '@/app/components/base/modal' import Button from '@/app/components/base/button' import Input from '@/app/components/base/input' import type { PluginDetail } from '@/app/components/plugins/types' type Props = { pluginDetail: PluginDetail onCancel: () => void onSaved: (data: any) => void } type CreateMode = 'api-key' | 'oauth' | 'manual' const SubscriptionModal = ({ pluginDetail, onCancel, onSaved }: Props) => { const { t } = useTranslation() const [selectedMode, setSelectedMode] = useState(null) const [subscriptionName, setSubscriptionName] = useState('') const [apiKey, setApiKey] = useState('') const [webhookUrl, setWebhookUrl] = useState('') const [isLoading, setIsLoading] = useState(false) const handleModeSelect = (mode: CreateMode) => { setSelectedMode(mode) } const handleBack = () => { setSelectedMode(null) } const handleCreate = async () => { if (!selectedMode || !subscriptionName.trim()) return setIsLoading(true) try { const subscriptionData = { name: subscriptionName, mode: selectedMode, plugin_id: pluginDetail.plugin_id, ...(selectedMode === 'api-key' && { api_key: apiKey }), ...(selectedMode === 'manual' && { webhook_url: webhookUrl }), } onSaved(subscriptionData) } finally { setIsLoading(false) } } const canCreate = subscriptionName.trim() && ( selectedMode === 'oauth' || (selectedMode === 'api-key' && apiKey.trim()) || (selectedMode === 'manual' && webhookUrl.trim()) ) if (!selectedMode) { return (

{t('plugin.detailPanel.createSubscription')}

{t('plugin.detailPanel.createSubscriptionDesc')}

) } return (

{selectedMode === 'api-key' && t('plugin.detailPanel.createViaApiKey')} {selectedMode === 'oauth' && t('plugin.detailPanel.createViaOAuth')} {selectedMode === 'manual' && t('plugin.detailPanel.createManual')}

setSubscriptionName(e.target.value)} placeholder={t('plugin.detailPanel.subscriptionNamePlaceholder')} className='w-full' />
{selectedMode === 'api-key' && (
setApiKey(e.target.value)} placeholder={t('plugin.detailPanel.apiKeyPlaceholder')} className='w-full' />
)} {selectedMode === 'oauth' && (

{t('plugin.detailPanel.oauthCreateNote')}

)} {selectedMode === 'manual' && (
setWebhookUrl(e.target.value)} placeholder={t('plugin.detailPanel.webhookUrlPlaceholder')} className='w-full' />
)}
) } export default SubscriptionModal