fix: user patch with empty email (#578)

This commit is contained in:
boojack 2022-11-25 22:34:24 +08:00 committed by GitHub
parent 88c3b1ad0f
commit b511a7b634
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 7 deletions

View file

@ -199,7 +199,7 @@ func (s *Server) registerUserRoutes(g *echo.Group) {
return echo.NewHTTPError(http.StatusBadRequest, "Malformatted patch user request").SetInternal(err) return echo.NewHTTPError(http.StatusBadRequest, "Malformatted patch user request").SetInternal(err)
} }
if userPatch.Email != nil && !common.ValidateEmail(*userPatch.Email) { if userPatch.Email != nil && *userPatch.Email != "" && !common.ValidateEmail(*userPatch.Email) {
return echo.NewHTTPError(http.StatusBadRequest, "Invalid email format") return echo.NewHTTPError(http.StatusBadRequest, "Invalid email format")
} }

View file

@ -1,3 +1,4 @@
import { isEqual } from "lodash";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { useAppSelector } from "../store"; import { useAppSelector } from "../store";
@ -64,12 +65,19 @@ const UpdateAccountDialog: React.FC<Props> = ({ destroy }: Props) => {
try { try {
const user = userService.getState().user as User; const user = userService.getState().user as User;
await userService.patchUser({ const userPatch: UserPatch = {
id: user.id, id: user.id,
username: state.username, };
nickname: state.nickname, if (!isEqual(user.nickname, state.nickname)) {
email: state.email, userPatch.nickname = state.nickname;
}); }
if (!isEqual(user.username, state.username)) {
userPatch.username = state.username;
}
if (!isEqual(user.email, state.email)) {
userPatch.email = state.email;
}
await userService.patchUser(userPatch);
toastHelper.info("Update succeed"); toastHelper.info("Update succeed");
handleCloseBtnClick(); handleCloseBtnClick();
} catch (error: any) { } catch (error: any) {

View file

@ -76,7 +76,7 @@ const UserBanner = () => {
</div> </div>
<Dropdown <Dropdown
trigger={<Icon.MoreHorizontal className="ml-2 w-5 h-auto cursor-pointer" />} trigger={<Icon.MoreHorizontal className="ml-2 w-5 h-auto cursor-pointer" />}
actionsClassName="!w-36" actionsClassName="min-w-36"
actions={ actions={
<> <>
{!userService.isVisitorMode() && ( {!userService.isVisitorMode() && (