import { useDialogue } from '@/lib/dialogues/useDialogue' import { Button } from '@/components/ui/button' import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog' import { toast } from '@/components/ui/use-toast' import { apiPost } from '@/lib/api' import { useUITranslation } from '@/lib/useUITranslation' import { rememberUserCode } from '@/lib/users' import type { FC } from 'react' import type { User } from '@/types' type Props = { visible: boolean onVisibleChange: (visible: boolean) => void user: User | null setUser: React.Dispatch> } const UserCodeDialogue: FC = ({ visible, onVisibleChange, user, setUser }) => { const dialogue = useDialogue () const { label } = useUITranslation ('settings') const handleChange = async () => { if (!(user)) return if (!(await dialogue.confirm ({ title: label ('userCode.confirm'), description: (

{label ('userCode.logoutWarning')}

), confirmText: label ('userCode.confirmRenew'), cancelText: label ('actions.cancel'), closeLabel: label ('actions.close'), variant: 'danger' }))) return const data = await apiPost<{ code: string }> ('/users/code/renew', { }, { headers: { 'Content-Type': 'multipart/form-data' } }) if (data.code) { rememberUserCode (data.code) setUser (user => ({ ...user, inheritanceCode: data.code } as User)) toast ({ title: label ('userCode.renewed') }) } } return ( {label ('userCode.title')}

{label ('userCode.description')}

{user?.inheritanceCode}

{label ('userCode.secretWarning')}

) } export default UserCodeDialogue