diff --git a/src/elements/content-sidebar/ActivitySidebar.js b/src/elements/content-sidebar/ActivitySidebar.js index b54c62a817..090f5a9d4d 100644 --- a/src/elements/content-sidebar/ActivitySidebar.js +++ b/src/elements/content-sidebar/ActivitySidebar.js @@ -440,14 +440,15 @@ class ActivitySidebar extends React.PureComponent { * @return void */ deleteComment = ({ id, permissions }: { id: string, permissions: BoxCommentPermission }): void => { - const { api, file, hasReplies, onCommentDelete } = this.props; + const { api, features, file, hasReplies, onCommentDelete } = this.props; + const isThreadedRepliesV2Enabled = isFeatureEnabled(features, 'activityFeed.threadedRepliesV2.enabled'); const successCallback = (comment: Comment) => { this.feedSuccessCallback(); onCommentDelete(comment); }; - if (hasReplies) { + if (hasReplies || isThreadedRepliesV2Enabled) { api.getFeedAPI(false).deleteThreadedComment(file, id, permissions, successCallback, this.feedErrorCallback); } else { api.getFeedAPI(false).deleteComment(file, id, permissions, successCallback, this.feedErrorCallback); @@ -669,7 +670,8 @@ class ActivitySidebar extends React.PureComponent { * @return {void} */ createComment = (text: string, hasMention: boolean): void => { - const { api, currentUser, file, hasReplies, onCommentCreate } = this.props; + const { api, currentUser, features, file, hasReplies, onCommentCreate } = this.props; + const isThreadedRepliesV2Enabled = isFeatureEnabled(features, 'activityFeed.threadedRepliesV2.enabled'); if (!currentUser) { throw getBadUserError(); @@ -680,7 +682,7 @@ class ActivitySidebar extends React.PureComponent { this.feedSuccessCallback(); }; - if (hasReplies) { + if (hasReplies || isThreadedRepliesV2Enabled) { api.getFeedAPI(false).createThreadedComment( file, currentUser, diff --git a/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js b/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js index 0a8411e94c..0692cab1fd 100644 --- a/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +++ b/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js @@ -275,6 +275,31 @@ describe('elements/content-sidebar/ActivitySidebar', () => { ); expect(instance.fetchFeedItems).toBeCalled(); }); + + test('should call the deleteThreadedComment API when threadedRepliesV2 is enabled even if hasReplies is false', () => { + const wrapper = getWrapper({ + features: { activityFeed: { threadedRepliesV2: { enabled: true } } }, + hasReplies: false, + }); + const instance = wrapper.instance(); + instance.fetchFeedItems = jest.fn(); + + const id = '1'; + const permissions = { + can_edit: false, + can_delete: true, + }; + instance.deleteComment({ id, permissions }); + expect(feedAPI.deleteThreadedComment).toBeCalledWith( + file, + id, + permissions, + expect.any(Function), + expect.any(Function), + ); + expect(feedAPI.deleteComment).not.toBeCalled(); + expect(instance.fetchFeedItems).toBeCalled(); + }); }); describe('deleteReply()', () => { @@ -458,6 +483,28 @@ describe('elements/content-sidebar/ActivitySidebar', () => { ); expect(instance.fetchFeedItems).toBeCalled(); }); + + test('should call the createThreadedComment API when threadedRepliesV2 is enabled even if hasReplies is false', () => { + const wrapper = getWrapper({ + features: { activityFeed: { threadedRepliesV2: { enabled: true } } }, + hasReplies: false, + }); + const instance = wrapper.instance(); + instance.fetchFeedItems = jest.fn(); + const message = 'foo'; + const hasMention = true; + + instance.createComment(message, hasMention); + expect(feedAPI.createThreadedComment).toBeCalledWith( + file, + currentUser, + message, + expect.any(Function), + expect.any(Function), + ); + expect(feedAPI.createComment).not.toBeCalled(); + expect(instance.fetchFeedItems).toBeCalled(); + }); }); describe('createReply()', () => {