diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js
index f986b947b..c4bf0f85c 100644
--- a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js
+++ b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js
@@ -9,51 +9,67 @@ import translations from 'coral-admin/src/translations';
import LoadMore from './components/LoadMore';
const lang = new I18n(translations);
-const ModerationQueue = ({comments, selectedIndex, commentCount, singleView, loadMore, activeTab, sort, ...props}) => {
- return (
-
-
- {
- comments.length
- ? comments.map((comment, i) => {
- const status = comment.action_summaries ? 'FLAGGED' : comment.status;
- return ;
- })
- : {lang.t('modqueue.emptyqueue')}
- }
-
-
-
- );
-};
+class ModerationQueue extends React.Component {
-ModerationQueue.propTypes = {
- bannedWords: PropTypes.arrayOf(PropTypes.string).isRequired,
- suspectWords: PropTypes.arrayOf(PropTypes.string).isRequired,
- currentAsset: PropTypes.object,
- showBanUserDialog: PropTypes.func.isRequired,
- rejectComment: PropTypes.func.isRequired,
- acceptComment: PropTypes.func.isRequired,
- comments: PropTypes.array.isRequired
-};
+ static propTypes = {
+ bannedWords: PropTypes.arrayOf(PropTypes.string).isRequired,
+ suspectWords: PropTypes.arrayOf(PropTypes.string).isRequired,
+ currentAsset: PropTypes.object,
+ showBanUserDialog: PropTypes.func.isRequired,
+ rejectComment: PropTypes.func.isRequired,
+ acceptComment: PropTypes.func.isRequired,
+ comments: PropTypes.array.isRequired
+ }
+
+ componentDidUpdate (prev) {
+ const {loadMore, comments, commentCount, sort, activeTab: tab, assetId: asset_id} = this.props;
+
+ // if the user just moderated the last (visible) comment
+ // AND there are more comments available on the server,
+ // go ahead and load more comments
+ if (prev.comments.length > 0 && comments.length === 0 && commentCount > 0) {
+ loadMore({sort, tab, asset_id});
+ }
+ }
+
+ render () {
+ const {comments, selectedIndex, commentCount, singleView, loadMore, activeTab, sort, ...props} = this.props;
+
+ return (
+
+
+ {
+ comments.length
+ ? comments.map((comment, i) => {
+ const status = comment.action_summaries ? 'FLAGGED' : comment.status;
+ return ;
+ })
+ : {lang.t('modqueue.emptyqueue')}
+ }
+
+
+
+ );
+ }
+}
export default ModerationQueue;
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
index 4b4430192..e5afd9726 100644
--- a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
+++ b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js
@@ -69,16 +69,14 @@ const Comment = ({actions = [], comment, ...props}) => {
{actions.map((action, i) => {
const active = (action === 'REJECT' && comment.status === 'REJECTED') ||
(action === 'APPROVE' && comment.status === 'ACCEPTED');
- return ( props.acceptComment({commentId: comment.id})}
- rejectComment={() => props.rejectComment({commentId: comment.id})}
- />);
- }
- )}
+ rejectComment={() => props.rejectComment({commentId: comment.id})} />;
+ })}
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/LoadMore.js b/client/coral-admin/src/containers/ModerationQueue/components/LoadMore.js
index f16635486..c90d3cd14 100644
--- a/client/coral-admin/src/containers/ModerationQueue/components/LoadMore.js
+++ b/client/coral-admin/src/containers/ModerationQueue/components/LoadMore.js
@@ -7,13 +7,16 @@ const LoadMore = ({comments, loadMore, sort, tab, assetId, showLoadMore}) =>
{
showLoadMore &&
}