Skip to content

Commit

Permalink
Merge pull request #611 from ResearchHub/initialVotes
Browse files Browse the repository at this point in the history
Initial Votes
  • Loading branch information
joshslee authored Sep 2, 2020
2 parents 7d78793 + 129fe3b commit 9153858
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 24 deletions.
37 changes: 36 additions & 1 deletion components/Hubs/HubPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,9 @@ class HubPage extends React.Component {
};

componentDidMount() {
if (!this.props.initialFeed) {
if (this.props.initialFeed) {
this.detectPromoted(this.state.papers);
} else {
this.fetchPapers({ hub: this.props.hub });
}
this.setState({
Expand All @@ -185,6 +187,7 @@ class HubPage extends React.Component {
}

if (!prevProps.isLoggedIn && this.props.isLoggedIn) {
this.checkUserVotes(this.state.papers);
if (this.props.hub && this.props.hub.id) {
fetch(API.HUB({ slug: this.props.slug }), API.GET_CONFIG())
.then(Helpers.checkStatus)
Expand Down Expand Up @@ -214,6 +217,38 @@ class HubPage extends React.Component {
window.removeEventListener("scroll", this.scrollListener);
}

checkUserVotes = (papers) => {
let { isLoggedIn, auth } = this.props;
if (isLoggedIn) {
let paperIds = papers.map((paper) => paper.id);
let params = {
paperIds,
user: auth.user.id,
};
fetch(API.CHECK_USER_VOTE, API.POST_CONFIG(params))
.then(Helpers.checkStatus)
.then(Helpers.parseJSON)
.then((res) => {
let updates = { ...res };
let updatedPapers = papers.map((paper) => {
if (updates[paper.id]) {
paper.user_vote = updates[paper.id];
}
return paper;
});

this.setState(
{
papers: [],
},
() => {
this.setState({ papers: updatedPapers });
}
);
});
}
};

detectPromoted = (papers) => {
papers.forEach((paper) => {
if (paper.promoted) {
Expand Down
53 changes: 30 additions & 23 deletions components/Hubs/PaperEntryCard.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState } from "react";
import React, { useState, useEffect } from "react";
import Link from "next/link";
import Router from "next/router";
import { connect, useStore } from "react-redux";
Expand Down Expand Up @@ -30,21 +30,22 @@ import { PaperActions } from "~/redux/paper";
import API from "~/config/api";
import { Helpers } from "@quantfive/js-web-config";

const PaperEntryCard = ({
paper,
index,
hubName,
discussionCount,
mobileView,
style,
searchResult,
voteCallback,
postUpvote,
postDownvote,
reduxPaper,
promotionSummary,
onClick,
}) => {
const PaperEntryCard = (props) => {
let {
paper,
index,
hubName,
discussionCount,
mobileView,
style,
searchResult,
voteCallback,
postUpvote,
postDownvote,
reduxPaper,
promotionSummary,
onClick,
} = props;
let {
id,
authors,
Expand All @@ -65,8 +66,8 @@ const PaperEntryCard = ({
raw_authors,
slug,
} = paper || null;
let selected = null;
let vote_type = 0;
let selected = setVoteSelected(paper.user_vote);
const [lightbox, toggleLightbox] = useState(false);
const [slideIndex, setSlideIndex] = useState(1);
const [isOpen, setIsOpen] = useState(false); // Hub dropdown
Expand All @@ -88,12 +89,18 @@ const PaperEntryCard = ({
discussion_count = discussionCount;
}

if (user_vote) {
vote_type = user_vote.vote_type;
if (vote_type === UPVOTE_ENUM) {
selected = UPVOTE;
} else if (vote_type === DOWNVOTE_ENUM) {
selected = DOWNVOTE;
useEffect(() => {
selected = setVoteSelected(props.paper.user_vote);
}, [props.paper]);

function setVoteSelected(userVote) {
if (userVote) {
vote_type = userVote.vote_type;
if (vote_type === UPVOTE_ENUM) {
return UPVOTE;
} else if (vote_type === DOWNVOTE_ENUM) {
return DOWNVOTE;
}
}
}

Expand Down
1 change: 1 addition & 0 deletions config/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,7 @@ const routes = (BASE_URL) => {
BASE_URL + `purchase/${userId}/aggregate_user_promotions/`,
SAVE_IMAGE: BASE_URL + "paper/discussion/file/",
CAPTCHA_VERIFY: BASE_URL + "auth/captcha_verify/",
CHECK_USER_VOTE: BASE_URL + "paper/check_user_vote/",
};

function buildPaperChainUrl(paperId, threadId, commentId, replyId) {
Expand Down

0 comments on commit 9153858

Please sign in to comment.