import { useState } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@pram/ui/components/card"; import { Input } from "@pram/ui/components/input"; import { Label } from "@pram/ui/components/label"; import { Button } from "@pram/ui/components/button"; import { toast } from "sonner"; import { getErrorMessage } from "@/lib/error-utils"; import { authClient } from "@/lib/auth-client"; export function AccountSettings() { const { data: session } = authClient.useSession(); const user = session?.user; const [currentPassword, setCurrentPassword] = useState(""); const [newPassword, setNewPassword] = useState(""); const [confirmPassword, setConfirmPassword] = useState(""); const [isChangingPassword, setIsChangingPassword] = useState(false); const [newEmail, setNewEmail] = useState(""); const [isChangingEmail, setIsChangingEmail] = useState(false); const handleChangePassword = async (e: React.FormEvent) => { e.preventDefault(); if (!/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/.test(newPassword)) { toast.error("Password minimal 8 karakter, mengandung huruf besar, huruf kecil, dan angka"); return; } if (newPassword !== confirmPassword) { toast.error("Password baru tidak cocok"); return; } setIsChangingPassword(true); try { await authClient.changePassword({ currentPassword, newPassword, revokeOtherSessions: true, }); toast.success("Password berhasil diubah"); setCurrentPassword(""); setNewPassword(""); setConfirmPassword(""); } catch (err: unknown) { toast.error(getErrorMessage(err) || "Gagal mengubah password"); } finally { setIsChangingPassword(false); } }; const handleChangeEmail = async (e: React.FormEvent) => { e.preventDefault(); if (!newEmail) return; setIsChangingEmail(true); try { await authClient.changeEmail({ newEmail }); toast.success("Email berhasil diubah. Cek email baru Anda untuk verifikasi."); setNewEmail(""); } catch (err: unknown) { toast.error(getErrorMessage(err) || "Gagal mengubah email"); } finally { setIsChangingEmail(false); } }; return (
{user?.name}
{user?.email}