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", }) }) return (
{user?.nickname}
{!isMySelf && 編輯聯絡人訊息} { isMySelf && <> 編輯資料 賬號設定 隱私設定 }
) }