@@ -5,6 +5,7 @@ import { useQuery } from '@apollo/react-hooks';
5
5
import { withStyles , makeStyles } from '@material-ui/core/styles' ;
6
6
import { Box , Tab , Tabs , CircularProgress } from '@material-ui/core' ;
7
7
import { ThumbUpIcon , ThumbDownIcon } from 'components/icons' ;
8
+ import { LoadMore } from 'components/ListPageControls' ;
8
9
import { useIsUserBlocked } from 'lib/isUserBlocked' ;
9
10
import Feedback from './Feedback' ;
10
11
@@ -46,7 +47,7 @@ export const LOAD_FEEDBACKS = gql`
46
47
) {
47
48
ListArticleReplyFeedbacks(
48
49
filter: { articleId: $articleId, replyId: $replyId, statuses: $statuses }
49
- first: 100
50
+ first: 1000
50
51
) {
51
52
edges {
52
53
node {
@@ -71,6 +72,8 @@ function ReasonsDisplay({ articleReply, onSizeChange = () => {} }) {
71
72
const classes = useStyles ( ) ;
72
73
const isUserBlocked = useIsUserBlocked ( ) ;
73
74
const [ tab , setTab ] = useState ( 0 ) ;
75
+ const [ isLoadMoreUpvote , setIsLoadMoreUpvote ] = useState ( false ) ;
76
+ const [ isLoadMoreDownvote , setIsLoadMoreDownvote ] = useState ( false ) ;
74
77
const { data, loading } = useQuery ( LOAD_FEEDBACKS , {
75
78
variables : {
76
79
articleId : articleReply . articleId ,
@@ -125,6 +128,15 @@ function ReasonsDisplay({ articleReply, onSizeChange = () => {} }) {
125
128
< Box display = { tab === 0 ? 'block' : 'none' } className = { classes . feedbacks } >
126
129
{ feedbacks
127
130
. 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
+ )
128
140
. map ( feedback => (
129
141
< Feedback
130
142
key = { feedback . id }
@@ -133,10 +145,30 @@ function ReasonsDisplay({ articleReply, onSizeChange = () => {} }) {
133
145
feedback = { feedback }
134
146
/>
135
147
) ) }
148
+ { feedbacks . length > 10 && ! isLoadMoreUpvote && (
149
+ < LoadMore
150
+ edges = { feedbacks }
151
+ loading = { loading }
152
+ onMoreRequest = { ( ) => {
153
+ setIsLoadMoreUpvote ( true ) ;
154
+ } }
155
+ />
156
+ ) }
136
157
</ Box >
137
158
< Box display = { tab === 1 ? 'block' : 'none' } className = { classes . feedbacks } >
138
159
{ feedbacks
139
160
. 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
+ )
140
172
. map ( feedback => (
141
173
< Feedback
142
174
key = { feedback . id }
@@ -145,6 +177,15 @@ function ReasonsDisplay({ articleReply, onSizeChange = () => {} }) {
145
177
feedback = { feedback }
146
178
/>
147
179
) ) }
180
+ { feedbacks . length > 10 && ! isLoadMoreDownvote && (
181
+ < LoadMore
182
+ edges = { feedbacks }
183
+ loading = { loading }
184
+ onMoreRequest = { ( ) => {
185
+ setIsLoadMoreDownvote ( true ) ;
186
+ } }
187
+ />
188
+ ) }
148
189
</ Box >
149
190
</ >
150
191
) ;
0 commit comments