import React from "react" import * as antd from "antd" import { Translation } from "react-i18next" import { Icons } from "components/Icons" import { Skeleton, PostsFeed, FollowButton } from "components" import { Session, User } from "models" import "./index.less" export default class Account extends React.Component { static bindApp = ["userController", "sessionController"] state = { isSelf: false, isFollowed: false, user: null, requestedUser: null, } api = window.app.request componentDidMount = async () => { const token = await Session.decodedToken() const location = window.app.history.location const query = new URLSearchParams(location.search) const requestedUser = location.state?.username ?? query.get("username") ?? token?.username const hasAdmin = await User.hasRole("admin") let isSelf = false let user = null let isFollowed = false if (requestedUser != null) { if (token.username === requestedUser) { isSelf = true } user = await this.fetchData(requestedUser) if (!isSelf) { const result = await this.api.get.isFollowed(undefined, { user_id: user._id }).catch(() => false) console.log(result) if (result) { isFollowed = result.isFollowed } } } await this.setState({ isSelf, user, hasAdmin, requestedUser, isFollowed, }) } fetchData = async (username) => { return await this.api.get.user(undefined, { username: username }).catch((error) => { console.error(error) antd.message.error(error.message) return false }) } onClickFollow = async () => { const result = await this.api.put.followUser({ username: this.state.requestedUser, }) .catch((error) => { console.error(error) antd.message.error(error.message) return false }) console.log(result) await this.setState({ isFollowed: result.following, }) } render() { const user = this.state.user if (!user) { return } return (
{Boolean(user.fullName) ? <>

{user.fullName}

@{user.username}#{user._id} : <>

@{user.username}

#{user._id} }
{!this.state.isSelf &&
}
{user.badges.map((role, index) => { return {role} })}
) } }