'use client'; import { Button } from '@/components/ui/button'; import { Card, CardContent, CardFooter, CardHeader, CardTitle, } from '@/components/ui/card'; import { Label } from '@/components/ui/label'; import { ScrollableSettingsWrapper } from '@/components/wrappers/settings-scroll'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { useDeleteApiUserMe, useGetApiUserMe, usePatchApiUserMe, } from '@/generated/api/user/user'; import LabeledInput from '@/components/custom-ui/labeled-input'; import { GroupWrapper } from '@/components/wrappers/group-wrapper'; import ProfilePictureUpload from '@/components/misc/profile-picture-upload'; import { CalendarClock, MailOpen, UserPen } from 'lucide-react'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import useZodForm from '@/lib/hooks/useZodForm'; import { updateUserClientSchema } from '@/app/api/user/me/validation'; import { useRouter } from 'next/navigation'; import { toast } from 'sonner'; import { ToastInner } from '@/components/misc/toast-inner'; export default function AccountTab() { const router = useRouter(); const { data, refetch } = useGetApiUserMe(); const deleteUser = useDeleteApiUserMe(); const updateAccount = usePatchApiUserMe(); const { handleSubmit, formState, register } = useZodForm( updateUserClientSchema, ); const onSubmit = handleSubmit(async (submitData) => { await updateAccount.mutateAsync( { data: { first_name: submitData?.first_name !== data?.data.user.first_name ? submitData?.first_name : undefined, last_name: submitData?.last_name !== data?.data.user.last_name ? submitData?.last_name : undefined, name: submitData?.name !== data?.data.user.name ? submitData?.name : undefined, email: submitData?.email !== data?.data.user.email ? submitData?.email : undefined, image: submitData?.image !== data?.data.user.image ? submitData?.image : undefined, timezone: submitData?.timezone !== data?.data.user.timezone ? submitData?.timezone : undefined, }, }, { onSuccess: () => { refetch(); toast.custom((t) => ( )); }, onError: (error) => { toast.custom((t) => ( )); }, }, ); }); if (!data) { return (

Loading Settings...

); } return (
Account Settings {/*-------------------- General Settings --------------------*/}
Email might be managed by your SSO provider.
{formState.errors.root && (

{formState.errors.root.message}

)}
{/*-------------------- General Settings --------------------*/} {/*-------------------- Profile Picture --------------------*/}
{/*-------------------- Profile Picture --------------------*/} {/*-------------------- Regional Settings --------------------*/}
{/*-------------------- Regional Settings --------------------*/} {/*-------------------- DANGER ZONE --------------------*/}
Are you absolutely sure?
This action cannot be undone. This will permanently delete your account and remove your data from our servers.
Permanently delete your account and all associated data.
{/*-------------------- DANGER ZONE --------------------*/}
); }