Skip to content

Commit 9f2a8ba

Browse files
authored
fix settings profile (#631)
1 parent 789df65 commit 9f2a8ba

1 file changed

Lines changed: 26 additions & 8 deletions

File tree

web/app/settings/profile/page.tsx

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,25 @@ function EditProfile({ defaultValues }: { defaultValues: User }) {
4242
handleSubmit,
4343
getValues,
4444
setValue,
45-
formState: { errors },
45+
formState: { isDirty, errors },
4646
} = useForm({
4747
defaultValues: defaultValues,
4848
reValidateMode: "onChange",
4949
resolver: zodResolver(UpdateUserSchema),
5050
});
51+
5152
async function submit(data: User) {
5253
await update(data);
54+
enqueueSnackbar({
55+
message: "保存しました",
56+
});
5357
}
5458
function afterPhotoUpload(result: string) {
5559
try {
5660
setValue("pictureUrl", result);
61+
enqueueSnackbar({
62+
message: "画像を更新しました",
63+
});
5764
} catch (err) {
5865
console.error(err);
5966
// probably a network error
@@ -66,7 +73,9 @@ function EditProfile({ defaultValues }: { defaultValues: User }) {
6673
const [open, setOpen] = useState<boolean>(false);
6774

6875
function handleBack() {
69-
if (Math.random() < 1 /* todo: has errors on unsaved */) {
76+
const hasError = Object.values(errors).length >= 1;
77+
if (hasError || isDirty) {
78+
console.log(`hasError: ${hasError}`, errors);
7079
showAlert({
7180
AlertMessage: "編集中のフィールド、もしくはエラーがあります。",
7281
subAlertMessage: "本当にページを移動しますか?変更は破棄されます",
@@ -81,6 +90,10 @@ function EditProfile({ defaultValues }: { defaultValues: User }) {
8190
}
8291

8392
const values = getValues();
93+
94+
const [selectedFaculty, setSelectedFaculty] = useState(values.faculty);
95+
const departments = facultiesAndDepartments[selectedFaculty] ?? null;
96+
8497
return (
8598
<div className="flex h-full flex-col">
8699
<form onSubmit={handleSubmit(submit)}>
@@ -94,6 +107,7 @@ function EditProfile({ defaultValues }: { defaultValues: User }) {
94107
id="name"
95108
{...register("name")}
96109
/>
110+
<span className="text-error text-sm">{errors.name?.message}</span>
97111
</div>
98112
<div>
99113
<label htmlFor="gender" className="text-md">
@@ -137,6 +151,10 @@ function EditProfile({ defaultValues }: { defaultValues: User }) {
137151
className="select select-bordered w-full"
138152
id="faculty"
139153
{...register("faculty")}
154+
onChange={(e) => {
155+
setSelectedFaculty(e.target.value);
156+
setValue("department", "");
157+
}}
140158
>
141159
{faculties.map((fac) => (
142160
<option key={fac}>{fac}</option>
@@ -155,12 +173,11 @@ function EditProfile({ defaultValues }: { defaultValues: User }) {
155173
id="department"
156174
{...register("department")}
157175
>
158-
{values.faculty &&
159-
facultiesAndDepartments[values.faculty].map((dep) => (
160-
<option key={dep} value={dep}>
161-
{dep}
162-
</option>
163-
))}
176+
{departments.map((dep) => (
177+
<option key={dep} value={dep}>
178+
{dep}
179+
</option>
180+
))}
164181
</select>
165182
<span className="text-error text-sm">
166183
{errors.department?.message}
@@ -177,6 +194,7 @@ function EditProfile({ defaultValues }: { defaultValues: User }) {
177194
rows={3}
178195
autoComplete="off"
179196
/>
197+
<span className="text-error text-sm">{errors.intro?.message}</span>
180198
</div>
181199
<div className="mt-4 flex flex-col items-center text-center">
182200
<span className="text-md">プロフィール画像</span>

0 commit comments

Comments
 (0)