'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'])}
) }