diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 5f27ecefed..1d22b73878 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -13,6 +13,7 @@ "title": "Available variables" }, "add.title": "Create Agent", + "add.unsaved_changes_warning": "You have unsaved changes. Are you sure you want to close?", "delete.popup.content": "Are you sure you want to delete this agent?", "edit.model.select.title": "Select Model", "edit.title": "Edit Agent", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index a803e2a081..f76623aec0 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -13,6 +13,7 @@ "title": "利用可能な変数" }, "add.title": "エージェントを作成", + "add.unsaved_changes_warning": "未保存の変更があります。続行しますか?", "delete.popup.content": "このエージェントを削除してもよろしいですか?", "edit.model.select.title": "モデルを選択", "edit.title": "エージェントを編集", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 6fd32362a1..445a6c8cda 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -13,6 +13,7 @@ "title": "Доступные переменные" }, "add.title": "Создать агента", + "add.unsaved_changes_warning": "У вас есть несохраненные изменения. Вы уверены, что хотите закрыть?", "delete.popup.content": "Вы уверены, что хотите удалить этого агента?", "edit.model.select.title": "Выбрать модель", "edit.title": "Редактировать агента", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index d8503085fd..6bfb3d71bf 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -13,6 +13,7 @@ "title": "可用的变量" }, "add.title": "创建智能体", + "add.unsaved_changes_warning": "你有未保存的内容,确定要关闭吗?", "delete.popup.content": "确定要删除此智能体吗?", "edit.model.select.title": "选择模型", "edit.title": "编辑智能体", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 55759eca01..480edf41e2 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -13,6 +13,7 @@ "title": "可用的變數" }, "add.title": "建立智慧代理人", + "add.unsaved_changes_warning": "有未保存的變更,確定要關閉嗎?", "delete.popup.content": "確定要刪除此智慧代理人嗎?", "edit.model.select.title": "選擇模型", "edit.title": "編輯智慧代理人", diff --git a/src/renderer/src/pages/agents/components/AddAgentPopup.tsx b/src/renderer/src/pages/agents/components/AddAgentPopup.tsx index 108052a701..c213614d35 100644 --- a/src/renderer/src/pages/agents/components/AddAgentPopup.tsx +++ b/src/renderer/src/pages/agents/components/AddAgentPopup.tsx @@ -41,6 +41,7 @@ const PopupContainer: React.FC = ({ resolve }) => { const [showUndoButton, setShowUndoButton] = useState(false) const [originalPrompt, setOriginalPrompt] = useState('') const [tokenCount, setTokenCount] = useState(0) + const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false) const knowledgeState = useAppSelector((state) => state.knowledge) const showKnowledgeIcon = useSidebarIconShow('knowledge') const knowledgeOptions: SelectProps['options'] = [] @@ -92,8 +93,21 @@ const PopupContainer: React.FC = ({ resolve }) => { setOpen(false) } - const onCancel = () => { - setOpen(false) + const handleCancel = () => { + if (hasUnsavedChanges) { + window.modal.confirm({ + title: t('common.confirm'), + content: t('agents.add.unsaved_changes_warning'), + okText: t('common.confirm'), + cancelText: t('common.cancel'), + centered: true, + onOk: () => { + setOpen(false) + } + }) + } else { + setOpen(false) + } } const onClose = () => { @@ -124,6 +138,7 @@ const PopupContainer: React.FC = ({ resolve }) => { form.setFieldsValue({ prompt: generatedText }) setShowUndoButton(true) setOriginalPrompt(content) + setHasUnsavedChanges(true) } catch (error) { console.error('Error fetching data:', error) } @@ -146,7 +161,7 @@ const PopupContainer: React.FC = ({ resolve }) => { title={t('agents.add.title')} open={open} onOk={() => formRef.current?.submit()} - onCancel={onCancel} + onCancel={handleCancel} maskClosable={false} afterClose={onClose} okText={t('agents.add.title')} @@ -167,9 +182,21 @@ const PopupContainer: React.FC = ({ resolve }) => { setTokenCount(count) setShowUndoButton(false) } + + const currentValues = form.getFieldsValue() + setHasUnsavedChanges(currentValues.name?.trim() || currentValues.prompt?.trim() || emoji) }}> - } arrow> + { + setEmoji(selectedEmoji) + setHasUnsavedChanges(true) + }} + /> + } + arrow>