mirror of
https://github.com/langgenius/dify.git
synced 2026-04-05 11:39:19 +08:00
Signed-off-by: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com> Signed-off-by: lyzno1 <yuanyouhuilyz@gmail.com> Signed-off-by: kenwoodjw <blackxin55+@gmail.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Yunlu Wen <wylswz@163.com> Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: GareArc <chen4851@purdue.edu> Co-authored-by: NFish <douxc512@gmail.com> Co-authored-by: Davide Delbianco <davide.delbianco@outlook.com> Co-authored-by: minglu7 <1347866672@qq.com> Co-authored-by: Ponder <ruan.lj@foxmail.com> Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: heyszt <270985384@qq.com> Co-authored-by: Asuka Minato <i@asukaminato.eu.org> Co-authored-by: Guangdong Liu <liugddx@gmail.com> Co-authored-by: Eric Guo <eric.guocz@gmail.com> Co-authored-by: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com> Co-authored-by: XlKsyt <caixuesen@outlook.com> Co-authored-by: Dhruv Gorasiya <80987415+DhruvGorasiya@users.noreply.github.com> Co-authored-by: crazywoola <427733928@qq.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com> Co-authored-by: hj24 <mambahj24@gmail.com> Co-authored-by: GuanMu <ballmanjq@gmail.com> Co-authored-by: 非法操作 <hjlarry@163.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Tonlo <123lzs123@gmail.com> Co-authored-by: Yusuke Yamada <yamachu.dev@gmail.com> Co-authored-by: Novice <novice12185727@gmail.com> Co-authored-by: kenwoodjw <blackxin55+@gmail.com> Co-authored-by: Ademílson Tonato <ademilsonft@outlook.com> Co-authored-by: znn <jubinkumarsoni@gmail.com> Co-authored-by: yangzheli <43645580+yangzheli@users.noreply.github.com>
66 lines
2.4 KiB
TypeScript
66 lines
2.4 KiB
TypeScript
'use client'
|
|
import { useTranslation } from 'react-i18next'
|
|
import { useCallback, useState } from 'react'
|
|
import { useRouter } from 'next/navigation'
|
|
import { useDeleteAccountFeedback } from '../state'
|
|
import { useAppContext } from '@/context/app-context'
|
|
import Button from '@/app/components/base/button'
|
|
import CustomDialog from '@/app/components/base/dialog'
|
|
import Textarea from '@/app/components/base/textarea'
|
|
import Toast from '@/app/components/base/toast'
|
|
import { useLogout } from '@/service/use-common'
|
|
|
|
type DeleteAccountProps = {
|
|
onCancel: () => void
|
|
onConfirm: () => void
|
|
}
|
|
|
|
export default function FeedBack(props: DeleteAccountProps) {
|
|
const { t } = useTranslation()
|
|
const { userProfile } = useAppContext()
|
|
const router = useRouter()
|
|
const [userFeedback, setUserFeedback] = useState('')
|
|
const { isPending, mutateAsync: sendFeedback } = useDeleteAccountFeedback()
|
|
|
|
const { mutateAsync: logout } = useLogout()
|
|
const handleSuccess = useCallback(async () => {
|
|
try {
|
|
await logout()
|
|
// Tokens are now stored in cookies and cleared by backend
|
|
router.push('/signin')
|
|
Toast.notify({ type: 'info', message: t('common.account.deleteSuccessTip') })
|
|
}
|
|
catch (error) { console.error(error) }
|
|
}, [router, t])
|
|
|
|
const handleSubmit = useCallback(async () => {
|
|
try {
|
|
await sendFeedback({ feedback: userFeedback, email: userProfile.email })
|
|
props.onConfirm()
|
|
await handleSuccess()
|
|
}
|
|
catch (error) { console.error(error) }
|
|
}, [handleSuccess, userFeedback, sendFeedback, userProfile, props])
|
|
|
|
const handleSkip = useCallback(() => {
|
|
props.onCancel()
|
|
handleSuccess()
|
|
}, [handleSuccess, props])
|
|
return <CustomDialog
|
|
show={true}
|
|
onClose={props.onCancel}
|
|
title={t('common.account.feedbackTitle')}
|
|
className="max-w-[480px]"
|
|
footer={false}
|
|
>
|
|
<label className='system-sm-semibold mb-1 mt-3 flex items-center text-text-secondary'>{t('common.account.feedbackLabel')}</label>
|
|
<Textarea rows={6} value={userFeedback} placeholder={t('common.account.feedbackPlaceholder') as string} onChange={(e) => {
|
|
setUserFeedback(e.target.value)
|
|
}} />
|
|
<div className='mt-3 flex w-full flex-col gap-2'>
|
|
<Button className='w-full' loading={isPending} variant='primary' onClick={handleSubmit}>{t('common.operation.submit')}</Button>
|
|
<Button className='w-full' onClick={handleSkip}>{t('common.operation.skip')}</Button>
|
|
</div>
|
|
</CustomDialog>
|
|
}
|