CreatePostLike,
PostAggregates,
} from "lemmy-js-client";
-import { VoteType } from "../../interfaces";
+import { VoteContentType, VoteType } from "../../interfaces";
import { I18NextService } from "../../services";
import { Icon, Spinner } from "../common/icon";
interface VoteButtonsProps {
+ voteContentType: VoteContentType;
id: number;
onVote: (i: CreateCommentLike | CreatePostLike) => void;
enableDownvotes?: boolean;
const handleUpvote = (i: VoteButtons) => {
i.setState({ upvoteLoading: true });
- i.props.onVote({
- id: i.props.id,
- score: newVote(VoteType.Upvote, i.props.my_vote),
- auth: myAuthRequired(),
- });
+
+ switch (i.props.voteContentType) {
+ case VoteContentType.Comment:
+ i.props.onVote({
+ comment_id: i.props.id,
+ score: newVote(VoteType.Upvote, i.props.my_vote),
+ auth: myAuthRequired(),
+ });
+ break;
+ case VoteContentType.Post:
+ default:
+ i.props.onVote({
+ post_id: i.props.id,
+ score: newVote(VoteType.Upvote, i.props.my_vote),
+ auth: myAuthRequired(),
+ });
+ }
+
i.setState({ upvoteLoading: false });
};
const handleDownvote = (i: VoteButtons) => {
i.setState({ downvoteLoading: true });
- i.props.onVote({
- id: i.props.id,
- score: newVote(VoteType.Downvote, i.props.my_vote),
- auth: myAuthRequired(),
- });
+ switch (i.props.voteContentType) {
+ case VoteContentType.Comment:
+ i.props.onVote({
+ comment_id: i.props.id,
+ score: newVote(VoteType.Downvote, i.props.my_vote),
+ auth: myAuthRequired(),
+ });
+ break;
+ case VoteContentType.Post:
+ default:
+ i.props.onVote({
+ post_id: i.props.id,
+ score: newVote(VoteType.Downvote, i.props.my_vote),
+ auth: myAuthRequired(),
+ });
+ }
i.setState({ downvoteLoading: false });
};
return (
<div>
<button
+ type="button"
className={`btn-animate btn py-0 px-1 ${
this.props.my_vote === 1 ? "text-info" : "text-muted"
}`}
</button>
{this.props.enableDownvotes && (
<button
+ type="button"
className={`ms-2 btn-animate btn py-0 px-1 ${
this.props.my_vote === -1 ? "text-danger" : "text-muted"
}`}
render() {
return (
- <div className={`vote-bar col-1 pe-0 small text-center`}>
+ <div className="vote-bar pe-0 small text-center">
<button
+ type="button"
className={`btn-animate btn btn-link p-0 ${
this.props.my_vote == 1 ? "text-info" : "text-muted"
}`}
</button>
{showScores() ? (
<div
- className={`unselectable pointer text-muted px-1 post-score`}
+ className="unselectable pointer text-muted px-1 post-score"
data-tippy-content={tippy(this.props.counts)}
>
{numToSI(this.props.counts.score)}
)}
{this.props.enableDownvotes && (
<button
+ type="button"
className={`btn-animate btn btn-link p-0 ${
this.props.my_vote == -1 ? "text-danger" : "text-muted"
}`}