PostList.jsx 2.44 KiB
import React from "react";
import classNames from "classnames";
import Post from "./Post";
const PostList = ({
className,
items,
canThumb,
canRunActions,
onLike,
onDislike,
onHide,
onBanUser,
onAnnounceProcedureProposal,
onAcceptProcedureProposal,
onRejectProcedureProposal,
onRejectProcedureProposalByChairman,
onSeen,
dimArchived,
}) => {
const buildHandler = (responderFn) => (post) => (evt) => {
evt.preventDefault();
responderFn(post);
};
const onPostLike = buildHandler(onLike);
const onPostDislike = buildHandler(onDislike);
const onPostHide = buildHandler(onHide);
const onPostBanUser = buildHandler(onBanUser);
const onPostAnnounceProcedureProposal = buildHandler(
onAnnounceProcedureProposal
);
const onPostAcceptProcedureProposal = buildHandler(onAcceptProcedureProposal);
const onPostRejectProcedureProposal = buildHandler(onRejectProcedureProposal);
const onPostRejectProcedureProposalByChairman = buildHandler(
onRejectProcedureProposalByChairman
);
const onPostSeen = (post) => () => {
onSeen(post);
};
return (
<div className={classNames("space-y-px", className)}>
{items
.filter((item) => !item.hidden)
.map((item) => (
<Post
key={item.id}
datetime={item.datetime}
author={item.author}
type={item.type}
state={item.state}
content={item.content}
ranking={item.ranking}
historyLog={item.historyLog}
modified={item.modified}
seen={item.seen}
archived={item.archived}
dimIfArchived={dimArchived}
canThumb={canThumb}
canRunActions={canRunActions}
onLike={onPostLike(item)}
onDislike={onPostDislike(item)}
onHide={onPostHide(item)}
onBanUser={onPostBanUser(item)}
onAnnounceProcedureProposal={onPostAnnounceProcedureProposal(item)}
onAcceptProcedureProposal={onPostAcceptProcedureProposal(item)}
onRejectProcedureProposal={onPostRejectProcedureProposal(item)}
onRejectProcedureProposalByChairman={onPostRejectProcedureProposalByChairman(
item
)}
onSeen={onPostSeen(item)}
/>
))}
{!items.length && (
<p>Nikdo zatím žádný příspěvek do rozpravy nepřidal. Budeš první?</p>
)}
</div>
);
};
export default PostList;