Ignore:
Timestamp:
01/20/23 22:57:18 (20 months ago)
Author:
viktor <viktor@…>
Branches:
main
Children:
8dffe02
Parents:
4abf55a
Message:

prefinal

File:
1 edited

Legend:

Unmodified
Added
Removed
  • reactapp/src/Pages/Topic.js

    r4abf55a r9bf1f8d  
    4343  const [postModalDisplay, setPostModalDisplay] = useState("none");
    4444  const [postContent, setPostContent] = useState("");
     45
    4546  const [replyModalDisplay, setReplyModalDisplay] = useState("none");
    4647  const [replyContent, setReplyContent] = useState("");
    47   const [postForModal, setPostForModal] = useState(null);
     48  const [postForReplyModal, setPostForReplyModal] = useState(null);
     49
     50  const [reportModalDisplay, setReportModalDisplay] = useState("none");
     51  const [reportContent, setReportContent] = useState("");
     52  const [postForReportModal, setPostForReportModal] = useState(null);
     53
    4854  const [errorMessage, setErrorMessage] = useState("");
    4955
    5056  useEffect(() => {
    51     const url1 = `http://192.168.0.29:8080/public/thread/${params.topicId}`;
    52     const url2 = `http://192.168.0.29:8080/secure/currentUser`;
     57    const url1 = `http://192.168.1.254:8080/public/thread/${params.topicId}`;
     58    const url2 = `http://192.168.1.254:8080/secure/currentUser`;
    5359
    5460    const fetchTopic = async () => {
     
    7985
    8086    fetchTopic().then(fetchUser);
    81   }, []);
     87  }, [loadedThread]);
    8288
    8389  const handleReply = (post) => {
    8490    if (auth) {
    8591      setReplyModalDisplay("block");
    86       setPostForModal(post);
     92      setPostForReplyModal(post);
     93      document.body.style.overflowY = "hidden";
     94    } else {
     95      navigate("/login");
     96    }
     97  };
     98
     99  const handleReport = (post) => {
     100    if (auth) {
     101      setReportModalDisplay("block");
     102      setPostForReportModal(post);
    87103      document.body.style.overflowY = "hidden";
    88104    } else {
     
    95111  };
    96112
     113  const handleReportContentChange = (e) => {
     114    e.preventDefault();
     115    setReportContent(e.target.value);
     116  };
     117
    97118  const handleReplySubmit = async (e, postId) => {
    98119    e.preventDefault();
     
    100121    if (!replyContent.length < 1) {
    101122      const response = await axios(
    102         `http://192.168.0.29:8080/secure/subject/${thread.targetSubject.subjectId}/replyToThread/${postId}`,
     123        `http://192.168.1.254:8080/secure/subject/${thread.targetSubject.subjectId}/replyToThread/${postId}`,
    103124        {
    104125          method: "post",
     
    116137  };
    117138
     139  const handleReportSubmit = async (e, postId) => {
     140    e.preventDefault();
     141
     142    if (!reportContent.length < 1) {
     143      const response = await axios(
     144          `http://192.168.1.254:8080/secure/reportThread/${postId}`,
     145          {
     146            method: "post",
     147            data: {
     148              description: reportContent,
     149            },
     150            withCredentials: true,
     151          }
     152      );
     153      setErrorMessage("");
     154      window.location.reload();
     155    } else {
     156      setErrorMessage("Полето за содржина не смее да биде празно");
     157    }
     158  };
     159
    118160  const handleAddOpinionButtonClick = () => {
    119161    if (auth) {
     
    129171    if (!postContent.length < 1) {
    130172      const response = await axios(
    131         `http://192.168.0.29:8080/secure/subject/${thread.targetSubject.subjectId}/replyToThread/${params.topicId}`,
     173        `http://192.168.1.254:8080/secure/subject/${thread.targetSubject.subjectId}/replyToThread/${params.topicId}`,
    132174        {
    133175          method: "post",
     
    147189    setPostModalDisplay("none");
    148190    setReplyModalDisplay("none");
     191    setReportModalDisplay("none");
    149192    document.body.style.overflowY = "auto";
    150193  };
     
    161204      ) {
    162205        const response = await axios(
    163           `http://192.168.0.29:8080/secure/upvoteThread/${post.postId}`,
     206          `http://192.168.1.254:8080/secure/upvoteThread/${post.postId}`,
    164207          {
    165208            method: "get",
     
    184227      ) {
    185228        const response = await axios(
    186           `http://192.168.0.29:8080/secure/downvoteThread/${post.postId}`,
     229          `http://192.168.1.254:8080/secure/downvoteThread/${post.postId}`,
    187230          {
    188231            method: "get",
     
    280323                color="darkgrey"
    281324                onClick={() => handleReply(child)}
     325              />
     326
     327              <StyledFontAwesomeIcon
     328                  icon={solid("flag")}
     329                  right={130 + "px"}
     330                  color="darkgrey"
     331                  onClick={() => handleReport(child)}
    282332              />
    283333            </div>
     
    393443          >
    394444            <StyledFontAwesomeIcon
     445                icon={solid("flag")}
     446                right={90 + "px"}
     447                color="darkgrey"
     448                onClick={() => handleReport(thread)}
     449            />
     450            <StyledFontAwesomeIcon
    395451              icon={solid("thumbs-up")}
    396452              right={50 + "px"}
     
    517573                  onClick={() => handleReply(directChild)}
    518574                />
     575
     576                <StyledFontAwesomeIcon
     577                    icon={solid("flag")}
     578                    right={130 + "px"}
     579                    color="darkgrey"
     580                    onClick={() => handleReport(directChild)}
     581                />
    519582              </div>
    520583            </OpinionCardContent>
     
    525588        );
    526589      })}
    527       {postForModal && (
     590      {postForReplyModal && (
    528591        <Modal display={replyModalDisplay}>
    529592          <ModalContent>
     
    531594              <ModalClose onClick={handleModalCloseClick}>&times;</ModalClose>
    532595              <h3 style={{ marginTop: "5px" }}>
    533                 Реплика на {postForModal.author.username}
     596                Реплика на {postForReplyModal.author.username}
    534597              </h3>
    535598            </ModalHeader>
    536             <form onSubmit={(e) => handleReplySubmit(e, postForModal.postId)}>
     599            <form onSubmit={(e) => handleReplySubmit(e, postForReplyModal.postId)}>
    537600              <ModalBody>
    538601                <label htmlFor="content">
     
    557620        </Modal>
    558621      )}
     622      {postForReportModal && (
     623          <Modal display={reportModalDisplay}>
     624            <ModalContent>
     625              <ModalHeader>
     626                <ModalClose onClick={handleModalCloseClick}>&times;</ModalClose>
     627                <h3 style={{ marginTop: "5px" }}>
     628                  Пријава за мислење #{postForReportModal.postId}
     629                </h3>
     630              </ModalHeader>
     631              <form onSubmit={(e) => handleReportSubmit(e, postForReportModal.postId)}>
     632                <ModalBody>
     633                  <label htmlFor="content">
     634                    <b>Наведете причина</b>:
     635                    <ModalTextarea
     636                        id="content"
     637                        rows="8"
     638                        cols="100"
     639                        value={reportContent}
     640                        onChange={handleReportContentChange}
     641                    />
     642                  </label>
     643                </ModalBody>
     644                <p
     645                    style={{ color: "red", marginLeft: "15px", marginTop: "10px" }}
     646                >
     647                  {errorMessage}
     648                </p>
     649                <ModalFooter type="submit">ПРИЈАВИ</ModalFooter>
     650              </form>
     651            </ModalContent>
     652          </Modal>
     653      )}
    559654    </>
    560655  ) : !fetchError && !loadedThread ? (
Note: See TracChangeset for help on using the changeset viewer.