diff options
Diffstat (limited to 'app/assets/javascripts/releases/stores/modules/edit_new/getters.js')
-rw-r--r-- | app/assets/javascripts/releases/stores/modules/edit_new/getters.js | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/app/assets/javascripts/releases/stores/modules/edit_new/getters.js b/app/assets/javascripts/releases/stores/modules/edit_new/getters.js index d4f49e53619..0ca5eb9931a 100644 --- a/app/assets/javascripts/releases/stores/modules/edit_new/getters.js +++ b/app/assets/javascripts/releases/stores/modules/edit_new/getters.js @@ -1,4 +1,5 @@ import { isEmpty } from 'lodash'; +import { s__ } from '~/locale'; import { hasContent } from '~/lib/utils/text_utility'; import { getDuplicateItemsFromArray } from '~/lib/utils/array_utility'; @@ -52,6 +53,10 @@ export const validationErrors = (state) => { errors.isTagNameEmpty = true; } + if (state.existingRelease) { + errors.existingRelease = true; + } + // Each key of this object is a URL, and the value is an // array of Release link objects that share this URL. // This is used for detecting duplicate URLs. @@ -113,11 +118,15 @@ export const validationErrors = (state) => { /** Returns whether or not the release object is valid */ export const isValid = (_state, getters) => { const errors = getters.validationErrors; - return Object.values(errors.assets.links).every(isEmpty) && !errors.isTagNameEmpty; + return ( + Object.values(errors.assets.links).every(isEmpty) && + !errors.isTagNameEmpty && + !errors.existingRelease + ); }; /** Returns all the variables for a `releaseUpdate` GraphQL mutation */ -export const releaseUpdateMutatationVariables = (state) => { +export const releaseUpdateMutatationVariables = (state, getters) => { const name = state.release.name?.trim().length > 0 ? state.release.name.trim() : null; // Milestones may be either a list of milestone objects OR just a list @@ -129,7 +138,9 @@ export const releaseUpdateMutatationVariables = (state) => { projectPath: state.projectPath, tagName: state.release.tagName, name, - description: state.release.description, + description: state.includeTagNotes + ? getters.formattedReleaseNotes + : state.release.description, milestones, }, }; @@ -151,3 +162,8 @@ export const releaseCreateMutatationVariables = (state, getters) => { }, }; }; + +export const formattedReleaseNotes = ({ includeTagNotes, release: { description }, tagNotes }) => + includeTagNotes && tagNotes + ? `${description}\n\n### ${s__('Releases|Tag message')}\n\n${tagNotes}\n` + : description; |