|
@@ -14,6 +14,8 @@ import { ToastContext } from '@/app/components/base/toast'
|
|
|
import AppIcon from '@/app/components/base/app-icon'
|
|
|
import Avatar from '@/app/components/base/avatar'
|
|
|
import { IS_CE_EDITION } from '@/config'
|
|
|
+import { XClose } from '@/app/components/base/icons/src/vender/line/general'
|
|
|
+import { AlertCircle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback'
|
|
|
|
|
|
const titleClassName = `
|
|
|
text-sm font-medium text-gray-900
|
|
@@ -39,6 +41,7 @@ export default function AccountPage() {
|
|
|
const [currentPassword, setCurrentPassword] = useState('')
|
|
|
const [password, setPassword] = useState('')
|
|
|
const [confirmPassword, setConfirmPassword] = useState('')
|
|
|
+ const [showDeleteAccountModal, setShowDeleteAccountModal] = useState(false)
|
|
|
|
|
|
const handleEditName = () => {
|
|
|
setEditNameModalVisible(true)
|
|
@@ -148,21 +151,20 @@ export default function AccountPage() {
|
|
|
<Button className='font-medium !text-gray-700 !px-3 !py-[7px] !text-[13px]' onClick={() => setEditPasswordModalVisible(true)}>{userProfile.is_password_set ? t('common.account.resetPassword') : t('common.account.setPassword')}</Button>
|
|
|
</div>
|
|
|
)}
|
|
|
- {!!apps.length && (
|
|
|
- <>
|
|
|
- <div className='mb-6 border-[0.5px] border-gray-100' />
|
|
|
- <div className='mb-8'>
|
|
|
- <div className={titleClassName}>{t('common.account.langGeniusAccount')}</div>
|
|
|
- <div className={descriptionClassName}>{t('common.account.langGeniusAccountTip')}</div>
|
|
|
- <Collapse
|
|
|
- title={`${t('common.account.showAppLength', { length: apps.length })}`}
|
|
|
- items={apps.map(app => ({ key: app.id, name: app.name }))}
|
|
|
- renderItem={renderAppItem}
|
|
|
- wrapperClassName='mt-2'
|
|
|
- />
|
|
|
- </div>
|
|
|
- </>
|
|
|
- )}
|
|
|
+ <div className='mb-6 border-[0.5px] border-gray-100' />
|
|
|
+ <div className='mb-8'>
|
|
|
+ <div className={titleClassName}>{t('common.account.langGeniusAccount')}</div>
|
|
|
+ <div className={descriptionClassName}>{t('common.account.langGeniusAccountTip')}</div>
|
|
|
+ {!!apps.length && (
|
|
|
+ <Collapse
|
|
|
+ title={`${t('common.account.showAppLength', { length: apps.length })}`}
|
|
|
+ items={apps.map(app => ({ key: app.id, name: app.name }))}
|
|
|
+ renderItem={renderAppItem}
|
|
|
+ wrapperClassName='mt-2'
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ <Button className='mt-2 font-medium text-[#D92D20] !px-3 !py-[7px] !text-[13px]' onClick={() => setShowDeleteAccountModal(true)}>{t('common.account.delete')}</Button>
|
|
|
+ </div>
|
|
|
{editNameModalVisible && (
|
|
|
<Modal
|
|
|
isShow
|
|
@@ -242,6 +244,33 @@ export default function AccountPage() {
|
|
|
</div>
|
|
|
</Modal>
|
|
|
)}
|
|
|
+ {showDeleteAccountModal && (
|
|
|
+ <Modal
|
|
|
+ wrapperClassName='z-20'
|
|
|
+ className={classNames('p-8 max-w-[480px] w-[480px]', s.bg)}
|
|
|
+ isShow={showDeleteAccountModal}
|
|
|
+ onClose={() => {}}
|
|
|
+ >
|
|
|
+ <div className='absolute right-4 top-4 p-2 cursor-pointer' onClick={() => setShowDeleteAccountModal(false)}>
|
|
|
+ <XClose className='w-4 h-4 text-gray-500' />
|
|
|
+ </div>
|
|
|
+ <div className='w-12 h-12 p-3 bg-white rounded-xl border-[0.5px] border-gray-100 shadow-xl'>
|
|
|
+ <AlertCircle className='w-6 h-6 text-[#D92D20]' />
|
|
|
+ </div>
|
|
|
+ <div className='relative mt-3 text-xl font-semibold leading-[30px] text-gray-900'>{t('common.account.delete')}</div>
|
|
|
+ <div className='my-1 text-[#D92D20] text-sm leading-5'>
|
|
|
+ {t('common.account.deleteTip')}
|
|
|
+ </div>
|
|
|
+ <div className='mt-3 text-sm leading-5'>
|
|
|
+ <span>{t('common.account.deleteConfirmTip')}</span>
|
|
|
+ <a className='text-primary-600 cursor' href={`mailto:support@dify.ai?subject=Delete Account Request&body=Delete Account: ${userProfile.email}`} target='_blank'>support@dify.ai</a>
|
|
|
+ </div>
|
|
|
+ <div className='my-2 px-3 py-2 rounded-lg bg-gray-100 text-sm font-medium leading-5 text-gray-800'>{`Delete Account: ${userProfile.email}`}</div>
|
|
|
+ <div className='pt-6 flex justify-end items-center'>
|
|
|
+ <Button className='w-24 text-gray-700 text-sm font-medium' onClick={() => setShowDeleteAccountModal(false)}>{t('common.operation.ok')}</Button>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ )}
|
|
|
</>
|
|
|
)
|
|
|
}
|