aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/pages/setting/ChangePasswordDialog.tsx
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-07-29 01:22:38 +0800
committercrupest <crupest@outlook.com>2023-07-29 01:22:38 +0800
commit2d4a75a21a8a97db8017b56e321c56c7d70bc674 (patch)
tree4817a03160b530d7efb3dbcd230b00281ee0a303 /FrontEnd/src/pages/setting/ChangePasswordDialog.tsx
parenta9dc6b16d6730d8d1dc1ea2fab8ab3830fe56ce4 (diff)
downloadtimeline-2d4a75a21a8a97db8017b56e321c56c7d70bc674.tar.gz
timeline-2d4a75a21a8a97db8017b56e321c56c7d70bc674.tar.bz2
timeline-2d4a75a21a8a97db8017b56e321c56c7d70bc674.zip
...
Diffstat (limited to 'FrontEnd/src/pages/setting/ChangePasswordDialog.tsx')
-rw-r--r--FrontEnd/src/pages/setting/ChangePasswordDialog.tsx79
1 files changed, 46 insertions, 33 deletions
diff --git a/FrontEnd/src/pages/setting/ChangePasswordDialog.tsx b/FrontEnd/src/pages/setting/ChangePasswordDialog.tsx
index 9ca95168..407f3051 100644
--- a/FrontEnd/src/pages/setting/ChangePasswordDialog.tsx
+++ b/FrontEnd/src/pages/setting/ChangePasswordDialog.tsx
@@ -3,7 +3,9 @@ import { useNavigate } from "react-router-dom";
import { userService } from "@/services/user";
-import OperationDialog from "@/views/common/dialog/OperationDialog";
+import OperationDialog, {
+ InputErrorDict,
+} from "@/views/common/dialog/OperationDialog";
interface ChangePasswordDialogProps {
open: boolean;
@@ -20,45 +22,56 @@ export function ChangePasswordDialog(props: ChangePasswordDialogProps) {
return (
<OperationDialog
open={open}
+ close={close}
title="settings.dialogChangePassword.title"
color="danger"
inputPrompt="settings.dialogChangePassword.prompt"
- inputScheme={[
- {
- type: "text",
- label: "settings.dialogChangePassword.inputOldPassword",
- password: true,
+ inputs={{
+ inputs: [
+ {
+ key: "oldPassword",
+ type: "text",
+ label: "settings.dialogChangePassword.inputOldPassword",
+ password: true,
+ },
+ {
+ key: "newPassword",
+ type: "text",
+ label: "settings.dialogChangePassword.inputNewPassword",
+ password: true,
+ },
+ {
+ key: "retypedNewPassword",
+ type: "text",
+ label: "settings.dialogChangePassword.inputRetypeNewPassword",
+ password: true,
+ },
+ ],
+ validator: ({ oldPassword, newPassword, retypedNewPassword }) => {
+ const result: InputErrorDict = {};
+ if (oldPassword === "") {
+ result["oldPassword"] =
+ "settings.dialogChangePassword.errorEmptyOldPassword";
+ }
+ if (newPassword === "") {
+ result["newPassword"] =
+ "settings.dialogChangePassword.errorEmptyNewPassword";
+ }
+ if (retypedNewPassword !== newPassword) {
+ result["retypedNewPassword"] =
+ "settings.dialogChangePassword.errorRetypeNotMatch";
+ }
+ return result;
},
- {
- type: "text",
- label: "settings.dialogChangePassword.inputNewPassword",
- password: true,
- },
- {
- type: "text",
- label: "settings.dialogChangePassword.inputRetypeNewPassword",
- password: true,
- },
- ]}
- inputValidator={([oldPassword, newPassword, retypedNewPassword]) => {
- const result: Record<number, string> = {};
- if (oldPassword === "") {
- result[0] = "settings.dialogChangePassword.errorEmptyOldPassword";
- }
- if (newPassword === "") {
- result[1] = "settings.dialogChangePassword.errorEmptyNewPassword";
- }
- if (retypedNewPassword !== newPassword) {
- result[2] = "settings.dialogChangePassword.errorRetypeNotMatch";
- }
- return result;
}}
- onProcess={async ([oldPassword, newPassword]) => {
- await userService.changePassword(oldPassword, newPassword);
+ onProcess={async ({ oldPassword, newPassword }) => {
+ await userService.changePassword(
+ oldPassword as string,
+ newPassword as string,
+ );
setRedirect(true);
}}
- close={() => {
- props.close();
+ onSuccessAndClose={() => {
if (redirect) {
navigate("/login");
}