Files
tonePage/apps/frontend/components/nav-user/SetPassword.tsx

70 lines
2.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use client';
import { Button } from "@/components/ui/button"
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from "@/components/ui/dialog"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { FC } from "react";
import { DialogProps } from "@radix-ui/react-dialog";
import { toast } from "sonner";
import { UserAPI } from "@/lib/api/client";
import { handleAPIError } from "@/lib/api/common";
export default function SetPassword({ onOpenChange, ...props }: React.ComponentProps<FC<DialogProps>>) {
async function handleSetPassword(password: string) {
try {
await UserAPI.updatePassword(password);
toast.success('新密码设置成功');
onOpenChange?.(false);
} catch (error) {
handleAPIError(error, ({ message }) => toast.error(message || '新密码设置失败'))
}
}
return (
<Dialog onOpenChange={onOpenChange} {...props}>
<DialogContent className="sm:max-w-100">
<DialogHeader>
<DialogTitle></DialogTitle>
<DialogDescription>
6-32
</DialogDescription>
</DialogHeader>
<form onSubmit={e => {
e.preventDefault();
const formData = new FormData(e.currentTarget);
const password = formData.get('password') as string;
handleSetPassword(password);
}}>
<div className="grid gap-4 py-4">
<div className="grid grid-cols-4 items-center gap-4">
<Label htmlFor="password" className="text-right">
</Label>
<Input
id="password"
name="password"
type="password"
defaultValue=""
className="col-span-3"
/>
</div>
</div>
<DialogFooter>
<Button type="button" variant='secondary' onClick={() => onOpenChange?.(false)}></Button>
<Button type="submit"></Button>
</DialogFooter>
</form>
</DialogContent>
</Dialog >
)
}