import React, { useState, useContext, useEffect } from "react"; import { useNavigate, useLocation, useParams } from 'react-router-dom'; import { useCookies } from "react-cookie"; import classes from "../assets/styles/newArticle.module.scss"; import MyButton from "../components/MyButton.jsx"; import Loading from "../components/Loading.jsx"; import MyInput from "../components/MyInput.jsx"; import TextEditor from "../components/TextEditor.jsx"; import { UserData } from "../context/index.js"; import { getArticleApi, editTagsApi, editTitleArticleApi, editArticleApi, addArticleApi } from "../hooks/api/articleApi.js"; const NewArticle = () => { const navigate = useNavigate(); const location = useLocation(); const { articleId } = useParams(); const {user, setUser} = useContext(UserData) const [loading, setLoading] = useState(false); const [title, setTitle] = useState(""); const [tags, setTags] = useState([]); const [newTag, setNewTag] = useState("") const [ownerId, setOwnerId] = useState(""); const [contentArticle, setContentArticle] = useState(''); const [blocks, setBlocks] = useState(''); const [cookies, _, __] = useCookies(["user"]); useEffect(() => { async function getArticle() { const response = await getArticleApi(cookies.token, articleId) if (response.status === 200) { setTitle(response.data.article.title) setTags(response.data.article.tags ? response.data.article.tags : []) setOwnerId(response.data.article.owner_id) setContentArticle(response.data.blocks ? response.data.blocks[0].data : '') setBlocks(response.data.blocks ? response.data.blocks : false) } else if ( response.status === 401 ) { // navigate("/enter") setUser(false) } else { console.log(response) } } getArticle() }, []) async function addTag() { if (newTag.length > 0 && !tags.find(item => item === newTag)) { const response = await editTagsApi(cookies.token, articleId, [newTag], false) if (response.status === 200) { setTags([...tags, newTag]) setNewTag("") } else if ( response.status === 401 ) { // navigate("/enter") setUser(false) } else { console.log(response) } } } async function removeTag(item, index) { const response = await editTagsApi(cookies.token, articleId, [item], true) if (response.status === 200) { const cTags = [...tags] cTags.splice(index, 1) setTags(cTags) } else if ( response.status === 401 ) { // navigate("/enter") setUser(false) } else { console.log(response) } } async function saveArticle() { const responseTitle = await editTitleArticleApi(cookies.token, articleId, title) const responseContentArticle = blocks ? await editArticleApi(cookies.token, articleId, contentArticle) : await addArticleApi(cookies.token, articleId, contentArticle) if (responseTitle.status === 200 && responseContentArticle.status === 200) { navigate("/articles") } else if ( responseTitle.status === 401 || responseContentArticle.status === 401 ) { // navigate("/enter") setUser(false) } else { console.log(responseTitle) console.log(responseContentArticle) } } return (