Skip to content
Snippets Groups Projects
utils.js 1.29 KiB
Newer Older
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,
  }),
})