import React, { useState } from 'react'; import { useParams } from 'react-router'; import { useUser } from '../data/user'; import { changeNickname, changeAvatar } from './api'; import { personalTimelineService } from '../data/timeline'; import UserPage from './UserPage'; import ChangeNicknameDialog from './ChangeNicknameDialog'; import ChangeAvatarDialog from './ChangeAvatarDialog'; import TimelinePageTemplate from '../timeline/TimelinePageTemplate'; import { PersonalTimelineManageItem } from './UserInfoCard'; import { UiLogicError } from '../common'; const User: React.FC = (_) => { const { username } = useParams<{ username: string }>(); const user = useUser(); const [dialog, setDialog] = useState(null); const [dataKey, setDataKey] = useState(0); let dialogElement: React.ReactElement | undefined; const closeDialogHandler = (): void => { setDialog(null); }; if (dialog === 'nickname') { if (user == null) { throw new UiLogicError('Change nickname without login.'); } dialogElement = ( { const p = changeNickname(user.token, username, newNickname); return p.then((_) => { setDataKey(dataKey + 1); }); }} /> ); } else if (dialog === 'avatar') { if (user == null) { throw new UiLogicError('Change avatar without login.'); } dialogElement = ( changeAvatar(user.token, username, file, file.type)} /> ); } const onManage = React.useCallback((item: PersonalTimelineManageItem) => { setDialog(item); }, []); return ( <> {dialogElement} ); }; export default User;