From 1a8ed7206882f86827bec51df73c5a83f99fd80e Mon Sep 17 00:00:00 2001 From: efloden Date: Thu, 8 Feb 2018 14:38:49 +1000 Subject: [PATCH] fix(ZNTA-2318): rejecting translation by keypress, MainContent now stateless --- .../editor/actions/key-shortcuts-actions.js | 7 ++++- .../editor/actions/review-trans-actions.js | 5 ++++ .../src/app/editor/containers/MainContent.js | 26 ++++++++----------- .../editor/reducers/review-trans-reducer.js | 11 +++++++- 4 files changed, 32 insertions(+), 17 deletions(-) diff --git a/server/zanata-frontend/src/app/editor/actions/key-shortcuts-actions.js b/server/zanata-frontend/src/app/editor/actions/key-shortcuts-actions.js index a5c15846fb..806964774c 100644 --- a/server/zanata-frontend/src/app/editor/actions/key-shortcuts-actions.js +++ b/server/zanata-frontend/src/app/editor/actions/key-shortcuts-actions.js @@ -8,6 +8,7 @@ import { savePhraseWithStatus } from './phrases-actions' import { moveNext, movePrevious } from './phrase-navigation-actions' import { copySuggestionN } from './suggestions-actions' +import { toggleReviewModal } from './review-trans-actions' import { STATUS_TRANSLATED, STATUS_NEEDS_WORK, @@ -211,7 +212,11 @@ function saveAs (status) { if (isSaving || (isCurrentStatus && !hasTranslationChanged(phrase))) { return } - dispatch(savePhraseWithStatus(phrase, status)) + if (status === STATUS_REJECTED) { + dispatch(toggleReviewModal()) + } else { + dispatch(savePhraseWithStatus(phrase, status)) + } } } } diff --git a/server/zanata-frontend/src/app/editor/actions/review-trans-actions.js b/server/zanata-frontend/src/app/editor/actions/review-trans-actions.js index 702558cd22..9378b0a287 100644 --- a/server/zanata-frontend/src/app/editor/actions/review-trans-actions.js +++ b/server/zanata-frontend/src/app/editor/actions/review-trans-actions.js @@ -6,6 +6,7 @@ import { } from '../../actions/common-actions' import { savePhraseWithStatus } from './phrases-actions' import { STATUS_REJECTED } from '../utils/status-util' +import { createAction } from 'redux-actions' export const ADD_REVIEW_REQUEST = 'ADD_REVIEW_REQUEST' export const ADD_REVIEW_SUCCESS = 'ADD_REVIEW_SUCCESS' @@ -14,6 +15,8 @@ export const GET_ALL_CRITERIA_REQUEST = 'GET_ALL_CRITERIA_REQUEST' export const GET_ALL_CRITERIA_SUCCESS = 'GET_ALL_CRITERIA_SUCCESS' export const GET_ALL_CRITERIA_FAILURE = 'GET_ALL_CRITERIA_FAILURE' +export const TOGGLE_REVIEW_MODAL = 'TOGGLE_REVIEW_MODAL' + /** * Perform a save of a translation review with the given review data */ @@ -44,6 +47,8 @@ export function rejectTranslation (dispatch, review) { } } +export const toggleReviewModal = createAction(TOGGLE_REVIEW_MODAL) + export function fetchAllCriteria () { const endpoint = `${apiUrl}/review` const apiTypes = [ diff --git a/server/zanata-frontend/src/app/editor/containers/MainContent.js b/server/zanata-frontend/src/app/editor/containers/MainContent.js index ccbc9a7a72..ad792ca3dc 100644 --- a/server/zanata-frontend/src/app/editor/containers/MainContent.js +++ b/server/zanata-frontend/src/app/editor/containers/MainContent.js @@ -5,7 +5,9 @@ import { Icon } from '../../components' import TransUnit from '../components/TransUnit' import { connect } from 'react-redux' import { getCurrentPagePhraseDetail } from '../selectors' -import { fetchAllCriteria } from '../actions/review-trans-actions' +import { + fetchAllCriteria, toggleReviewModal +} from '../actions/review-trans-actions' import { getCriteria } from '../reducers/review-trans-reducer' import { MINOR, MAJOR, CRITICAL } from '../utils/reject-trans-util' import RejectTranslationModal from '../containers/RejectTranslationModal' @@ -17,7 +19,9 @@ import { isUndefined } from 'lodash' class MainContent extends React.Component { static propTypes = { maximised: PropTypes.bool.isRequired, + showReviewModal: PropTypes.bool.isRequired, phrases: PropTypes.arrayOf(PropTypes.object).isRequired, + toggleReviewModal: PropTypes.func.isRequired, fetchAllCriteria: PropTypes.func.isRequired, criteria: PropTypes.arrayOf(PropTypes.shape({ editable: PropTypes.bool.isRequired, @@ -29,20 +33,9 @@ class MainContent extends React.Component { }).isRequired, selectedPhraseId: PropTypes.number } - constructor (props) { - super(props) - this.state = { - showRejectModal: false - } - } componentDidMount () { this.props.fetchAllCriteria() } - toggleRejectModal = () => { - this.setState(prevState => ({ - showRejectModal: !prevState.showRejectModal - })) - } render () { const { maximised, phrases } = this.props if (phrases.length === 0) { @@ -71,7 +64,7 @@ class MainContent extends React.Component { index={phrase.id} phrase={phrase} criteria={this.props.criteria} - toggleRejectModal={this.toggleRejectModal} /> + toggleRejectModal={this.props.toggleReviewModal} /> ) }) @@ -97,8 +90,8 @@ class MainContent extends React.Component { dispatch(toggleReviewModal()), fetchAllCriteria: () => dispatch(fetchAllCriteria()) } } diff --git a/server/zanata-frontend/src/app/editor/reducers/review-trans-reducer.js b/server/zanata-frontend/src/app/editor/reducers/review-trans-reducer.js index 5ab4493eea..6fafc89b0f 100644 --- a/server/zanata-frontend/src/app/editor/reducers/review-trans-reducer.js +++ b/server/zanata-frontend/src/app/editor/reducers/review-trans-reducer.js @@ -2,11 +2,13 @@ import { handleActions } from 'redux-actions' import update from 'immutability-helper' import { GET_ALL_CRITERIA_SUCCESS, - GET_ALL_CRITERIA_FAILURE + GET_ALL_CRITERIA_FAILURE, + TOGGLE_REVIEW_MODAL } from '../actions/review-trans-actions' const defaultState = { notification: undefined, + showReviewModal: false, criteria: [] } @@ -33,6 +35,13 @@ const review = handleActions({ $set: `Failed to retrieve review criteria. ${getErrorMessage(action)}` } }) + }, + [TOGGLE_REVIEW_MODAL]: (state, action) => { + return update(state, { + showReviewModal: { + $set: !state.showReviewModal + } + }) } }, defaultState)