From 3ecb93365a287bc5bea1933864c82f2baa07ce3b Mon Sep 17 00:00:00 2001 From: David Jay Date: Fri, 3 Mar 2017 12:50:39 -0500 Subject: [PATCH 1/3] Correcting bug in keyboard shortcut next and previous. --- .../src/containers/ModerationQueue/ModerationContainer.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js index 25a7a9511..a82c052d5 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js @@ -32,8 +32,12 @@ class ModerationContainer extends Component { key('s', () => singleView()); key('shift+/', () => toggleModal(true)); key('esc', () => toggleModal(false)); - key('j', () => this.setState({selectedIndex: selectedIndex + 1})); - key('k', () => this.setState({selectedIndex: selectedIndex > 0 ? selectedIndex + 1 : selectedIndex})); + key('j', () => this.setState(prevState => + ({...prevState, selectedIndex: prevState.selectedIndex + 1})) + ); + key('k', () => this.setState(prevState => + ({...prevState, selectedIndex: prevState.selectedIndex > 0 ? prevState.selectedIndex + 1 : selectedIndex})) + ); key('r', () => this.moderate(false)); key('t', () => this.moderate(true)); } From 45208b096fa13658aa284dcbbfcb6908b55f74c7 Mon Sep 17 00:00:00 2001 From: David Jay Date: Fri, 3 Mar 2017 12:52:20 -0500 Subject: [PATCH 2/3] Correcting bug in prev keyboard shortcut. --- .../src/containers/ModerationQueue/ModerationContainer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js index a82c052d5..d503335b8 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js @@ -36,7 +36,7 @@ class ModerationContainer extends Component { ({...prevState, selectedIndex: prevState.selectedIndex + 1})) ); key('k', () => this.setState(prevState => - ({...prevState, selectedIndex: prevState.selectedIndex > 0 ? prevState.selectedIndex + 1 : selectedIndex})) + ({...prevState, selectedIndex: prevState.selectedIndex > 0 ? prevState.selectedIndex - 1 : selectedIndex})) ); key('r', () => this.moderate(false)); key('t', () => this.moderate(true)); From 15193e97a88def11eb147638957b2c158caa785b Mon Sep 17 00:00:00 2001 From: David Jay Date: Wed, 8 Mar 2017 13:01:37 -0500 Subject: [PATCH 3/3] Preventing keys from scrolling past the end of the comment queue. --- .../ModerationQueue/ModerationContainer.js | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js index d503335b8..2f43911b1 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js @@ -26,27 +26,21 @@ class ModerationContainer extends Component { componentWillMount() { const {toggleModal, singleView} = this.props; - const {selectedIndex} = this.state; - + this.props.fetchSettings(); key('s', () => singleView()); key('shift+/', () => toggleModal(true)); key('esc', () => toggleModal(false)); - key('j', () => this.setState(prevState => - ({...prevState, selectedIndex: prevState.selectedIndex + 1})) - ); - key('k', () => this.setState(prevState => - ({...prevState, selectedIndex: prevState.selectedIndex > 0 ? prevState.selectedIndex - 1 : selectedIndex})) - ); - key('r', () => this.moderate(false)); - key('t', () => this.moderate(true)); + key('j', this.select(true)); + key('k', this.select(false)); + key('r', this.moderate(false)); + key('t', this.moderate(true)); } - moderate = (accept) => { - const {data, route, acceptComment, rejectComment} = this.props; + moderate = (accept) => () => { + const {acceptComment, rejectComment} = this.props; const {selectedIndex} = this.state; - const activeTab = route.path === ':id' ? 'premod' : route.path; - const comments = data[activeTab]; + const comments = this.getComments(); const commentId = {commentId: comments[selectedIndex].id}; if (accept) { @@ -54,7 +48,30 @@ class ModerationContainer extends Component { } else { rejectComment(commentId); } + } + getComments = () => { + const {data, route} = this.props; + const activeTab = route.path === ':id' ? 'premod' : route.path; + return data[activeTab]; + } + + select = (next) => () => { + if (next) { + this.setState(prevState => + ({ + ...prevState, + selectedIndex: prevState.selectedIndex < this.getComments().length - 1 + ? prevState.selectedIndex + 1 : prevState.selectedIndex + })); + } else { + this.setState(prevState => + ({ + ...prevState, + selectedIndex: prevState.selectedIndex > 0 ? + prevState.selectedIndex - 1 : prevState.selectedIndex + })); + } } componentWillUnmount() {