diff --git a/packages/component-faraday-selectors/src/index.js b/packages/component-faraday-selectors/src/index.js index db6ee1a0981b71a520e57c8f2b7c9437cc4873d9..65af2dd10ea67925098d318bc9f5d7ff13223d28 100644 --- a/packages/component-faraday-selectors/src/index.js +++ b/packages/component-faraday-selectors/src/index.js @@ -2,7 +2,7 @@ import { get, last } from 'lodash' export const isHEToManuscript = (state, collectionId) => { const currentUserId = get(state, 'currentUser.user.id') - const collections = get(state, 'collections') || [] + const collections = get(state, 'collections', []) const collection = collections.find(c => c.id === collectionId) || {} return get(collection, 'handlingEditor.id') === currentUserId } @@ -44,8 +44,11 @@ export const canInviteReviewers = ({ currentUser: { user } }, project) => { export const getUserToken = ({ currentUser }) => get(currentUser, 'user.token') export const getHERecommendation = (state, collectionId, fragmentId) => { - const recommendations = - get(state, `fragments.${fragmentId}.recommendations`) || [] + const recommendations = get( + state, + `fragments.${fragmentId}.recommendations`, + [], + ) const collection = get(state, 'collections').find(c => c.id === collectionId) const heId = get(collection, `handlingEditor.id`) @@ -84,7 +87,7 @@ export const canMakeRevision = (state, collection, fragment) => { } export const currentUserIsAuthor = (state, id) => { - const permissions = getUserPermissions(state) || [] + const permissions = getUserPermissions(state) return permissions .filter(f => f.role === 'author') @@ -93,7 +96,7 @@ export const currentUserIsAuthor = (state, id) => { } export const getUserPermissions = ({ currentUser }) => - get(currentUser, 'user.teams').map(t => ({ + get(currentUser, 'user.teams', []).map(t => ({ objectId: t.object.id, objectType: t.object.type, role: t.teamType.permissions, diff --git a/packages/component-helper-service/src/services/Email.js b/packages/component-helper-service/src/services/Email.js index e201739d7c36de4f50dd5f12903efb2679338ed1..2da243dfc02e037cf19e896b9e3e1d7e76aa2799 100644 --- a/packages/component-helper-service/src/services/Email.js +++ b/packages/component-helper-service/src/services/Email.js @@ -86,6 +86,7 @@ class Email { reviewers.forEach(user => mailService.sendNotificationEmail({ + user, emailType, toEmail: user.email, meta: { @@ -151,7 +152,7 @@ class Email { parsedFragment: { heRecommendation, id, title, newComments }, authors: { submittingAuthor: { email, firstName, lastName } }, } = this - let comments = get(heRecommendation, 'comments') || [] + let comments = get(heRecommendation, 'comments', []) if (requestToRevision) comments = newComments const authorNote = comments.find(comm => comm.public) const content = get(authorNote, 'content') @@ -213,14 +214,15 @@ class Email { } = this const userHelper = new User({ UserModel }) const eic = await userHelper.getEditorInChief() - const toEmail = get(collection, 'handlingEditor.email') + const user = get(collection, 'handlingEditor', {}) let emailType = publish ? 'he-manuscript-published' : 'he-manuscript-rejected' if (reviewSubmitted) emailType = 'review-submitted' if (returnWithComments) emailType = 'he-manuscript-return-with-comments' mailService.sendNotificationEmail({ - toEmail, + user, + toEmail: user.email, emailType, meta: { baseUrl, @@ -229,7 +231,7 @@ class Email { eicComments, eicName: `${eic.firstName} ${eic.lastName}`, emailSubject: `${collection.customId}: Manuscript Decision`, - handlingEditorName: get(collection, 'handlingEditor.name') || '', + handlingEditorName: user.name || '', fragment: { id, title, @@ -280,6 +282,7 @@ class Email { const toEmail = eic.email mailService.sendNotificationEmail({ toEmail, + user: eic, emailType: 'eic-recommendation', meta: { baseUrl, @@ -402,6 +405,7 @@ class Email { const eic = await userHelper.getEditorInChief() mailService.sendSimpleEmail({ + user: eic, toEmail: eic.email, emailType: 'manuscript-submitted', dashboardUrl: baseUrl, @@ -424,16 +428,18 @@ class Email { const userHelper = new User({ UserModel }) const eic = await userHelper.getEditorInChief() + const user = get(collection, 'handlingEditor', {}) mailService.sendNotificationEmail({ - toEmail: collection.handlingEditor.email, + user, emailType: 'new-version-submitted', + toEmail: user.email, meta: { baseUrl, collection, eicName: `${eic.firstName} ${eic.lastName}`, fragment: { id, authorName: `${firstName} ${lastName}`, title }, - handlingEditorName: collection.handlingEditor.name, + handlingEditorName: user.name || '', }, }) } diff --git a/packages/component-manuscript/src/components/SubmitRevision.js b/packages/component-manuscript/src/components/SubmitRevision.js index 057f2a36d5a86563f779bd11c03d6c062f1b5809..531146be4fc70c26a3bdd54cc2df160f55865d67 100644 --- a/packages/component-manuscript/src/components/SubmitRevision.js +++ b/packages/component-manuscript/src/components/SubmitRevision.js @@ -206,14 +206,14 @@ export default compose( withProps(({ version, formValues }) => ({ initialValues: { metadata: { - title: get(version, 'revision.metadata.title') || '', - abstract: get(version, 'revision.metadata.abstract') || '', + title: get(version, 'revision.metadata.title', ''), + abstract: get(version, 'revision.metadata.abstract', ''), }, authors: get(version, 'revision.authors'), - files: get(version, 'revision.files') || [], + files: get(version, 'revision.files', []), commentsToReviewers: get(version, 'revision.commentsToReviewers'), }, - responseFiles: get(formValues, 'files.responseToReviewers') || [], + responseFiles: get(formValues, 'files.responseToReviewers', []), })), reduxForm({ form: 'revision', diff --git a/packages/components-faraday/src/components/AuthorList/AuthorList.js b/packages/components-faraday/src/components/AuthorList/AuthorList.js index 81579608a6a4e223d15bb75b8554cb5153ab4605..2f070954fa61f20447342bda80ddb312f1bd7870 100644 --- a/packages/components-faraday/src/components/AuthorList/AuthorList.js +++ b/packages/components-faraday/src/components/AuthorList/AuthorList.js @@ -99,7 +99,7 @@ export default compose( ), withState('authors', 'setAuthors', []), withProps(({ version, authorPath = 'authors', authorForm }) => ({ - authors: get(version, authorPath) || [], + authors: get(version, authorPath, []), addMode: isBoolean(authorForm) && authorForm, editMode: isNumber(authorForm) ? authorForm : -1, })), diff --git a/packages/components-faraday/src/components/Dashboard/AssignHEModal.js b/packages/components-faraday/src/components/Dashboard/AssignHEModal.js index 31422da54264f232d1cf04b0f3f4ecb5034c5f80..39cc7453521fe209467d69801a8e161d3dc962ce 100644 --- a/packages/components-faraday/src/components/Dashboard/AssignHEModal.js +++ b/packages/components-faraday/src/components/Dashboard/AssignHEModal.js @@ -53,7 +53,7 @@ class AssignHEModal extends React.Component { }, e => { setModalError( - get(JSON.parse(e.response), 'error') || 'Oops! Something went wrong!', + get(JSON.parse(e.response), 'error', 'Oops! Something went wrong!'), ) }, ) diff --git a/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js b/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js index a77e2e32f7d1d83971d4b8268dc5323aefd27161..3061caffa81fe796109945b167d38172cfd34c61 100644 --- a/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js +++ b/packages/components-faraday/src/components/Dashboard/HandlingEditorSection.js @@ -5,7 +5,7 @@ import styled, { css } from 'styled-components' import { EditorInChiefActions, HandlingEditorActions } from './' const renderHE = (currentUser, isHE, project) => { - const status = get(project, 'status') || 'draft' + const status = get(project, 'status', 'draft') const isAdmin = get(currentUser, 'admin') const isEic = get(currentUser, 'editorInChief') @@ -32,7 +32,7 @@ const renderHE = (currentUser, isHE, project) => { ) } - return <AssignedHE>{get(handlingEditor, 'name') || 'N/A'}</AssignedHE> + return <AssignedHE>{get(handlingEditor, 'name', 'N/A')}</AssignedHE> } const HandlingEditorSection = ({ isHE, currentUser, project }) => ( diff --git a/packages/components-faraday/src/components/Files/Files.js b/packages/components-faraday/src/components/Files/Files.js index aa5035fe22c718dd16d80cb7f0e36b4d2e7e78eb..a5052962f7118f315a61be6204f3c850d7e3e1f5 100644 --- a/packages/components-faraday/src/components/Files/Files.js +++ b/packages/components-faraday/src/components/Files/Files.js @@ -43,7 +43,7 @@ const Files = ({ allowedFileExtensions={['pdf', 'doc', 'docx']} changeList={changeList} dropSortableFile={dropSortableFile} - files={get(files, 'manuscripts') || []} + files={get(files, 'manuscripts', [])} isFirst listId="manuscripts" maxFiles={Number.POSITIVE_INFINITY} @@ -55,7 +55,7 @@ const Files = ({ addFile={addFile('supplementary')} changeList={changeList} dropSortableFile={dropSortableFile} - files={get(files, 'supplementary') || []} + files={get(files, 'supplementary', [])} listId="supplementary" maxFiles={Number.POSITIVE_INFINITY} moveItem={moveItem('supplementary')} @@ -67,7 +67,7 @@ const Files = ({ allowedFileExtensions={['pdf', 'doc', 'docx']} changeList={changeList} dropSortableFile={dropSortableFile} - files={get(files, 'coverLetter') || []} + files={get(files, 'coverLetter', [])} isLast={!isRevisionFlow} listId="coverLetter" maxFiles={1} @@ -81,7 +81,7 @@ const Files = ({ allowedFileExtensions={['pdf', 'doc', 'docx']} changeList={changeList} dropSortableFile={dropSortableFile} - files={get(files, 'responseToReviewers') || []} + files={get(files, 'responseToReviewers', [])} isLast={isRevisionFlow} listId="responseToReviewer" maxFiles={1} @@ -122,11 +122,14 @@ export default compose( componentDidMount() { const { version, setFiles, filePath = 'files' } = this.props setFiles(prev => ({ - manuscripts: get(version, `${filePath}.manuscripts`) || [], - coverLetter: get(version, `${filePath}.coverLetter`) || [], - supplementary: get(version, `${filePath}.supplementary`) || [], - responseToReviewers: - get(version, `${filePath}.responseToReviewers`) || [], + manuscripts: get(version, `${filePath}.manuscripts`, []), + coverLetter: get(version, `${filePath}.coverLetter`, []), + supplementary: get(version, `${filePath}.supplementary`, []), + responseToReviewers: get( + version, + `${filePath}.responseToReviewers`, + [], + ), })) }, componentWillReceiveProps(nextProps) { diff --git a/packages/components-faraday/src/components/Filters/utils.js b/packages/components-faraday/src/components/Filters/utils.js index 8dabf8b2f1c77b530bf761937f6a1b8fb96329a8..a6e4275b1a612ccadcb76329281a2027396bc5a8 100644 --- a/packages/components-faraday/src/components/Filters/utils.js +++ b/packages/components-faraday/src/components/Filters/utils.js @@ -39,4 +39,4 @@ export const parsePermission = permission => ({ }) export const getCollectionImportance = (statuses, item) => - get(statuses, `${get(item, 'status') || 'draft'}.importance`) + get(statuses, `${get(item, 'status', 'draft')}.importance`) diff --git a/packages/components-faraday/src/components/Filters/withFilters.js b/packages/components-faraday/src/components/Filters/withFilters.js index d7a089f935293cb6345cfec1f1ccccca19e602fc..9304c8ead4325651aaafe4a001f94bdcf2d7c1ba 100644 --- a/packages/components-faraday/src/components/Filters/withFilters.js +++ b/packages/components-faraday/src/components/Filters/withFilters.js @@ -15,9 +15,9 @@ export default config => Component => { utils.hydrateFilters(filterValues), ), withHandlers({ - getFilterOptions: () => key => get(config, `${key}.options`) || [], + getFilterOptions: () => key => get(config, `${key}.options`, []), getDefaultFilterValue: ({ filterValues }) => key => - get(filterValues, key) || '', + get(filterValues, key, ''), changeFilterValue: ({ setFilterValues }) => filterKey => value => { // ugly but recompose doesn't pass the new state in the callback function let newState = {} diff --git a/packages/components-faraday/src/components/Reviewers/ReviewerForm.js b/packages/components-faraday/src/components/Reviewers/ReviewerForm.js index 0c24f66472c8abf9fb6e049472776bb3966699e9..c2c0e6b3b3ade9cfd52211a740a2eb13b6835262 100644 --- a/packages/components-faraday/src/components/Reviewers/ReviewerForm.js +++ b/packages/components-faraday/src/components/Reviewers/ReviewerForm.js @@ -51,7 +51,7 @@ const ReviewerForm = ({ export default compose( connect( state => ({ - users: get(state, 'users.users') || [], + users: get(state, 'users.users', []), }), { changeForm, initialize, inviteReviewer }, ), diff --git a/packages/components-faraday/src/components/SignUp/utils.js b/packages/components-faraday/src/components/SignUp/utils.js index c55e75faa4f33a292a68d855432b19b65d602598..cc4866b2cdc62c1e942682699e442cd8200c5ae1 100644 --- a/packages/components-faraday/src/components/SignUp/utils.js +++ b/packages/components-faraday/src/components/SignUp/utils.js @@ -68,7 +68,7 @@ export const signUpUser = history => (values, dispatch) => export const resetUserPassword = history => ({ email }, dispatch) => create(`/users/forgot-password`, { email }) .then(r => { - const message = get(r, 'message') || 'Password reset email has been sent.' + const message = get(r, 'message', 'Password reset email has been sent.') history.push('/info-page', { title: 'Reset Password', content: message, diff --git a/packages/components-faraday/src/components/utils.js b/packages/components-faraday/src/components/utils.js index b09e279905facba7e1d5b9bf7db2521395be22f0..067fdf73390ef91c67841e5d97e3c547192e5497 100644 --- a/packages/components-faraday/src/components/utils.js +++ b/packages/components-faraday/src/components/utils.js @@ -58,7 +58,7 @@ export const mapStatusToLabel = ({ visibleStatus, status }) => { } export const handleError = fn => e => { - fn(get(JSON.parse(e.response), 'error') || 'Oops! Something went wrong!') + fn(get(JSON.parse(e.response), 'error', 'Oops! Something went wrong!')) } export const handleFormError = error => { diff --git a/packages/components-faraday/src/redux/authors.js b/packages/components-faraday/src/redux/authors.js index 324cc26adabc74a3ecc2c4d38111903757c27ab3..d7012b20121648bacfdf32c4ddde5fb5c222d07e 100644 --- a/packages/components-faraday/src/redux/authors.js +++ b/packages/components-faraday/src/redux/authors.js @@ -48,7 +48,7 @@ export const deleteAuthor = (collectionId, fragmentId, userId) => dispatch => { // selectors export const getFragmentAuthors = (state, fragmentId) => - get(state, `authors.${fragmentId}`) || [] + get(state, `authors.${fragmentId}`, []) export const getAuthorFetching = state => state.authors.isFetching export const getAuthorError = state => state.authors.error @@ -67,7 +67,7 @@ export default (state = initialState, action) => { case FAILURE: return { ...initialState, - error: get(JSON.parse(get(action.error, 'response') || {}), 'error'), + error: get(JSON.parse(get(action.error, 'response', {})), 'error'), isFetching: false, } case 'UPDATE_FRAGMENT_SUCCESS': diff --git a/packages/components-faraday/src/redux/recommendations.js b/packages/components-faraday/src/redux/recommendations.js index 4a62913c04cc48357bd9f82d65437732a36cf230..49f8ecc81bd0fe5ea39cf24a4d526f96a48e59a8 100644 --- a/packages/components-faraday/src/redux/recommendations.js +++ b/packages/components-faraday/src/redux/recommendations.js @@ -3,7 +3,7 @@ import { create, update } from 'pubsweet-client/src/helpers/api' // #region Selectors export const selectRecommendations = (state, fragmentId) => - get(state, `fragments.${fragmentId}.recommendations`) || [] + get(state, `fragments.${fragmentId}.recommendations`, []) export const selectEditorialRecommendations = (state, fragmentId) => selectRecommendations(state, fragmentId).filter( r => r.recommendationType === 'editorRecommendation' && r.comments, diff --git a/packages/components-faraday/src/redux/reviewers.js b/packages/components-faraday/src/redux/reviewers.js index 73a7501d1ac367974c29bd220b0d7787228176d2..415c8076a7fed3c6ef68c8dc57b8e4125b22d6ce 100644 --- a/packages/components-faraday/src/redux/reviewers.js +++ b/packages/components-faraday/src/redux/reviewers.js @@ -72,18 +72,18 @@ export const clearReviewersError = () => ({ }) // #region Selectors -export const selectReviewers = state => get(state, 'reviewers.reviewers') || [] +export const selectReviewers = state => get(state, 'reviewers.reviewers', []) export const selectReviewersError = state => get(state, 'reviewers.error') export const selectFetchingReviewers = state => - get(state, 'reviewers.fetching.reviewers') || false + get(state, 'reviewers.fetching.reviewers', false) export const selectFetchingInvite = state => - get(state, 'reviewers.fetching.invite') || false + get(state, 'reviewers.fetching.invite', false) export const selectFetchingDecision = state => - get(state, 'reviewers.fetching.decision') || false + get(state, 'reviewers.fetching.decision', false) export const selectInvitation = (state, fragmentId) => { const currentUser = selectCurrentUser(state) - const invitations = get(state, `fragments.${fragmentId}.invitations`) || [] + const invitations = get(state, `fragments.${fragmentId}.invitations`, []) return invitations.find( i => i.userId === currentUser.id && i.role === 'reviewer' && !i.hasAnswer, ) @@ -91,7 +91,7 @@ export const selectInvitation = (state, fragmentId) => { export const currentUserIsReviewer = (state, fragmentId) => { const currentUser = selectCurrentUser(state) - const invitations = get(state, `fragments.${fragmentId}.invitations`) || [] + const invitations = get(state, `fragments.${fragmentId}.invitations`, []) return !!invitations.find( i => i.userId === currentUser.id && diff --git a/packages/xpub-faraday/app/config/journal/wizard-validators.js b/packages/xpub-faraday/app/config/journal/wizard-validators.js index 25d58d4372c51981864e9e7822e81b219ac9123e..5cd9967296f36260d983077530a7efc4509624a4 100644 --- a/packages/xpub-faraday/app/config/journal/wizard-validators.js +++ b/packages/xpub-faraday/app/config/journal/wizard-validators.js @@ -16,7 +16,7 @@ export const parseEmptyHtml = value => { export const requiredBasedOnType = (value, formValues) => { if ( requiredTypes.includes(get(formValues, 'metadata.type')) && - (isEmpty(get(formValues, 'metadata.abstract')) || parseEmptyHtml(value)) + isEmpty(get(formValues, 'metadata.abstract', parseEmptyHtml(value))) ) { return 'Required' } diff --git a/packages/xpub-faraday/config/authsome-helpers.js b/packages/xpub-faraday/config/authsome-helpers.js index 49d976c4c1491b23f5ab7d1f062ba8ee96373457..703f5d223912fa2e05e6423ea735a5cbd1c2298f 100644 --- a/packages/xpub-faraday/config/authsome-helpers.js +++ b/packages/xpub-faraday/config/authsome-helpers.js @@ -15,7 +15,7 @@ const parseAuthorsData = (coll, matchingCollPerm) => { } const setPublicStatuses = (coll, matchingCollPerm) => { - const status = get(coll, 'status') || 'draft' + const status = get(coll, 'status', 'draft') // coll.visibleStatus = statuses[status].public if (publicStatusesPermissions.includes(matchingCollPerm.permission)) { coll.visibleStatus = statuses[status].public diff --git a/packages/xpub-faraday/config/authsome-mode.js b/packages/xpub-faraday/config/authsome-mode.js index a585fc37f507aefb0cc15b3d0913f106c90d7573..1c6078a2d327192db853f72f67890c1fccc441ed 100644 --- a/packages/xpub-faraday/config/authsome-mode.js +++ b/packages/xpub-faraday/config/authsome-mode.js @@ -91,7 +91,7 @@ async function applyAuthenticatedUserPolicy(user, operation, object, context) { if (get(object, 'type') === 'collection') { return { filter: async collection => { - const status = get(collection, 'status') || 'draft' + const status = get(collection, 'status', 'draft') const userPermissions = await helpers.getUserPermissions({ user, Team: context.models.Team,