Skip to content

Commit 891a4fb

Browse files
authored
Merge pull request #556 from marcussfu/master
adjust 'New feedbacks are not shown in reason popup when there are too many feedbacks'
2 parents 00dcd7a + 941b1ed commit 891a4fb

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

components/ArticleReplyFeedbackControl/ReasonsDisplay.js

+42-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useQuery } from '@apollo/react-hooks';
55
import { withStyles, makeStyles } from '@material-ui/core/styles';
66
import { Box, Tab, Tabs, CircularProgress } from '@material-ui/core';
77
import { ThumbUpIcon, ThumbDownIcon } from 'components/icons';
8+
import { LoadMore } from 'components/ListPageControls';
89
import { useIsUserBlocked } from 'lib/isUserBlocked';
910
import Feedback from './Feedback';
1011

@@ -46,7 +47,7 @@ export const LOAD_FEEDBACKS = gql`
4647
) {
4748
ListArticleReplyFeedbacks(
4849
filter: { articleId: $articleId, replyId: $replyId, statuses: $statuses }
49-
first: 100
50+
first: 1000
5051
) {
5152
edges {
5253
node {
@@ -71,6 +72,8 @@ function ReasonsDisplay({ articleReply, onSizeChange = () => {} }) {
7172
const classes = useStyles();
7273
const isUserBlocked = useIsUserBlocked();
7374
const [tab, setTab] = useState(0);
75+
const [isLoadMoreUpvote, setIsLoadMoreUpvote] = useState(false);
76+
const [isLoadMoreDownvote, setIsLoadMoreDownvote] = useState(false);
7477
const { data, loading } = useQuery(LOAD_FEEDBACKS, {
7578
variables: {
7679
articleId: articleReply.articleId,
@@ -125,6 +128,15 @@ function ReasonsDisplay({ articleReply, onSizeChange = () => {} }) {
125128
<Box display={tab === 0 ? 'block' : 'none'} className={classes.feedbacks}>
126129
{feedbacks
127130
.filter(({ vote }) => vote === 'UPVOTE')
131+
.sort((a, b) => {
132+
if (a.comment === '') return 1;
133+
else if (b.comment === '') return -1;
134+
return 0;
135+
})
136+
.slice(
137+
0,
138+
isLoadMoreUpvote ? feedbacks.length : Math.min(feedbacks.length, 10)
139+
)
128140
.map(feedback => (
129141
<Feedback
130142
key={feedback.id}
@@ -133,10 +145,30 @@ function ReasonsDisplay({ articleReply, onSizeChange = () => {} }) {
133145
feedback={feedback}
134146
/>
135147
))}
148+
{feedbacks.length > 10 && !isLoadMoreUpvote && (
149+
<LoadMore
150+
edges={feedbacks}
151+
loading={loading}
152+
onMoreRequest={() => {
153+
setIsLoadMoreUpvote(true);
154+
}}
155+
/>
156+
)}
136157
</Box>
137158
<Box display={tab === 1 ? 'block' : 'none'} className={classes.feedbacks}>
138159
{feedbacks
139160
.filter(({ vote }) => vote === 'DOWNVOTE')
161+
.sort((a, b) => {
162+
if (a.comment === '') return 1;
163+
else if (b.comment === '') return -1;
164+
return 0;
165+
})
166+
.slice(
167+
0,
168+
isLoadMoreDownvote
169+
? feedbacks.length
170+
: Math.min(feedbacks.length, 10)
171+
)
140172
.map(feedback => (
141173
<Feedback
142174
key={feedback.id}
@@ -145,6 +177,15 @@ function ReasonsDisplay({ articleReply, onSizeChange = () => {} }) {
145177
feedback={feedback}
146178
/>
147179
))}
180+
{feedbacks.length > 10 && !isLoadMoreDownvote && (
181+
<LoadMore
182+
edges={feedbacks}
183+
loading={loading}
184+
onMoreRequest={() => {
185+
setIsLoadMoreDownvote(true);
186+
}}
187+
/>
188+
)}
148189
</Box>
149190
</>
150191
);

0 commit comments

Comments
 (0)