diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-20 11:43:02 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-10-20 11:43:02 +0300 |
commit | d9ab72d6080f594d0b3cae15f14b3ef2c6c638cb (patch) | |
tree | 2341ef426af70ad1e289c38036737e04b0aa5007 /app/assets/javascripts/vue_merge_request_widget/components/states | |
parent | d6e514dd13db8947884cd58fe2a9c2a063400a9b (diff) |
Add latest changes from gitlab-org/gitlab@14-4-stable-eev14.4.0-rc42
Diffstat (limited to 'app/assets/javascripts/vue_merge_request_widget/components/states')
3 files changed, 52 insertions, 34 deletions
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/commits_header.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/commits_header.vue index a55dba92e16..3ca193514f1 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/commits_header.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/commits_header.vue @@ -1,12 +1,15 @@ <script> -/* eslint-disable @gitlab/require-string-literal-i18n-helpers */ -import { GlButton } from '@gitlab/ui'; +import { GlButton, GlSprintf } from '@gitlab/ui'; import { escape } from 'lodash'; -import { __, n__, sprintf, s__ } from '~/locale'; +import { __, n__, s__ } from '~/locale'; + +const mergeCommitCount = s__('mrWidgetCommitsAdded|1 merge commit'); export default { + mergeCommitCount, components: { GlButton, + GlSprintf, }, props: { isSquashEnabled: { @@ -37,7 +40,7 @@ export default { return this.expanded ? 'chevron-down' : 'chevron-right'; }, commitsCountMessage() { - return n__(__('%d commit'), __('%d commits'), this.isSquashEnabled ? 1 : this.commitsCount); + return n__('%d commit', '%d commits', this.isSquashEnabled ? 1 : this.commitsCount); }, modifyLinkMessage() { if (this.isFastForwardEnabled) return __('Modify commit message'); @@ -47,22 +50,15 @@ export default { ariaLabel() { return this.expanded ? __('Collapse') : __('Expand'); }, + targetBranchEscaped() { + return escape(this.targetBranch); + }, message() { - const message = this.isFastForwardEnabled + return this.isFastForwardEnabled ? s__('mrWidgetCommitsAdded|%{commitCount} will be added to %{targetBranch}.') : s__( 'mrWidgetCommitsAdded|%{commitCount} and %{mergeCommitCount} will be added to %{targetBranch}.', ); - - return sprintf( - message, - { - commitCount: `<strong class="commits-count-message">${this.commitsCountMessage}</strong>`, - mergeCommitCount: `<strong>${s__('mrWidgetCommitsAdded|1 merge commit')}</strong>`, - targetBranch: `<span class="label-branch">${escape(this.targetBranch)}</span>`, - }, - false, - ); }, }, methods: { @@ -89,10 +85,19 @@ export default { /> <span v-if="expanded">{{ __('Collapse') }}</span> <span v-else> - <span - class="vertical-align-middle" - v-html="message /* eslint-disable-line vue/no-v-html */" - ></span> + <span class="vertical-align-middle"> + <gl-sprintf :message="message"> + <template #commitCount> + <strong class="commits-count-message">{{ commitsCountMessage }}</strong> + </template> + <template #mergeCommitCount> + <strong>{{ $options.mergeCommitCount }}</strong> + </template> + <template #targetBranch> + <span class="label-branch">{{ targetBranchEscaped }}</span> + </template> + </gl-sprintf> + </span> <gl-button variant="link" class="modify-message-button"> {{ modifyLinkMessage }} </gl-button> diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index 7df65e995a5..7d4bd4cf1bf 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -29,6 +29,7 @@ import { WARNING, MT_MERGE_STRATEGY, PIPELINE_FAILED_STATE, + STATE_MACHINE, } from '../../constants'; import eventHub from '../../event_hub'; import mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables'; @@ -47,6 +48,9 @@ const MERGE_FAILED_STATUS = 'failed'; const MERGE_SUCCESS_STATUS = 'success'; const MERGE_HOOK_VALIDATION_ERROR_STATUS = 'hook_validation_error'; +const { transitions } = STATE_MACHINE; +const { MERGE, MERGED, MERGE_FAILURE, AUTO_MERGE } = transitions; + export default { name: 'ReadyToMerge', apollo: { @@ -99,8 +103,8 @@ export default { GlDropdownItem, GlFormCheckbox, GlSkeletonLoader, - MergeTrainHelperText: () => - import('ee_component/vue_merge_request_widget/components/merge_train_helper_text.vue'), + MergeTrainHelperIcon: () => + import('ee_component/vue_merge_request_widget/components/merge_train_helper_icon.vue'), MergeImmediatelyConfirmationDialog: () => import( 'ee_component/vue_merge_request_widget/components/merge_immediately_confirmation_dialog.vue' @@ -234,7 +238,7 @@ export default { return CONFIRM; }, iconClass() { - if (this.shouldRenderMergeTrainHelperText && !this.mr.preventMerge) { + if (this.shouldRenderMergeTrainHelperIcon && !this.mr.preventMerge) { return PIPELINE_RUNNING_STATE; } @@ -361,6 +365,11 @@ export default { } this.isMakingRequest = true; + + if (!useAutoMerge) { + this.mr.transitionStateMachine({ transition: MERGE }); + } + this.service .merge(options) .then((res) => res.data) @@ -371,10 +380,12 @@ export default { if (AUTO_MERGE_STRATEGIES.includes(data.status)) { eventHub.$emit('MRWidgetUpdateRequested'); + this.mr.transitionStateMachine({ transition: AUTO_MERGE }); } else if (data.status === MERGE_SUCCESS_STATUS) { this.initiateMergePolling(); } else if (hasError) { eventHub.$emit('FailedToMerge', data.merge_error); + this.mr.transitionStateMachine({ transition: MERGE_FAILURE }); } if (this.glFeatures.mergeRequestWidgetGraphql) { @@ -383,6 +394,7 @@ export default { }) .catch(() => { this.isMakingRequest = false; + this.mr.transitionStateMachine({ transition: MERGE_FAILURE }); createFlash({ message: __('Something went wrong. Please try again.'), }); @@ -417,6 +429,7 @@ export default { eventHub.$emit('FetchActionsContent'); MergeRequest.hideCloseButton(); MergeRequest.decreaseCounter(); + this.mr.transitionStateMachine({ transition: MERGED }); stopPolling(); refreshUserMergeRequestCounts(); @@ -428,6 +441,7 @@ export default { } } else if (data.merge_error) { eventHub.$emit('FailedToMerge', data.merge_error); + this.mr.transitionStateMachine({ transition: MERGE_FAILURE }); stopPolling(); } else { // MR is not merged yet, continue polling until the state becomes 'merged' @@ -438,6 +452,7 @@ export default { createFlash({ message: __('Something went wrong while merging this merge request. Please try again.'), }); + this.mr.transitionStateMachine({ transition: MERGE_FAILURE }); stopPolling(); }); }, @@ -489,7 +504,7 @@ export default { </div> </div> <template v-else> - <div class="mr-widget-body media" :class="{ 'gl-pb-3': shouldRenderMergeTrainHelperText }"> + <div class="mr-widget-body media"> <status-icon :status="iconClass" /> <div class="media-body"> <div class="mr-widget-body-controls gl-display-flex gl-align-items-center"> @@ -560,6 +575,13 @@ export default { :is-disabled="isSquashReadOnly" class="gl-mx-3" /> + + <merge-train-helper-icon + v-if="shouldRenderMergeTrainHelperIcon" + :merge-train-when-pipeline-succeeds-docs-path=" + mr.mergeTrainWhenPipelineSucceedsDocsPath + " + /> </div> <template v-else> <div class="bold js-resolve-mr-widget-items-message gl-ml-3"> @@ -590,13 +612,6 @@ export default { </div> </div> </div> - <merge-train-helper-text - v-if="shouldRenderMergeTrainHelperText" - :pipeline-id="pipelineId" - :pipeline-link="pipeline.path" - :merge-train-length="stateData.mergeTrainsCount" - :merge-train-when-pipeline-succeeds-docs-path="mr.mergeTrainWhenPipelineSucceedsDocsPath" - /> <template v-if="shouldShowMergeControls"> <div v-if="!shouldShowMergeEdit" diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue index 393c599c7e8..790870ee4c6 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue @@ -3,6 +3,7 @@ import { GlButton } from '@gitlab/ui'; import { produce } from 'immer'; import $ from 'jquery'; import createFlash from '~/flash'; +import toast from '~/vue_shared/plugins/global_toast'; import { __ } from '~/locale'; import MergeRequest from '~/merge_request'; import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; @@ -123,10 +124,7 @@ export default { }, }, }) => { - createFlash({ - message: __('Marked as ready. Merging is now allowed.'), - type: 'notice', - }); + toast(__('Marked as ready. Merging is now allowed.')); $('.merge-request .detail-page-description .title').text(title); }, ) |