import { actions } from 'pubsweet-client' import { get, debounce, omit, mergeWith } from 'lodash' import { autosaveRequest } from 'pubsweet-component-wizard/src/redux/autosave' const parseRevision = (values, fragment) => { const v = omit(values, 'authorForm') return { ...fragment, revision: { ...v, metadata: mergeWith( {}, fragment.metadata, v.metadata, (obj, src) => (src === '' ? obj : src), ), }, } } const _onChange = (values, dispatch, { collection, fragment }) => { dispatch(autosaveRequest()) dispatch(actions.updateFragment(collection, parseRevision(values, fragment))) } export const onChange = debounce(_onChange, 1000, { maxWait: 5000 }) export const onSubmit = (values, dispatch, { fragment, collection }) => { // dispatch( // actions.updateFragment(collection, { // ...fragment, // revision, // }), // ) // console.log('se face surmit', values) } export const getInitialValues = fragment => ({ files: get(fragment, 'revision.files', {}), authors: get(fragment, 'revision.authors', []), metadata: get(fragment, 'revision.metadata', { abstract: '', title: '', type: '', }), responseToReviewers: get(fragment, 'revision.responseToReviewers', { content: '', file: null, }), })