import React, { useState, useEffect, useContext } from "react";
import { useNavigate, useParams } from "react-router-dom";
import JSOG from "jsog";
import { Outlet } from "react-router-dom";
import { CurrentPageNav } from "../Components/Styled/Main.style";
import {
ProfessorCard,
ProfessorCardDetails,
ProfessorCardName,
ProfessorCardSeparator,
} from "../Components/Styled/ProfessorCard.style";
import AuthApi from "../api/AuthApi";
import { AddOpinionButton } from "../Components/Styled/Modal.style";
import {
EntityLi,
EntityUl,
EntityParam,
} from "../Components/Styled/EntityList.style";
import {
Modal,
ModalBody,
ModalClose,
ModalContent,
ModalFooter,
ModalHeader,
ModalInput,
ModalTextarea,
} from "../Components/Styled/Modal.style";
import axios from "../api/axios";
const Subject = () => {
let params = useParams();
let navigate = useNavigate();
const { auth, setAuth } = useContext(AuthApi);
const [subject, setSubject] = useState(null);
const [loaded, setLoaded] = useState(false);
const [fetchError, setFetchError] = useState(false);
var totalTopics = 0;
var topics = [];
const [topicModalDisplay, setTopicModalDisplay] = useState("none");
const [topicTitle, setTopicTitle] = useState("");
const [topicContent, setTopicContent] = useState("");
const [errorMessage, setErrorMessage] = useState("");
useEffect(() => {
const url = `http://192.168.0.17:8080/public/subject/${params.subjectId}`;
const fetchData = async () => {
try {
const response = await fetch(url);
let cyclicGraph = await response.json();
let jsogStructure = JSOG.encode(cyclicGraph);
cyclicGraph = JSOG.decode(jsogStructure);
setSubject(cyclicGraph);
setLoaded(true);
} catch (error) {
setFetchError(true);
}
};
fetchData();
}, [params.subjectId]);
const handleAddTopicButtonClick = () => {
if (auth) {
setTopicModalDisplay("block");
} else {
navigate("/login");
}
};
const handleModalCloseClick = () => {
setTopicModalDisplay("none");
};
const handleTopicSubmit = async (e) => {
e.preventDefault();
if (!topicTitle.length < 1 && !topicContent.length < 1) {
const response = await axios(
`http://192.168.0.17:8080/secure/subject/${params.subjectId}/addThread`,
{
method: "post",
data: {
title: topicTitle,
content: topicContent,
},
withCredentials: true,
}
);
setErrorMessage("");
window.location.reload(false);
} else {
setErrorMessage("Полињата за наслов и содржина не смеат да бидат празни");
}
};
const handleContentChange = (e) => {
setTopicContent(e.target.value);
};
const handleTitleChange = (e) => {
setTopicTitle(e.target.value);
};
return loaded ? (
<>
се вчитува...