From 56637fa48f8dc31911cd3054ed680288859306e9 Mon Sep 17 00:00:00 2001 From: Alexandru Munteanu <alexandru.munteanu@thinslices.com> Date: Tue, 6 Feb 2018 10:32:51 +0200 Subject: [PATCH] Remove files from redux and fix bug on new submissions --- .../component-wizard/src/components/Files.js | 64 +++++++++++++------ .../src/components/WizardPage.js | 15 +++-- packages/component-wizard/src/redux/files.js | 28 -------- .../components/SortableList/SortableList.js | 1 - 4 files changed, 55 insertions(+), 53 deletions(-) diff --git a/packages/component-wizard/src/components/Files.js b/packages/component-wizard/src/components/Files.js index a54117c83..b4e3683ae 100644 --- a/packages/component-wizard/src/components/Files.js +++ b/packages/component-wizard/src/components/Files.js @@ -3,12 +3,14 @@ import { get } from 'lodash' import PropTypes from 'prop-types' import { connect } from 'react-redux' import { withRouter } from 'react-router-dom' +import { change as changeForm } from 'redux-form' import { compose, - withHandlers, - getContext, lifecycle, + withState, + getContext, withContext, + withHandlers, } from 'recompose' import { SortableList } from 'pubsweet-components-faraday/src/components' @@ -17,10 +19,7 @@ import FileSection from './FileSection' import { uploadFile, deleteFile, - getFiles, getRequestStatus, - setAllFiles, - moveFiles, getSignedUrl, } from '../redux/files' @@ -84,20 +83,27 @@ export default compose( connect( state => ({ isFetching: getRequestStatus(state), - files: getFiles(state), }), { + changeForm, uploadFile, deleteFile, - setAllFiles, - moveFiles, getSignedUrl, }, ), + withState('files', 'setFiles', { + manuscripts: [], + coverLetter: [], + supplementary: [], + }), lifecycle({ componentDidMount() { - const { version, setAllFiles } = this.props - setAllFiles(version.files) + const { version: { files }, setFiles } = this.props + setFiles(prev => ({ + manuscripts: get(files, 'manuscripts') || [], + coverLetter: get(files, 'coverLetter') || [], + supplementary: get(files, 'supplementary') || [], + })) }, }), withHandlers({ @@ -107,10 +113,15 @@ export default compose( window.open(signedUrl) }) }, - dropSortableFile: ({ files, setAllFiles }) => () => { - setAllFiles(files) + dropSortableFile: ({ files, setFiles, changeForm }) => () => { + setFiles(files) + changeForm('wizard', 'files', files) }, - changeList: ({ files, setAllFiles }) => (fromListId, toListId, id) => { + changeList: ({ files, setFiles, changeForm }) => ( + fromListId, + toListId, + id, + ) => { const swappedFile = files[fromListId].find(f => f.id === id) const fromFiles = files[fromListId].filter(f => f.id !== id) @@ -121,26 +132,38 @@ export default compose( [toListId]: toFiles, [fromListId]: fromFiles, } - setAllFiles(newFiles) + setFiles(newFiles) + changeForm('wizard', 'files', files) }, - addFile: ({ files, uploadFile, setAllFiles, version }) => type => file => { + addFile: ({ + files, + uploadFile, + setFiles, + changeForm, + version, + }) => type => file => { uploadFile(file, type, version.id).then(fileResponse => { const newFiles = { ...files, [type]: [...files[type], fileResponse], } - setAllFiles(newFiles) + setFiles(newFiles) + changeForm('wizard', 'files', newFiles) }) }, - moveItem: ({ moveFiles, files }) => type => (dragIndex, hoverIndex) => { + moveItem: ({ moveFiles, files, setFiles }) => type => ( + dragIndex, + hoverIndex, + ) => { const newFiles = { ...files, [type]: SortableList.moveItem(files[type], dragIndex, hoverIndex), } - moveFiles(newFiles) + setFiles(newFiles) }, removeFile: ({ - setAllFiles, + setFiles, + changeForm, files, deleteFile, version, @@ -151,7 +174,8 @@ export default compose( ...files, [type]: files[type].filter(f => f.id !== id), } - setAllFiles(newFiles, type) + setFiles(newFiles, type) + changeForm('wizard', 'files', files) }, }), withContext( diff --git a/packages/component-wizard/src/components/WizardPage.js b/packages/component-wizard/src/components/WizardPage.js index 500ee3c0b..7a32edddf 100644 --- a/packages/component-wizard/src/components/WizardPage.js +++ b/packages/component-wizard/src/components/WizardPage.js @@ -1,13 +1,19 @@ import PropTypes from 'prop-types' import { connect } from 'react-redux' -import { bindActionCreators } from 'redux' import { actions } from 'pubsweet-client' +import { bindActionCreators } from 'redux' import { withJournal } from 'xpub-journal' import { ConnectPage } from 'xpub-connect' -import { selectCollection, selectFragment } from 'xpub-selectors' -import { compose, withHandlers, withState, withContext } from 'recompose' -import HTML5Backend from 'react-dnd-html5-backend' import { DragDropContext } from 'react-dnd' +import HTML5Backend from 'react-dnd-html5-backend' +import { selectCollection, selectFragment } from 'xpub-selectors' +import { + compose, + withHandlers, + withState, + withContext, + toClass, +} from 'recompose' import Wizard from './Wizard' @@ -81,4 +87,5 @@ export default compose( }), ), DragDropContext(HTML5Backend), + toClass, )(Wizard) diff --git a/packages/component-wizard/src/redux/files.js b/packages/component-wizard/src/redux/files.js index 93dddc958..9c319f1b3 100644 --- a/packages/component-wizard/src/redux/files.js +++ b/packages/component-wizard/src/redux/files.js @@ -1,5 +1,4 @@ import request, { remove, get } from 'pubsweet-client/src/helpers/api' -import { change as changeForm } from 'redux-form' const initialState = { isFetching: { @@ -8,11 +7,6 @@ const initialState = { coverLetter: false, }, error: null, - files: { - manuscripts: [], - supplementary: [], - coverLetter: [], - }, } // constants const UPLOAD_REQUEST = 'files/UPLOAD_REQUEST' @@ -23,23 +17,7 @@ const REMOVE_REQUEST = 'files/REMOVE_REQUEST' const REMOVE_FAILURE = 'files/REMOVE_FAILURE' const REMOVE_SUCCESS = 'files/REMOVE_SUCCESS' -const SET_ALL_FILES = 'files/SET_ALL_FILES' - // action creators -const _setAllFiles = files => ({ - type: SET_ALL_FILES, - files, -}) - -export const setAllFiles = files => dispatch => { - dispatch(changeForm('wizard', 'files', files)) - dispatch(_setAllFiles(files)) -} - -export const moveFiles = files => dispatch => { - dispatch(_setAllFiles(files)) -} - const uploadRequest = type => ({ type: UPLOAD_REQUEST, fileType: type, @@ -83,7 +61,6 @@ const removeSuccess = () => ({ }) // selectors -export const getFiles = state => state.files.files export const getRequestStatus = state => state.files.isFetching // thunked actions @@ -112,11 +89,6 @@ export const getSignedUrl = fileId => dispatch => get(`/aws/${fileId}`) // reducer export default (state = initialState, action) => { switch (action.type) { - case SET_ALL_FILES: - return { - ...state, - files: action.files, - } case UPLOAD_REQUEST: return { ...state, diff --git a/packages/components-faraday/src/components/SortableList/SortableList.js b/packages/components-faraday/src/components/SortableList/SortableList.js index d5e3a49c4..b19cc9d88 100644 --- a/packages/components-faraday/src/components/SortableList/SortableList.js +++ b/packages/components-faraday/src/components/SortableList/SortableList.js @@ -132,5 +132,4 @@ SortableList.moveItem = (items, dragIndex, hoverIndex) => { ] } -// export default DragDropContext(HTML5Backend)(SortableList) export default SortableList -- GitLab