aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/pages
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-07-29 22:00:59 +0800
committercrupest <crupest@outlook.com>2023-07-29 22:00:59 +0800
commit22e8f24e7f7574915e4c75d3c6a5498f6e621ee8 (patch)
treea164dbcb6bf2e87e275cc736b65a22f34f788b14 /FrontEnd/src/pages
parent13f6f2a451feede8037d18cfbac64843e108ccbd (diff)
downloadtimeline-22e8f24e7f7574915e4c75d3c6a5498f6e621ee8.tar.gz
timeline-22e8f24e7f7574915e4c75d3c6a5498f6e621ee8.tar.bz2
timeline-22e8f24e7f7574915e4c75d3c6a5498f6e621ee8.zip
...
Diffstat (limited to 'FrontEnd/src/pages')
-rw-r--r--FrontEnd/src/pages/setting/ChangeAvatarDialog.tsx15
-rw-r--r--FrontEnd/src/pages/setting/ChangeNicknameDialog.tsx6
-rw-r--r--FrontEnd/src/pages/setting/ChangePasswordDialog.tsx6
-rw-r--r--FrontEnd/src/pages/setting/index.tsx46
4 files changed, 31 insertions, 42 deletions
diff --git a/FrontEnd/src/pages/setting/ChangeAvatarDialog.tsx b/FrontEnd/src/pages/setting/ChangeAvatarDialog.tsx
index b2a4e2a8..8c8e04fe 100644
--- a/FrontEnd/src/pages/setting/ChangeAvatarDialog.tsx
+++ b/FrontEnd/src/pages/setting/ChangeAvatarDialog.tsx
@@ -9,13 +9,16 @@ import { useUser } from "@/services/user";
import { getHttpUserClient } from "@/http/user";
-import ImageCropper, { Clip, applyClipToImage } from "@/views/common/ImageCropper";
+import ImageCropper, {
+ Clip,
+ applyClipToImage,
+} from "@/views/common/ImageCropper";
import Button from "@/views/common/button/Button";
import Dialog from "@/views/common/dialog/Dialog";
export interface ChangeAvatarDialogProps {
open: boolean;
- close: () => void;
+ onClose: () => void;
}
const ChangeAvatarDialog: React.FC<ChangeAvatarDialogProps> = (props) => {
@@ -42,12 +45,12 @@ const ChangeAvatarDialog: React.FC<ChangeAvatarDialogProps> = (props) => {
>("select");
const [message, setMessage] = useState<I18nText>(
- "settings.dialogChangeAvatar.prompt.select"
+ "settings.dialogChangeAvatar.prompt.select",
);
const trueMessage = convertI18nText(message, t);
- const closeDialog = props.close;
+ const closeDialog = props.onClose;
const close = React.useCallback((): void => {
if (!(state === "uploading")) {
@@ -92,7 +95,7 @@ const ChangeAvatarDialog: React.FC<ChangeAvatarDialogProps> = (props) => {
setFile(files[0]);
}
},
- []
+ [],
);
const onCropNext = React.useCallback(() => {
@@ -140,7 +143,7 @@ const ChangeAvatarDialog: React.FC<ChangeAvatarDialogProps> = (props) => {
(e: unknown) => {
setState("error");
setMessage({ type: "custom", value: (e as AxiosError).message });
- }
+ },
);
}, [user, resultBlob]);
diff --git a/FrontEnd/src/pages/setting/ChangeNicknameDialog.tsx b/FrontEnd/src/pages/setting/ChangeNicknameDialog.tsx
index 5606ce94..4d318543 100644
--- a/FrontEnd/src/pages/setting/ChangeNicknameDialog.tsx
+++ b/FrontEnd/src/pages/setting/ChangeNicknameDialog.tsx
@@ -5,11 +5,11 @@ import OperationDialog from "@/views/common/dialog/OperationDialog";
export interface ChangeNicknameDialogProps {
open: boolean;
- close: () => void;
+ onClose: () => void;
}
export default function ChangeNicknameDialog(props: ChangeNicknameDialogProps) {
- const { open, close } = props;
+ const { open, onClose } = props;
const user = useUserLoggedIn();
@@ -29,7 +29,7 @@ export default function ChangeNicknameDialog(props: ChangeNicknameDialogProps) {
nickname: newNickname as string,
});
}}
- close={close}
+ onClose={onClose}
/>
);
}
diff --git a/FrontEnd/src/pages/setting/ChangePasswordDialog.tsx b/FrontEnd/src/pages/setting/ChangePasswordDialog.tsx
index 407f3051..87a970a5 100644
--- a/FrontEnd/src/pages/setting/ChangePasswordDialog.tsx
+++ b/FrontEnd/src/pages/setting/ChangePasswordDialog.tsx
@@ -9,11 +9,11 @@ import OperationDialog, {
interface ChangePasswordDialogProps {
open: boolean;
- close: () => void;
+ onClose: () => void;
}
export function ChangePasswordDialog(props: ChangePasswordDialogProps) {
- const { open, close } = props;
+ const { open, onClose } = props;
const navigate = useNavigate();
@@ -22,7 +22,7 @@ export function ChangePasswordDialog(props: ChangePasswordDialogProps) {
return (
<OperationDialog
open={open}
- close={close}
+ onClose={onClose}
title="settings.dialogChangePassword.title"
color="danger"
inputPrompt="settings.dialogChangePassword.prompt"
diff --git a/FrontEnd/src/pages/setting/index.tsx b/FrontEnd/src/pages/setting/index.tsx
index cec81530..12a7670e 100644
--- a/FrontEnd/src/pages/setting/index.tsx
+++ b/FrontEnd/src/pages/setting/index.tsx
@@ -12,6 +12,7 @@ import { useC, Text } from "@/common";
import { useUser, userService } from "@/services/user";
import { getHttpUserClient } from "@/http/user";
+import { useDialog } from "@/views/common/dialog";
import ConfirmDialog from "@/views/common/dialog/ConfirmDialog";
import Card from "@/views/common/Card";
import Spinner from "@/views/common/Spinner";
@@ -237,18 +238,13 @@ export default function SettingPage() {
const user = useUser();
const navigate = useNavigate();
- type DialogName =
- | "change-password"
- | "change-avatar"
- | "change-nickname"
- | "logout"
- | "renew-register-code";
-
- const [dialog, setDialog] = useState<null | DialogName>(null);
-
- function dialogOpener(name: DialogName): () => void {
- return () => setDialog(name);
- }
+ const { dialogPropsMap, createDialogSwitch } = useDialog([
+ "change-password",
+ "change-avatar",
+ "change-nickname",
+ "logout",
+ "renew-register-code",
+ ]);
return (
<Page noTopPadding>
@@ -257,20 +253,20 @@ export default function SettingPage() {
<RegisterCodeSettingItem />
<ButtonSettingItem
title="settings.changeAvatar"
- onClick={dialogOpener("change-avatar")}
+ onClick={createDialogSwitch("change-avatar")}
/>
<ButtonSettingItem
title="settings.changeNickname"
- onClick={dialogOpener("change-nickname")}
+ onClick={createDialogSwitch("change-nickname")}
/>
<ButtonSettingItem
title="settings.changePassword"
- onClick={dialogOpener("change-password")}
+ onClick={createDialogSwitch("change-password")}
danger
/>
<ButtonSettingItem
title="settings.logout"
- onClick={dialogOpener("logout")}
+ onClick={createDialogSwitch("logout")}
danger
/>
</SettingSection>
@@ -278,31 +274,21 @@ export default function SettingPage() {
<SettingSection title="settings.subheader.customization">
<LanguageChangeSettingItem />
</SettingSection>
- <ChangePasswordDialog
- open={dialog === "change-password"}
- close={() => setDialog(null)}
- />
+ <ChangePasswordDialog {...dialogPropsMap["change-password"]} />
{user && (
<>
<ConfirmDialog
title="settings.dialogConfirmLogout.title"
body="settings.dialogConfirmLogout.prompt"
- onClose={() => setDialog(null)}
- open={dialog === "logout"}
onConfirm={() => {
void userService.logout().then(() => {
navigate("/");
});
}}
+ {...dialogPropsMap["logout"]}
/>
- <ChangeAvatarDialog
- open={dialog === "change-avatar"}
- close={() => setDialog(null)}
- />
- <ChangeNicknameDialog
- open={dialog === "change-nickname"}
- close={() => setDialog(null)}
- />
+ <ChangeAvatarDialog {...dialogPropsMap["change-avatar"]} />
+ <ChangeNicknameDialog {...dialogPropsMap["change-nickname"]} />
</>
)}
</Page>