import { Box, chakra, Flex, HStack, VStack, Image, Heading, Text, Button, useColorModeValue, Divider, Wrap, Avatar, Center } from "@chakra-ui/react" import Card from "components/card" import Container from "components/container" import SEO from "components/seo" import siteConfig from "configs/site-config" import useSession from "hooks/use-session" import Nav from "layouts/nav/nav" import VerticalNav from "layouts/nav/vertical-nav" import PageContainer from "layouts/page-container" import PageContainer1 from "layouts/page-container1" import { useRouter } from "next/router" import React, { useEffect, useState } from "react" import { FaComment, FaCommentAlt, FaDove, FaEdit, FaFacebook, FaFile, FaGithub, FaHeart, FaPlus, FaRegStar, FaStackOverflow, FaStar, FaTwitter, FaWeibo, FaZhihu } from "react-icons/fa" import { ReserveUrls } from "src/data/reserve-urls" import { User } from "src/types/user" import { requestApi } from "utils/axios/request" import moment from 'moment' import { Post } from "src/types/posts" import PostCard from "components/story/post-card" import userCustomTheme from "theme/user-custom" import Posts from "components/story/posts" import Link from "next/link" import Empty from "components/empty" import Count from "components/count" import { Tag } from "src/types/tag" const UserPage = () => { const router = useRouter() const username = router.query.username const session = useSession() const [user, setUser]: [User, any] = useState(null) const [rawPosts, setRawPosts]: [Post[], any] = useState([]) const [posts, setPosts]: [Post[], any] = useState([]) const [tags,setTags]:[Tag[],any] = useState([]) const [tagFilter,setTagFilter]:[Tag,any] = useState(null) const borderColor = useColorModeValue('white', 'transparent') useEffect(() => { if (username) { initData(username) } }, [username]) const initData = async (username) => { const res = await requestApi.get(`/user/info/${username}`) setUser(res.data) getTags(res.data.id) const res1 = await requestApi.get(`/user/posts/${res.data.id}`) setPosts(res1.data) setRawPosts(res1.data) } const getTags = async (userID) => { const res = await requestApi.get(`/tag/user/${userID}`) setTags(res.data) } const filterPostsByTag = tag => { if (tag.id === tagFilter?.id) { setTagFilter(null) setPosts(rawPosts) return } setTagFilter(tag) const p = [] rawPosts.forEach(post => { for (let i=0;i { user && {user.nickname} {user.tagline && {user.tagline}} Followers Following {session?.user.id === user.id ? : } {user.about && <> {user.about} } {user.location && Location: {user.location} } {user.website && Website: {user.website} } Joined: {moment(user.created).fromNow()} {user.github && } {user.twitter && } {user.facebook && } {user.stackoverflow && } {user.zhihu && } {user.weibo && } {user.availFor && I am available for {user.availFor} } {user.rawSkills.length > 0 && 擅长技能 { user.rawSkills.map(skill => {skill.title} ) } } {tags.length > 0 && 博客标签 { tags.map(tag => ) } } { posts.length === 0 ? : } } ) } export default UserPage