mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
66 lines
1.9 KiB
React
66 lines
1.9 KiB
React
import React, { useState } from "react";
|
|
import { useComment, useEditedComment } from "@plebbit/plebbit-react-hooks";
|
|
import { Link } from "react-router-dom";
|
|
import OriginalCommentModal from "./modals/OriginalCommentModal";
|
|
import getDate from "../utils/getDate";
|
|
|
|
|
|
const EditLabel = ({ commentCid, className }) => {
|
|
const [isOriginalCommentModalOpen, setIsOriginalCommentModalOpen] = useState(false);
|
|
const comment = useComment({commentCid});
|
|
const timestamp = getDate(comment.edit?.timestamp);
|
|
const {state: editedCommentState, editedComment} = useEditedComment({comment});
|
|
|
|
|
|
const conditionsCheck = () => {
|
|
let conditions = [];
|
|
|
|
if (editedComment?.removed && !comment.removed) {
|
|
conditions.push("removal");
|
|
}
|
|
if (editedComment?.edit && !comment.edit) {
|
|
conditions.push("edit");
|
|
}
|
|
if (editedComment?.locked && !comment.locked) {
|
|
conditions.push("lock");
|
|
}
|
|
if (editedComment?.pinned && !comment.pinned) {
|
|
conditions.push("sticky");
|
|
}
|
|
|
|
return conditions.length > 0 ? conditions.join(', ') : null;
|
|
};
|
|
|
|
|
|
const conditionsString = conditionsCheck();
|
|
|
|
|
|
return (
|
|
<>
|
|
<OriginalCommentModal
|
|
isOpen={isOriginalCommentModalOpen}
|
|
closeModal={() => setIsOriginalCommentModalOpen(false)}
|
|
comment={comment}/>
|
|
{comment.edit && (
|
|
<>
|
|
<br />
|
|
<span className={className}>
|
|
(Edited at {timestamp}, <Link className="ttl-link" onClick={
|
|
() => setIsOriginalCommentModalOpen(true)
|
|
}>show original</Link>)
|
|
</span>
|
|
</>
|
|
)}
|
|
{((editedCommentState === 'pending' || editedCommentState === 'failed') && conditionsString) ? (
|
|
<>
|
|
<br />
|
|
<span className={className}>
|
|
({editedCommentState === 'pending' ? 'Pending' : 'Failed'} {conditionsString})
|
|
</span>
|
|
</>
|
|
) : null}
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default EditLabel; |