|
|
|
@ -4,19 +4,24 @@ import {
|
|
|
|
|
MenuList,
|
|
|
|
|
MenuItem,
|
|
|
|
|
IconButton,
|
|
|
|
|
Divider
|
|
|
|
|
Divider,
|
|
|
|
|
Box,
|
|
|
|
|
Image
|
|
|
|
|
} from "@chakra-ui/react"
|
|
|
|
|
import SEO from "components/seo"
|
|
|
|
|
import siteConfig from "configs/site-config"
|
|
|
|
|
import PageContainer1 from "layouts/page-container1"
|
|
|
|
|
import React, { useEffect, useState } from "react"
|
|
|
|
|
import { HomeSidebar } from 'pages/index'
|
|
|
|
|
import Card from "components/card"
|
|
|
|
|
import Card, { CardBody, CardHeader } from "components/card"
|
|
|
|
|
import { config } from "configs/config"
|
|
|
|
|
import { getSvgIcon } from "components/svg-icon"
|
|
|
|
|
import { Tag } from "src/types/tag"
|
|
|
|
|
import { requestApi } from "utils/axios/request"
|
|
|
|
|
import TagCard from 'src/components/tags/tag-card'
|
|
|
|
|
import useSession from "hooks/use-session"
|
|
|
|
|
import Link from "next/link"
|
|
|
|
|
import { IDType } from "src/types/id"
|
|
|
|
|
|
|
|
|
|
const tagsFilter = [{
|
|
|
|
|
name: 'Popular',
|
|
|
|
@ -39,14 +44,33 @@ const tagsFilter = [{
|
|
|
|
|
const TagsPage = () => {
|
|
|
|
|
const [filter, setFilter] = useState(tagsFilter[0])
|
|
|
|
|
const [tags, setTags]: [Tag[], any] = useState([])
|
|
|
|
|
const [userTags,setUserTags]:[Tag[],any] = useState([])
|
|
|
|
|
|
|
|
|
|
const session = useSession()
|
|
|
|
|
const getTags = () => {
|
|
|
|
|
requestApi.get(`/tag/all`).then((res) => setTags(res.data)).catch(_ => setTags([]))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getUserTags = async () => {
|
|
|
|
|
const res = await requestApi.get(`/interaction/following/${session.user.id}?type=${IDType.Tag}`)
|
|
|
|
|
const ids = []
|
|
|
|
|
for (const f of res.data) {
|
|
|
|
|
ids.push(f.id)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const res1 = await requestApi.post(`/tag/ids`, ids)
|
|
|
|
|
setUserTags(res1.data)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
getTags()
|
|
|
|
|
}, [filter])
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (session) {
|
|
|
|
|
getUserTags()
|
|
|
|
|
}
|
|
|
|
|
},[session])
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
<SEO
|
|
|
|
@ -54,7 +78,7 @@ const TagsPage = () => {
|
|
|
|
|
description={siteConfig.seo.description}
|
|
|
|
|
/>
|
|
|
|
|
<PageContainer1>
|
|
|
|
|
<HStack alignItems="top" p="4" spacing="3">
|
|
|
|
|
<HStack alignItems="top" spacing="3">
|
|
|
|
|
<VStack alignItems="left" width={["100%", "100%", "70%", "70%"]} spacing="3">
|
|
|
|
|
<Card>
|
|
|
|
|
<VStack py="3" spacing="3">
|
|
|
|
@ -95,7 +119,24 @@ const TagsPage = () => {
|
|
|
|
|
</VStack>
|
|
|
|
|
</Card>
|
|
|
|
|
</VStack>
|
|
|
|
|
<HomeSidebar />
|
|
|
|
|
{userTags.length > 0 && <Card p="0" width="30%" display={{base: "none", md: "block"}}>
|
|
|
|
|
<CardHeader>
|
|
|
|
|
<Heading size="sm">我关注的Tags</Heading>
|
|
|
|
|
</CardHeader>
|
|
|
|
|
<Divider />
|
|
|
|
|
<CardBody>
|
|
|
|
|
<VStack alignItems="left" spacing="4">
|
|
|
|
|
{
|
|
|
|
|
userTags.map(tag => <Link href={`/tags/${tag.name}`}>
|
|
|
|
|
<HStack cursor="pointer" spacing="4">
|
|
|
|
|
{tag.icon && <Image src={tag.icon} width="35px"/>}
|
|
|
|
|
<Text>#{tag.name}</Text>
|
|
|
|
|
</HStack>
|
|
|
|
|
</Link>)
|
|
|
|
|
}
|
|
|
|
|
</VStack>
|
|
|
|
|
</CardBody>
|
|
|
|
|
</Card>}
|
|
|
|
|
</HStack>
|
|
|
|
|
</PageContainer1>
|
|
|
|
|
</>
|
|
|
|
|