import * as React from 'react' import { Button, Dialog, TextField } from "mdui" import useEventListener from "../useEventListener.ts" import { checkApiSuccessOrSncakbar, snackbar } from "../snackbar.ts" import Client from "../../api/Client.ts" import * as CryptoJS from 'crypto-js' import data from "../../Data.ts" import Avatar from "../Avatar.tsx" import User from "../../api/client_data/User.ts" interface Refs { userProfileDialogRef: React.MutableRefObject user: User } export default function UserProfileDialog({ userProfileDialogRef, user }: Refs) { const isMySelf = Client.myUserProfile?.id == user?.id const editAvatarButtonRef = React.useRef(null) const chooseAvatarFileRef = React.useRef(null) useEventListener(editAvatarButtonRef, 'click', () => chooseAvatarFileRef.current!.click()) useEventListener(chooseAvatarFileRef, 'change', async (_e) => { const file = chooseAvatarFileRef.current!.files?.[0] as File if (file == null) return const re = await Client.invoke("User.setAvatar", { token: data.access_token, avatar: file }) if (checkApiSuccessOrSncakbar(re, "修改失敗")) return snackbar({ message: "修改成功 (刷新頁面以更新)", placement: "top", }) }) const userProfileEditDialogRef = React.useRef(null) const editNickNameRef = React.useRef(null) const editUserNameRef = React.useRef(null) return (<> { // 公用 - 資料卡 }
{user?.nickname}
{!isMySelf && 編輯聯絡人訊息} { isMySelf && <> userProfileEditDialogRef.current!.open = true}>編輯資料 賬號設定 隱私設定 }
{ // 個人資料編輯 }
userProfileEditDialogRef.current!.open = false}>取消 { 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 }}>更新
) }