import React, { useState } from "react"; import { useParams } from "react-router"; import { UiLogicError } from "@/common"; import { useUser, userInfoService } from "@/services/user"; import TimelinePageTemplate from "../timeline-common/TimelinePageTemplate"; import UserPageUI from "./UserPageUI"; import { PersonalTimelineManageItem } from "./UserInfoCard"; import ChangeNicknameDialog from "./ChangeNicknameDialog"; import ChangeAvatarDialog from "./ChangeAvatarDialog"; const UserPage: React.FC = (_) => { const { username } = useParams<{ username: string }>(); const user = useUser(); const [dialog, setDialog] = useState(null); let dialogElement: React.ReactElement | undefined; const closeDialogHandler = (): void => { setDialog(null); }; if (dialog === "nickname") { if (user == null) { throw new UiLogicError("Change nickname without login."); } dialogElement = ( userInfoService.setNickname(username, newNickname) } /> ); } else if (dialog === "avatar") { if (user == null) { throw new UiLogicError("Change avatar without login."); } dialogElement = ( userInfoService.setAvatar(username, file)} /> ); } const onManage = React.useCallback((item: PersonalTimelineManageItem) => { setDialog(item); }, []); return ( <> {dialogElement} ); }; export default UserPage;