chore: add a secondary confirmation dialog when the user delete the tool (#5634)

This commit is contained in:
非法操作 2024-06-26 19:27:22 +08:00 committed by GitHub
parent e1a72e0e2b
commit 89a7c70730
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 60 additions and 4 deletions

View File

@ -302,7 +302,7 @@ const EditCustomCollectionModal: FC<Props> = ({
<div className={cn(isEdit ? 'justify-between' : 'justify-end', 'mt-2 shrink-0 flex py-4 px-6 rounded-b-[10px] bg-gray-50 border-t border-black/5')} >
{
isEdit && (
<Button onClick={onRemove}>{t('common.operation.remove')}</Button>
<Button onClick={onRemove} className='text-red-500 border-red-50 hover:border-red-500'>{t('common.operation.delete')}</Button>
)
}
<div className='flex space-x-2 '>

View File

@ -8,6 +8,7 @@ import type { Collection, CustomCollectionBackend, Tool, WorkflowToolProviderReq
import ToolItem from './tool-item'
import I18n from '@/context/i18n'
import { getLanguage } from '@/i18n/language'
import Confirm from '@/app/components/base/confirm'
import AppIcon from '@/app/components/base/app-icon'
import Button from '@/app/components/base/button'
import Indicator from '@/app/components/header/indicator'
@ -83,6 +84,8 @@ const ProviderDetail = ({
// custom provider
const [customCollection, setCustomCollection] = useState<CustomCollectionBackend | WorkflowToolProviderResponse | null>(null)
const [isShowEditCollectionToolModal, setIsShowEditCustomCollectionModal] = useState(false)
const [showConfirmDelete, setShowConfirmDelete] = useState(false)
const [deleteAction, setDeleteAction] = useState(null)
const doUpdateCustomToolCollection = async (data: CustomCollectionBackend) => {
await updateCustomCollection(data)
onRefreshData()
@ -158,6 +161,23 @@ const ProviderDetail = ({
})
setIsShowEditWorkflowToolModal(false)
}
const onClickCustomToolDelete = () => {
setDeleteAction('customTool')
setShowConfirmDelete(true)
}
const onClickWorkflowToolDelete = () => {
setDeleteAction('workflowTool')
setShowConfirmDelete(true)
}
const handleConfirmDelete = () => {
if (deleteAction === 'customTool')
doRemoveCustomToolCollection()
else if (deleteAction === 'workflowTool')
removeWorkflowToolProvider()
setShowConfirmDelete(false)
}
// ToolList
const [toolList, setToolList] = useState<Tool[]>([])
@ -330,17 +350,27 @@ const ProviderDetail = ({
payload={customCollection}
onHide={() => setIsShowEditCustomCollectionModal(false)}
onEdit={doUpdateCustomToolCollection}
onRemove={doRemoveCustomToolCollection}
onRemove={onClickCustomToolDelete}
/>
)}
{isShowEditWorkflowToolModal && (
<WorkflowToolModal
payload={customCollection}
onHide={() => setIsShowEditWorkflowToolModal(false)}
onRemove={removeWorkflowToolProvider}
onRemove={onClickWorkflowToolDelete}
onSave={updateWorkflowToolProvider}
/>
)}
{showConfirmDelete && (
<Confirm
title={t('tools.createTool.deleteToolConfirmTitle')}
content={t('tools.createTool.deleteToolConfirmContent')}
isShow={showConfirmDelete}
onClose={() => setShowConfirmDelete(false)}
onConfirm={handleConfirmDelete}
onCancel={() => setShowConfirmDelete(false)}
/>
)}
</div>
)
}

View File

@ -244,7 +244,7 @@ const WorkflowToolAsModal: FC<Props> = ({
</div>
<div className={cn((!isAdd && onRemove) ? 'justify-between' : 'justify-end', 'mt-2 shrink-0 flex py-4 px-6 rounded-b-[10px] bg-gray-50 border-t border-black/5')} >
{!isAdd && onRemove && (
<Button onClick={onRemove}>{t('common.operation.remove')}</Button>
<Button onClick={onRemove} className='text-red-500 border-red-50 hover:border-red-500'>{t('common.operation.delete')}</Button>
)}
<div className='flex space-x-2 '>
<Button onClick={onHide}>{t('common.operation.cancel')}</Button>

View File

@ -73,6 +73,8 @@ const translation = {
privacyPolicyPlaceholder: 'Bitte Datenschutzrichtlinie eingeben',
customDisclaimer: 'Benutzer Haftungsausschluss',
customDisclaimerPlaceholder: 'Bitte benutzerdefinierten Haftungsausschluss eingeben',
deleteToolConfirmTitle: 'Löschen Sie dieses Werkzeug?',
deleteToolConfirmContent: 'Das Löschen des Werkzeugs ist irreversibel. Benutzer können Ihr Werkzeug nicht mehr verwenden.',
},
test: {
title: 'Test',

View File

@ -105,6 +105,8 @@ const translation = {
customDisclaimerPlaceholder: 'Please enter custom disclaimer',
confirmTitle: 'Confirm to save ?',
confirmTip: 'Apps using this tool will be affected',
deleteToolConfirmTitle: 'Delete this Tool?',
deleteToolConfirmContent: 'Deleting the Tool is irreversible. Users will no longer be able to access your Tool.',
},
test: {
title: 'Test',

View File

@ -73,6 +73,8 @@ const translation = {
privacyPolicyPlaceholder: 'Veuillez entrer la politique de confidentialité',
customDisclaimer: 'Clause de non-responsabilité personnalisée',
customDisclaimerPlaceholder: 'Entrez le texte de la clause de non-responsabilité personnalisée',
deleteToolConfirmTitle: 'Supprimer cet outil ?',
deleteToolConfirmContent: 'La suppression de l\'outil est irréversible. Les utilisateurs ne pourront plus accéder à votre outil.',
},
test: {
title: 'Test',

View File

@ -108,6 +108,8 @@ const translation = {
customDisclaimerPlaceholder: 'कस्टम अस्वीकरण दर्ज करें',
confirmTitle: 'सहेजने की पुष्टि करें ?',
confirmTip: 'इस उपकरण का उपयोग करने वाले ऐप्स प्रभावित होंगे',
deleteToolConfirmTitle: 'इस उपकरण को हटाएं?',
deleteToolConfirmContent: 'इस उपकरण को हटाने से वापस नहीं आ सकता है। उपयोगकर्ता अब तक आपके उपकरण पर अन्तराल नहीं कर सकेंगे।',
},
test: {
title: 'परीक्षण',

View File

@ -73,6 +73,8 @@ const translation = {
privacyPolicyPlaceholder: 'プライバシーポリシーを入力してください',
customDisclaimer: 'カスタム免責事項',
customDisclaimerPlaceholder: 'カスタム免責事項を入力してください',
deleteToolConfirmTitle: 'このツールを削除しますか?',
deleteToolConfirmContent: 'ツールの削除は取り消しできません。ユーザーはもうあなたのツールにアクセスできません。',
},
test: {
title: 'テスト',

View File

@ -105,6 +105,8 @@ const translation = {
customDisclaimerPlaceholder: '사용자 정의 권리 포기 문구를 입력해주세요.',
confirmTitle: '저장하시겠습니까?',
confirmTip: '이 도구를 사용하는 앱은 영향을 받습니다.',
deleteToolConfirmTitle: '이 도구를 삭제하시겠습니까?',
deleteToolConfirmContent: '이 도구를 삭제하면 되돌릴 수 없습니다. 사용자는 더 이상 당신의 도구에 액세스할 수 없습니다.',
},
test: {
title: '테스트',

View File

@ -75,6 +75,8 @@ const translation = {
privacyPolicyPlaceholder: 'Proszę wprowadzić politykę prywatności',
customDisclaimer: 'Oświadczenie niestandardowe',
customDisclaimerPlaceholder: 'Proszę wprowadzić oświadczenie niestandardowe',
deleteToolConfirmTitle: 'Skasuj ten przyrząd?',
deleteToolConfirmContent: 'Usunięcie narzędzia jest nieodwracalne. Użytkownicy nie będą mieli już dostępu do Twojego narzędzia.',
},
test: {
title: 'Test',

View File

@ -73,6 +73,8 @@ const translation = {
privacyPolicyPlaceholder: 'Digite a política de privacidade',
customDisclaimer: 'Aviso Personalizado',
customDisclaimerPlaceholder: 'Digite o aviso personalizado',
deleteToolConfirmTitle: 'Excluir esta ferramenta?',
deleteToolConfirmContent: 'Excluir a ferramenta é irreversível. Os usuários não poderão mais acessar sua ferramenta.',
},
test: {
title: 'Testar',

View File

@ -71,6 +71,8 @@ const translation = {
},
privacyPolicy: 'Politica de Confidențialitate',
privacyPolicyPlaceholder: 'Vă rugăm să introduceți politica de confidențialitate',
deleteToolConfirmTitle: 'Ștergeți această unealtă?',
deleteToolConfirmContent: ' Ștergerea uneltă este irreversibilă. Utilizatorii nu vor mai putea accesa uneltă dvs.',
},
test: {
title: 'Testează',

View File

@ -72,6 +72,8 @@ const translation = {
privacyPolicyPlaceholder: 'Введіть політику конфіденційності',
customDisclaimer: 'Власний відомості',
customDisclaimerPlaceholder: 'Введіть власні відомості',
deleteToolConfirmTitle: 'Видалити цей інструмент?',
deleteToolConfirmContent: 'Видалення інструменту є незворотнім. Користувачі більше не зможуть отримати доступ до вашого інструменту.',
},
test: {

View File

@ -73,6 +73,8 @@ const translation = {
privacyPolicyPlaceholder: 'Vui lòng nhập chính sách bảo mật',
customDisclaimer: 'Tuyên bố Tùy chỉnh',
customDisclaimerPlaceholder: 'Vui lòng nhập tuyên bố tùy chỉnh',
deleteToolConfirmTitle: 'Xóa công cụ này?',
deleteToolConfirmContent: 'Xóa công cụ là không thể hồi tơi. Người dùng sẽ không thể truy cập lại công cụ của bạn.',
},
test: {
title: 'Kiểm tra',

View File

@ -105,6 +105,8 @@ const translation = {
customDisclaimerPlaceholder: '请输入自定义免责声明',
confirmTitle: '确认保存?',
confirmTip: '发布新的工具版本可能会影响该工具已关联的应用',
deleteToolConfirmTitle: '删除这个工具?',
deleteToolConfirmContent: '删除工具是不可逆的。用户将无法再访问您的工具。',
},
test: {
title: '测试',

View File

@ -73,6 +73,8 @@ const translation = {
privacyPolicyPlaceholder: '請輸入隱私協議',
customDisclaimer: '自定義免責聲明',
customDisclaimerPlaceholder: '請輸入自定義免責聲明',
deleteToolConfirmTitle: '刪除這個工具?',
deleteToolConfirmContent: '刪除工具是不可逆的。用戶將無法再訪問您的工具。',
},
test: {
title: '測試',