summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/releases/stores/modules/edit_new/getters.js
diff options
context:
space:
mode:
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.js22
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;