Merge pull request #6457 from LLK/hotfix/comment-reply-load-more

[Hotfix][Master] Fix issue with "see more replies" button on old studio comment threads with > 25 replies
This commit is contained in:
Karishma Chadha 2022-01-12 15:33:04 -05:00 committed by GitHub
commit 4112bcc6c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 5 deletions

View file

@ -2,7 +2,13 @@ const keyMirror = require('keymirror');
const mergeWith = require('lodash.mergewith'); const mergeWith = require('lodash.mergewith');
const uniqBy = require('lodash.uniqby'); const uniqBy = require('lodash.uniqby');
const COMMENT_LIMIT = 20; // Number of replies to fetch at a time.
// The way this code is currently structured, it expects
// this number to be the same for project comment reply threads
// as well as studio comment reply threads.
// These could be decoupled in the future.
const REPLY_FETCH_LIMIT = 25;
module.exports.Status = keyMirror({ module.exports.Status = keyMirror({
FETCHED: null, FETCHED: null,
@ -108,7 +114,7 @@ module.exports.commentsReducer = (state, action) => {
comments: state.comments.map(comment => { comments: state.comments.map(comment => {
if (action.replies[comment.id]) { if (action.replies[comment.id]) {
return Object.assign({}, comment, { return Object.assign({}, comment, {
moreRepliesToLoad: action.replies[comment.id].length === COMMENT_LIMIT moreRepliesToLoad: action.replies[comment.id].length === REPLY_FETCH_LIMIT
}); });
} }
return comment; return comment;

View file

@ -4,6 +4,7 @@ const api = require('../lib/api');
const log = require('../lib/log'); const log = require('../lib/log');
const COMMENT_LIMIT = 20; const COMMENT_LIMIT = 20;
const REPLY_LIMIT = 25; // Number of replies to fetch at a time
const { const {
addNewComment, addNewComment,
@ -28,7 +29,7 @@ const getReplies = (projectId, commentIds, offset, ownerUsername, isAdmin, token
api({ api({
uri: `${isAdmin ? '/admin' : `/users/${ownerUsername}`}/projects/${projectId}/comments/${parentId}/replies`, uri: `${isAdmin ? '/admin' : `/users/${ownerUsername}`}/projects/${projectId}/comments/${parentId}/replies`,
authentication: token ? token : null, authentication: token ? token : null,
params: {offset: offset || 0, limit: COMMENT_LIMIT} params: {offset: offset || 0, limit: REPLY_LIMIT}
}, (err, body, res) => { }, (err, body, res) => {
if (err) { if (err) {
return callback(`Error fetching comment replies: ${err}`); return callback(`Error fetching comment replies: ${err}`);

View file

@ -140,9 +140,9 @@ tap.test('setReplies', t => {
t.equal(state.comments[0].moreRepliesToLoad, false); t.equal(state.comments[0].moreRepliesToLoad, false);
t.equal(state.comments[1].moreRepliesToLoad, false); t.equal(state.comments[1].moreRepliesToLoad, false);
// Getting 20 (COMMENT_LIMIT) replies sets moreRepliesToLoad to true // Getting 25 (REPLY_FETCH_LIMIT) replies sets moreRepliesToLoad to true
state = reducer(state, Comments.setReplies({ state = reducer(state, Comments.setReplies({
id3: (new Array(20)).map((_, i) => ({id: `id${i + 1}`})) id3: (new Array(25)).map((_, i) => ({id: `id${i + 1}`}))
})); }));
t.equal(state.comments[0].moreRepliesToLoad, false); t.equal(state.comments[0].moreRepliesToLoad, false);
t.equal(state.comments[1].moreRepliesToLoad, false); t.equal(state.comments[1].moreRepliesToLoad, false);