Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-05-02 06:08:36 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-05-02 06:08:36 +0300
commit7f119dc26391dc953126b4fc902ade7b44a10ce2 (patch)
tree40f5ac2c1f8d9ed8e4cd2518536dd24314496919 /app/assets/javascripts/releases
parent47daa6f9b32e12583da237d672b92a39b741a26b (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/releases')
-rw-r--r--app/assets/javascripts/releases/components/app_edit_new.vue38
-rw-r--r--app/assets/javascripts/releases/components/tag_field_new.vue3
-rw-r--r--app/assets/javascripts/releases/stores/modules/edit_new/actions.js22
-rw-r--r--app/assets/javascripts/releases/stores/modules/edit_new/getters.js12
-rw-r--r--app/assets/javascripts/releases/stores/modules/edit_new/mutation_types.js6
-rw-r--r--app/assets/javascripts/releases/stores/modules/edit_new/mutations.js17
-rw-r--r--app/assets/javascripts/releases/stores/modules/edit_new/state.js5
7 files changed, 97 insertions, 6 deletions
diff --git a/app/assets/javascripts/releases/components/app_edit_new.vue b/app/assets/javascripts/releases/components/app_edit_new.vue
index 8365e6a5ab0..327da1fb2a1 100644
--- a/app/assets/javascripts/releases/components/app_edit_new.vue
+++ b/app/assets/javascripts/releases/components/app_edit_new.vue
@@ -1,5 +1,5 @@
<script>
-import { GlButton, GlFormInput, GlFormGroup, GlSprintf } from '@gitlab/ui';
+import { GlButton, GlFormCheckbox, GlFormInput, GlFormGroup, GlLink, GlSprintf } from '@gitlab/ui';
import { mapState, mapActions, mapGetters } from 'vuex';
import { isSameOriginUrl, getParameterByName } from '~/lib/utils/url_utility';
import { __ } from '~/locale';
@@ -12,9 +12,11 @@ import TagField from './tag_field.vue';
export default {
name: 'ReleaseEditNewApp',
components: {
+ GlFormCheckbox,
GlFormInput,
GlFormGroup,
GlButton,
+ GlLink,
GlSprintf,
MarkdownField,
AssetLinksForm,
@@ -28,6 +30,7 @@ export default {
'fetchError',
'markdownDocsPath',
'markdownPreviewPath',
+ 'editReleaseDocsPath',
'releasesPagePath',
'release',
'newMilestonePath',
@@ -35,8 +38,9 @@ export default {
'projectId',
'groupId',
'groupMilestonesAvailable',
+ 'tagNotes',
]),
- ...mapGetters('editNew', ['isValid', 'isExistingRelease']),
+ ...mapGetters('editNew', ['isValid', 'isExistingRelease', 'formattedReleaseNotes']),
showForm() {
return Boolean(!this.isFetchingRelease && !this.fetchError && this.release);
},
@@ -64,6 +68,14 @@ export default {
this.updateReleaseMilestones(milestones);
},
},
+ includeTagNotes: {
+ get() {
+ return this.$store.state.editNew.includeTagNotes;
+ },
+ set(includeTagNotes) {
+ this.updateIncludeTagNotes(includeTagNotes);
+ },
+ },
cancelPath() {
const backUrl = getParameterByName(BACK_URL_PARAM);
@@ -105,6 +117,7 @@ export default {
'updateReleaseTitle',
'updateReleaseNotes',
'updateReleaseMilestones',
+ 'updateIncludeTagNotes',
]),
submitForm() {
if (!this.isFormSubmissionDisabled) {
@@ -161,7 +174,7 @@ export default {
:markdown-preview-path="markdownPreviewPath"
:markdown-docs-path="markdownDocsPath"
:add-spacing-classes="false"
- :textarea-value="releaseNotes"
+ :textarea-value="formattedReleaseNotes"
class="gl-mt-3 gl-mb-3"
>
<template #textarea>
@@ -178,6 +191,25 @@ export default {
</markdown-field>
</div>
</gl-form-group>
+ <gl-form-group v-if="!isExistingRelease">
+ <gl-form-checkbox v-model="includeTagNotes">
+ {{ s__('Release|Include message from the annotated tag.') }}
+
+ <template #help>
+ <gl-sprintf
+ :message="
+ s__(
+ 'Release|You can edit the content later by editing the release. %{linkStart}How do I edit a release?%{linkEnd}',
+ )
+ "
+ >
+ <template #link="{ content }">
+ <gl-link :href="editReleaseDocsPath">{{ content }}</gl-link>
+ </template>
+ </gl-sprintf>
+ </template>
+ </gl-form-checkbox>
+ </gl-form-group>
<asset-links-form />
diff --git a/app/assets/javascripts/releases/components/tag_field_new.vue b/app/assets/javascripts/releases/components/tag_field_new.vue
index 9e05d00a98d..dcdf89ae0d9 100644
--- a/app/assets/javascripts/releases/components/tag_field_new.vue
+++ b/app/assets/javascripts/releases/components/tag_field_new.vue
@@ -62,7 +62,7 @@ export default {
},
},
methods: {
- ...mapActions('editNew', ['updateReleaseTagName', 'updateCreateFrom']),
+ ...mapActions('editNew', ['updateReleaseTagName', 'updateCreateFrom', 'fetchTagNotes']),
markInputAsDirty() {
this.isInputDirty = true;
},
@@ -125,6 +125,7 @@ export default {
:translations="$options.translations.tagName"
:enabled-ref-types="$options.tagNameEnabledRefTypes"
:state="!showTagNameValidationError"
+ @input="fetchTagNotes"
@hide.once="markInputAsDirty"
>
<template #footer="{ isLoading, matches, query }">
diff --git a/app/assets/javascripts/releases/stores/modules/edit_new/actions.js b/app/assets/javascripts/releases/stores/modules/edit_new/actions.js
index b3ba4f9263a..0a9bca97012 100644
--- a/app/assets/javascripts/releases/stores/modules/edit_new/actions.js
+++ b/app/assets/javascripts/releases/stores/modules/edit_new/actions.js
@@ -1,3 +1,4 @@
+import { getTag } from '~/rest_api';
import createFlash from '~/flash';
import { redirectTo } from '~/lib/utils/url_utility';
import { s__ } from '~/locale';
@@ -7,6 +8,7 @@ import deleteReleaseAssetLinkMutation from '~/releases/graphql/mutations/delete_
import updateReleaseMutation from '~/releases/graphql/mutations/update_release.mutation.graphql';
import oneReleaseForEditingQuery from '~/releases/graphql/queries/one_release_for_editing.query.graphql';
import { gqClient, convertOneReleaseGraphQLResponse } from '~/releases/util';
+
import * as types from './mutation_types';
export const initializeRelease = ({ commit, dispatch, getters }) => {
@@ -224,3 +226,23 @@ export const updateRelease = async ({ commit, dispatch, state, getters }) => {
});
}
};
+
+export const fetchTagNotes = ({ commit, state }, tagName) => {
+ commit(types.REQUEST_TAG_NOTES);
+
+ return getTag(state.projectId, tagName)
+ .then(({ data }) => {
+ commit(types.RECEIVE_TAG_NOTES_SUCCESS, data);
+ })
+ .catch((error) => {
+ createFlash({
+ message: s__('Release|Something went wrong while getting the tag notes.'),
+ });
+
+ commit(types.RECEIVE_TAG_NOTES_ERROR, error);
+ });
+};
+
+export const updateIncludeTagNotes = ({ commit }, includeTagNotes) => {
+ commit(types.UPDATE_INCLUDE_TAG_NOTES, includeTagNotes);
+};
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..036bf4f3eaf 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';
@@ -117,7 +118,7 @@ export const isValid = (_state, getters) => {
};
/** 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 +130,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 +154,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;
diff --git a/app/assets/javascripts/releases/stores/modules/edit_new/mutation_types.js b/app/assets/javascripts/releases/stores/modules/edit_new/mutation_types.js
index 1b2f5f33f02..daa077309a1 100644
--- a/app/assets/javascripts/releases/stores/modules/edit_new/mutation_types.js
+++ b/app/assets/javascripts/releases/stores/modules/edit_new/mutation_types.js
@@ -20,3 +20,9 @@ export const UPDATE_ASSET_LINK_URL = 'UPDATE_ASSET_LINK_URL';
export const UPDATE_ASSET_LINK_NAME = 'UPDATE_ASSET_LINK_NAME';
export const UPDATE_ASSET_LINK_TYPE = 'UPDATE_ASSET_LINK_TYPE';
export const REMOVE_ASSET_LINK = 'REMOVE_ASSET_LINK';
+
+export const REQUEST_TAG_NOTES = 'REQUEST_TAG_NOTES';
+export const RECEIVE_TAG_NOTES_SUCCESS = 'RECEIVE_TAG_NOTES_SUCCESS';
+export const RECEIVE_TAG_NOTES_ERROR = 'RECEIVE_TAG_NOTES_ERROR';
+
+export const UPDATE_INCLUDE_TAG_NOTES = 'UPDATE_INCLUDE_TAG_NOTES';
diff --git a/app/assets/javascripts/releases/stores/modules/edit_new/mutations.js b/app/assets/javascripts/releases/stores/modules/edit_new/mutations.js
index cf282f9ab2c..38153e4c67b 100644
--- a/app/assets/javascripts/releases/stores/modules/edit_new/mutations.js
+++ b/app/assets/javascripts/releases/stores/modules/edit_new/mutations.js
@@ -95,4 +95,21 @@ export default {
[types.REMOVE_ASSET_LINK](state, linkIdToRemove) {
state.release.assets.links = state.release.assets.links.filter((l) => l.id !== linkIdToRemove);
},
+
+ [types.REQUEST_TAG_NOTES](state) {
+ state.isFetchingTagNotes = true;
+ },
+ [types.RECEIVE_TAG_NOTES_SUCCESS](state, data) {
+ state.fetchError = undefined;
+ state.isFetchingTagNotes = false;
+ state.tagNotes = data.message;
+ },
+ [types.RECEIVE_TAG_NOTES_ERROR](state, error) {
+ state.fetchError = error;
+ state.isFetchingTagNotes = false;
+ state.tagNotes = '';
+ },
+ [types.UPDATE_INCLUDE_TAG_NOTES](state, includeTagNotes) {
+ state.includeTagNotes = includeTagNotes;
+ },
};
diff --git a/app/assets/javascripts/releases/stores/modules/edit_new/state.js b/app/assets/javascripts/releases/stores/modules/edit_new/state.js
index 315d07ac664..9f8146997c1 100644
--- a/app/assets/javascripts/releases/stores/modules/edit_new/state.js
+++ b/app/assets/javascripts/releases/stores/modules/edit_new/state.js
@@ -9,6 +9,7 @@ export default ({
manageMilestonesPath,
newMilestonePath,
releasesPagePath,
+ editReleaseDocsPath,
tagName = null,
defaultBranch = null,
@@ -23,6 +24,7 @@ export default ({
manageMilestonesPath,
newMilestonePath,
releasesPagePath,
+ editReleaseDocsPath,
/**
* The name of the tag associated with the release, provided by the backend.
@@ -48,4 +50,7 @@ export default ({
isUpdatingRelease: false,
updateError: null,
+
+ tagNotes: '',
+ includeTagNotes: false,
});