import { createStandaloneToast, Text, Box, Heading, Image, HStack, Center, Button, Flex, Modal, ModalOverlay, ModalContent, ModalHeader, ModalBody, ModalFooter, FormControl, FormLabel, FormHelperText, Input, FormErrorMessage, VStack, Textarea, Divider } from "@chakra-ui/react"
import Card from "components/card"
import Nav from "layouts/nav/nav"
import PageContainer from "layouts/page-container"
import Sidebar from "layouts/sidebar/sidebar"
import React, { useEffect, useState } from "react"
import editorLinks from "src/data/editor-links"
import { requestApi } from "utils/axios/request"
import { useDisclosure } from "@chakra-ui/react"
import { Field, Form, Formik } from "formik"
import { config } from "utils/config"
import TextArticleCard from "components/articles/text-article-card"
import { Article } from "src/types/posts"
var validator = require('validator');
const toast = createStandaloneToast()
const newPost:Article = { title: '', url: '', cover: ''}
const ArticlesPage = () => {
const [posts, setPosts] = useState([])
const [currentPost, setCurrentPost] = useState(newPost)
useEffect(() => {
getPosts()
}, [])
const getPosts = () => {
requestApi.get(`/editor/articles`).then((res) => setPosts(res.data)).catch(_ => setPosts([]))
}
const { isOpen, onOpen, onClose } = useDisclosure()
function validateTitle(value) {
console.log(value)
let error
if (!value?.trim()) {
error = "标题不能为空"
}
return error
}
function validateUrl(value) {
let error
if (!validator.isURL(value)) {
error = "URL格式不合法"
}
return error
}
function validateBrief(value) {
let error
if (value && value.length > config.posts.briefMaxLen) {
error = `文本长度不能超过${config.posts.briefMaxLen}`
}
return error
}
const submitArticle = async (values, _) => {
await requestApi.post(`/editor/article`, values)
onClose()
toast({
description: "提交成功",
status: "success",
duration: 2000,
isClosable: true,
})
setCurrentPost(newPost)
}
const editArticle = (ar: Article) => {
setCurrentPost(ar)
onOpen()
}
const onDeleteArticle = () => {
getPosts()
toast({
description: "删除成功",
status: "success",
duration: 2000,
isClosable: true,
})
}
return (
<>
文章列表({posts.length})
{
posts.length === 0 ?
<>
你还没创建任何文章
>
:
{posts.map(post =>
editArticle(post)} onDelete={() => onDeleteArticle()} />
)}
}
没有更多文章了
编辑文章
{(props) => (
)}
>
)
}
export default ArticlesPage