feat(ui): 編輯個人檔案對話框

This commit is contained in:
CrescentLeaf
2025-09-21 02:11:47 +08:00
parent 2ec4f634ae
commit 468de4f439
4 changed files with 68 additions and 38 deletions

View File

@@ -39,20 +39,20 @@ export default function UserProfileDialog({
})
})
return (
<mdui-dialog close-on-overlay-click close-on-esc ref={userProfileDialogRef}>
<div style={{
display: "none"
}}>
<input type="file" name="選擇頭像" ref={chooseAvatarFileRef}
accept="image/*" />
</div>
const userProfileEditDialogRef = React.useRef<Dialog>(null)
const editNickNameRef = React.useRef<TextField>(null)
const editUserNameRef = React.useRef<TextField>(null)
return (<>
{
// 公用 - 資料卡
}
<mdui-dialog close-on-overlay-click close-on-esc ref={userProfileDialogRef}>
<div style={{
display: 'flex',
alignItems: 'center',
}}>
<Avatar src={user?.avatar} text={user?.nickname} avatarRef={editAvatarButtonRef} style={{
<Avatar src={user?.avatar} text={user?.nickname} style={{
width: '50px',
height: '50px',
}} />
@@ -70,12 +70,58 @@ export default function UserProfileDialog({
{!isMySelf && <mdui-list-item icon="edit" rounded></mdui-list-item>}
{
isMySelf && <>
<mdui-list-item icon="edit" rounded></mdui-list-item>
<mdui-list-item icon="edit" rounded onClick={() => userProfileEditDialogRef.current!.open = true}></mdui-list-item>
<mdui-list-item icon="settings" rounded></mdui-list-item>
<mdui-list-item icon="lock" rounded></mdui-list-item>
</>
}
</mdui-list>
</mdui-dialog>
)
{
// 個人資料編輯
}
<mdui-dialog close-on-overlay-click close-on-esc ref={userProfileEditDialogRef}>
<div style={{
display: "none"
}}>
<input type="file" name="選擇頭像" ref={chooseAvatarFileRef}
accept="image/*" />
</div>
<div style={{
display: 'flex',
alignItems: 'center',
}}>
<Avatar src={user?.avatar} text={user?.nickname} avatarRef={editAvatarButtonRef} style={{
width: '50px',
height: '50px',
}} />
<mdui-text-field variant="outlined" placeholder="昵稱" ref={editNickNameRef as any} style={{
marginLeft: "15px",
}} value={user?.nickname}></mdui-text-field>
</div>
<mdui-divider style={{
marginTop: "10px",
marginBottom: "10px",
}}></mdui-divider>
<mdui-text-field variant="outlined" label="用戶名" value={user?.username || ''} ref={editUserNameRef as any}></mdui-text-field>
<mdui-button slot="action" variant="text" onClick={() => userProfileEditDialogRef.current!.open = false}></mdui-button>
<mdui-button slot="action" variant="text" onClick={async () => {
const re = await Client.invoke("User.updateProfile", {
token: data.access_token,
nickname: editNickNameRef.current?.value,
username: editUserNameRef.current?.value,
})
if (checkApiSuccessOrSncakbar(re, "修改失敗")) return
snackbar({
message: "修改成功 (刷新頁面以更新)",
placement: "top",
})
userProfileEditDialogRef.current!.open = false
}}></mdui-button>
</mdui-dialog>
</>)
}