From 22778e2775bc2c14e6884d831b15210dbfeefefb Mon Sep 17 00:00:00 2001
From: Alexandru Munteanu <alexandru.munt@gmail.com>
Date: Tue, 12 Jun 2018 14:26:17 +0300
Subject: [PATCH] fix(upload-file): fix uploading a file on submit manuscript
 wizard

---
 .../component-wizard/src/redux/conversion.js    |  2 ++
 .../src/components/Files/Files.js               | 17 ++++++++++++-----
 .../app/config/journal/submit-wizard.js         |  2 +-
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/packages/component-wizard/src/redux/conversion.js b/packages/component-wizard/src/redux/conversion.js
index a4043ca5d..c085f1e19 100644
--- a/packages/component-wizard/src/redux/conversion.js
+++ b/packages/component-wizard/src/redux/conversion.js
@@ -51,7 +51,9 @@ export const createDraftSubmission = history => (dispatch, getState) => {
       actions.createFragment(collection, {
         created: new Date(), // TODO: set on server
         files: {
+          manuscripts: [],
           supplementary: [],
+          coverLetter: [],
         },
         fragmentType: 'version',
         metadata: {},
diff --git a/packages/components-faraday/src/components/Files/Files.js b/packages/components-faraday/src/components/Files/Files.js
index 3bf85519b..77655bb64 100644
--- a/packages/components-faraday/src/components/Files/Files.js
+++ b/packages/components-faraday/src/components/Files/Files.js
@@ -1,16 +1,16 @@
 import React from 'react'
-import { get } from 'lodash'
 import { th } from '@pubsweet/ui'
 import PropTypes from 'prop-types'
+import { get, isEqual } from 'lodash'
 import { connect } from 'react-redux'
 import styled from 'styled-components'
 import { withRouter } from 'react-router-dom'
+import { selectFragment } from 'xpub-selectors'
 import { change as changeForm } from 'redux-form'
 import {
   compose,
   lifecycle,
   withState,
-  getContext,
   withContext,
   withHandlers,
 } from 'recompose'
@@ -77,11 +77,11 @@ const Files = ({
 
 export default compose(
   withRouter,
-  getContext({ version: PropTypes.object, project: PropTypes.object }),
   connect(
-    state => ({
-      isFetching: getRequestStatus(state),
+    (state, { match }) => ({
       error: getFileError(state),
+      isFetching: getRequestStatus(state),
+      version: selectFragment(state, match.params.version),
     }),
     {
       changeForm,
@@ -103,6 +103,13 @@ export default compose(
         supplementary: get(files, 'supplementary') || [],
       }))
     },
+    componentWillReceiveProps(nextProps) {
+      const { setFiles, version: { files: previousFiles } } = this.props
+      const { version: { files } } = nextProps
+      if (!isEqual(previousFiles, files)) {
+        setFiles(files)
+      }
+    },
   }),
   withHandlers({
     dropSortableFile: ({ files, setFiles, changeForm }) => (
diff --git a/packages/xpub-faraday/app/config/journal/submit-wizard.js b/packages/xpub-faraday/app/config/journal/submit-wizard.js
index 132dd9c2f..1dd84548c 100644
--- a/packages/xpub-faraday/app/config/journal/submit-wizard.js
+++ b/packages/xpub-faraday/app/config/journal/submit-wizard.js
@@ -174,7 +174,7 @@ export default {
       title: '4. Manuscript Files Upload',
       children: [
         {
-          fieldId: 'file-upload',
+          fieldId: 'files',
           renderComponent: Files,
           validate: [requiredFiles],
         },
-- 
GitLab