'use client' import { DialogCloseButton, DialogContent, DialogDescription, DialogTitle } from '@langgenius/dify-ui/dialog' import { toast } from '@langgenius/dify-ui/toast' import { useAtomValue, useSetAtom } from 'jotai' import { ScopeProvider } from 'jotai-scope' import { useTranslation } from 'react-i18next' import { deploymentErrorMessage } from '../../shared/domain/error' import { closeCreateReleaseDialogAtom, createReleaseFormAtom, createReleaseFormIsSubmittingAtom, CreateReleaseSubmissionBlockedError, requestCloseCreateReleaseDialogAtom, submitCreateReleaseFormAtom, } from '../state' import { CreateReleaseActions } from './actions' import { ReleaseContentFeedback } from './content-feedback' import { ReleaseMetadataFields } from './metadata-fields' import { ReleaseSourceSection } from './source-section' function CreateReleaseCloseButton() { const isSubmitting = useAtomValue(createReleaseFormIsSubmittingAtom) const requestCloseDialog = useSetAtom(requestCloseCreateReleaseDialogAtom) return ( { event.preventDefault() event.stopPropagation() requestCloseDialog() }} onClick={(event) => { event.preventDefault() event.stopPropagation() requestCloseDialog() }} /> ) } export function CreateReleaseDialogContent() { return ( ) } function CreateReleaseDialogSurface() { const closeDialog = useSetAtom(closeCreateReleaseDialogAtom) const submitCreateReleaseForm = useSetAtom(submitCreateReleaseFormAtom) const { t } = useTranslation('deployments') async function handleSubmit() { try { const response = await submitCreateReleaseForm() if (!response) return toast.success(t('versions.createSuccess', { name: response.release.displayName })) closeDialog() } catch (error) { if (error instanceof CreateReleaseSubmissionBlockedError) { toast.error(t('versions.dslUnsupportedMode')) return } const message = await deploymentErrorMessage(error) toast.error(message || t('versions.createFailed')) } } return ( <>
{ event.preventDefault() event.stopPropagation() void handleSubmit() }} >
{t('versions.createRelease')} {t('versions.createReleaseDescription')}
) }