import { useState } from "react"; import { toast } from "react-hot-toast"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { userStore } from "@/store"; import { User } from "@/types/proto/api/v1/user_service"; import { useTranslate } from "@/utils/i18n"; interface Props { open: boolean; onOpenChange: (open: boolean) => void; user?: User; onSuccess?: () => void; } function ChangeMemberPasswordDialog({ open, onOpenChange, user, onSuccess }: Props) { const t = useTranslate(); const [newPassword, setNewPassword] = useState(""); const [newPasswordAgain, setNewPasswordAgain] = useState(""); const handleCloseBtnClick = () => { onOpenChange(false); }; const handleNewPasswordChanged = (e: React.ChangeEvent) => { const text = e.target.value as string; setNewPassword(text); }; const handleNewPasswordAgainChanged = (e: React.ChangeEvent) => { const text = e.target.value as string; setNewPasswordAgain(text); }; const handleSaveBtnClick = async () => { if (!user) return; if (newPassword === "" || newPasswordAgain === "") { toast.error(t("message.fill-all")); return; } if (newPassword !== newPasswordAgain) { toast.error(t("message.new-password-not-match")); setNewPasswordAgain(""); return; } try { await userStore.updateUser( { name: user.name, password: newPassword, }, ["password"], ); toast(t("message.password-changed")); onSuccess?.(); onOpenChange(false); } catch (error: any) { console.error(error); toast.error(error.details); } }; if (!user) return null; return ( {t("setting.account-section.change-password")} ({user.displayName})
); } export default ChangeMemberPasswordDialog;