diff options
author | crupest <crupest@outlook.com> | 2023-07-29 22:00:59 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2023-07-29 22:00:59 +0800 |
commit | 22e8f24e7f7574915e4c75d3c6a5498f6e621ee8 (patch) | |
tree | a164dbcb6bf2e87e275cc736b65a22f34f788b14 /FrontEnd/src/pages/setting | |
parent | 13f6f2a451feede8037d18cfbac64843e108ccbd (diff) | |
download | timeline-22e8f24e7f7574915e4c75d3c6a5498f6e621ee8.tar.gz timeline-22e8f24e7f7574915e4c75d3c6a5498f6e621ee8.tar.bz2 timeline-22e8f24e7f7574915e4c75d3c6a5498f6e621ee8.zip |
...
Diffstat (limited to 'FrontEnd/src/pages/setting')
-rw-r--r-- | FrontEnd/src/pages/setting/ChangeAvatarDialog.tsx | 15 | ||||
-rw-r--r-- | FrontEnd/src/pages/setting/ChangeNicknameDialog.tsx | 6 | ||||
-rw-r--r-- | FrontEnd/src/pages/setting/ChangePasswordDialog.tsx | 6 | ||||
-rw-r--r-- | FrontEnd/src/pages/setting/index.tsx | 46 |
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> |