summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/vue_merge_request_widget/components/states
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/vue_merge_request_widget/components/states')
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/merge_checks_failed.vue3
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue53
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_failed.vue8
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue54
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_missing_branch.vue15
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue26
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/new_ready_to_merge.vue2
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue155
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue22
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/work_in_progress.vue44
10 files changed, 111 insertions, 271 deletions
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/merge_checks_failed.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/merge_checks_failed.vue
index 2b22033514f..38b99dae264 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/merge_checks_failed.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/merge_checks_failed.vue
@@ -9,6 +9,7 @@ export default {
blockingMergeRequests: s__(
'mrWidget|Merge blocked: you can only merge after the above items are resolved.',
),
+ externalStatusChecksFailed: s__('mrWidget|Merge blocked: all status checks must pass.'),
},
components: {
StatusIcon,
@@ -25,6 +26,8 @@ export default {
return this.$options.i18n.approvalNeeded;
} else if (this.mr.detailedMergeStatus === DETAILED_MERGE_STATUS.BLOCKED_STATUS) {
return this.$options.i18n.blockingMergeRequests;
+ } else if (this.mr.detailedMergeStatus === DETAILED_MERGE_STATUS.EXTERNAL_STATUS_CHECKS) {
+ return this.$options.i18n.externalStatusChecksFailed;
}
return null;
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue
index 92a7fa39cdc..38f7d3d2c96 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_enabled.vue
@@ -3,8 +3,8 @@ import { GlSkeletonLoader, GlSprintf } from '@gitlab/ui';
import autoMergeMixin from 'ee_else_ce/vue_merge_request_widget/mixins/auto_merge';
import autoMergeEnabledQuery from 'ee_else_ce/vue_merge_request_widget/queries/states/auto_merge_enabled.query.graphql';
import { createAlert } from '~/flash';
+import { getIdFromGraphQLId } from '~/graphql_shared/utils';
import { __ } from '~/locale';
-import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import { AUTO_MERGE_STRATEGIES } from '../../constants';
import eventHub from '../../event_hub';
import mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';
@@ -16,9 +16,6 @@ export default {
apollo: {
state: {
query: autoMergeEnabledQuery,
- skip() {
- return !this.glFeatures.mergeRequestWidgetGraphql;
- },
variables() {
return this.mergeRequestQueryVariables;
},
@@ -31,7 +28,7 @@ export default {
GlSprintf,
StateContainer,
},
- mixins: [autoMergeMixin, glFeatureFlagMixin(), mergeRequestQueryVariablesMixin],
+ mixins: [autoMergeMixin, mergeRequestQueryVariablesMixin],
props: {
mr: {
type: Object,
@@ -51,31 +48,21 @@ export default {
},
computed: {
loading() {
- return (
- this.glFeatures.mergeRequestWidgetGraphql &&
- this.$apollo.queries.state.loading &&
- Object.keys(this.state).length === 0
- );
- },
- mergeUser() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.state.mergeUser;
- }
-
- return this.mr.setToAutoMergeBy;
+ return this.$apollo.queries.state.loading && Object.keys(this.state).length === 0;
},
- targetBranch() {
- return (this.glFeatures.mergeRequestWidgetGraphql ? this.state : this.mr).targetBranch;
- },
- shouldRemoveSourceBranch() {
- if (!this.glFeatures.mergeRequestWidgetGraphql) return this.mr.shouldRemoveSourceBranch;
-
+ stateRemoveSourceBranch() {
if (!this.state.shouldRemoveSourceBranch) return false;
return this.state.shouldRemoveSourceBranch || this.state.forceRemoveSourceBranch;
},
- autoMergeStrategy() {
- return (this.glFeatures.mergeRequestWidgetGraphql ? this.state : this.mr).autoMergeStrategy;
+ canRemoveSourceBranch() {
+ const { currentUserId } = this.mr;
+ const mergeUserId = getIdFromGraphQLId(this.state.mergeUser?.id);
+ const canRemoveSourceBranch = this.state.userPermissions.removeSourceBranch;
+
+ return (
+ !this.stateRemoveSourceBranch && canRemoveSourceBranch && mergeUserId === currentUserId
+ );
},
actions() {
const actions = [];
@@ -104,12 +91,8 @@ export default {
this.service
.cancelAutomaticMerge()
.then((res) => res.data)
- .then((data) => {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- eventHub.$emit('MRWidgetUpdateRequested');
- } else {
- eventHub.$emit('UpdateWidgetData', data);
- }
+ .then(() => {
+ eventHub.$emit('MRWidgetUpdateRequested');
})
.catch(() => {
this.isCancellingAutoMerge = false;
@@ -121,7 +104,7 @@ export default {
removeSourceBranch() {
const options = {
sha: this.mr.sha,
- auto_merge_strategy: this.autoMergeStrategy,
+ auto_merge_strategy: this.state.autoMergeStrategy,
should_remove_source_branch: true,
};
@@ -135,9 +118,7 @@ export default {
}
})
.then(() => {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- this.$apollo.queries.state.refetch();
- }
+ this.$apollo.queries.state.refetch();
})
.catch(() => {
this.isRemovingSourceBranch = false;
@@ -162,7 +143,7 @@ export default {
<h4 class="gl-mr-3" data-testid="statusText">
<gl-sprintf :message="statusText" data-testid="statusText">
<template #merge_author>
- <mr-widget-author :author="mergeUser" />
+ <mr-widget-author v-if="state.mergeUser" :author="state.mergeUser" />
</template>
</gl-sprintf>
</h4>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_failed.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_failed.vue
index 39c56cbb93d..448805cf8b9 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_failed.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_auto_merge_failed.vue
@@ -1,6 +1,5 @@
<script>
import { s__ } from '~/locale';
-import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import eventHub from '../../event_hub';
import mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';
import autoMergeFailedQuery from '../../queries/states/auto_merge_failed.query.graphql';
@@ -11,13 +10,10 @@ export default {
components: {
StateContainer,
},
- mixins: [glFeatureFlagMixin(), mergeRequestQueryVariablesMixin],
+ mixins: [mergeRequestQueryVariablesMixin],
apollo: {
mergeError: {
query: autoMergeFailedQuery,
- skip() {
- return !this.glFeatures.mergeRequestWidgetGraphql;
- },
variables() {
return this.mergeRequestQueryVariables;
},
@@ -32,7 +28,7 @@ export default {
},
data() {
return {
- mergeError: this.glFeatures.mergeRequestWidgetGraphql ? null : this.mr.mergeError,
+ mergeError: null,
isRefreshing: false,
};
},
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue
index d60d3cfc9ea..8e1b18c63a4 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_conflicts.vue
@@ -1,6 +1,5 @@
<script>
import { GlButton, GlSkeletonLoader } from '@gitlab/ui';
-import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';
import userPermissionsQuery from '../../queries/permissions.query.graphql';
import conflictsStateQuery from '../../queries/states/conflicts.query.graphql';
@@ -13,23 +12,17 @@ export default {
GlButton,
StateContainer,
},
- mixins: [glFeatureFlagMixin(), mergeRequestQueryVariablesMixin],
+ mixins: [mergeRequestQueryVariablesMixin],
apollo: {
userPermissions: {
query: userPermissionsQuery,
- skip() {
- return !this.glFeatures.mergeRequestWidgetGraphql;
- },
variables() {
return this.mergeRequestQueryVariables;
},
update: (data) => data.project.mergeRequest.userPermissions,
},
- stateData: {
+ state: {
query: conflictsStateQuery,
- skip() {
- return !this.glFeatures.mergeRequestWidgetGraphql;
- },
variables() {
return this.mergeRequestQueryVariables;
},
@@ -47,40 +40,19 @@ export default {
data() {
return {
userPermissions: {},
- stateData: {},
+ state: {},
};
},
computed: {
isLoading() {
- return (
- this.glFeatures.mergeRequestWidgetGraphql &&
- this.$apollo.queries.userPermissions.loading &&
- this.$apollo.queries.stateData.loading
- );
- },
- canPushToSourceBranch() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.userPermissions.pushToSourceBranch;
- }
-
- return this.mr.canPushToSourceBranch;
- },
- canMerge() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.userPermissions.canMerge;
- }
-
- return this.mr.canMerge;
- },
- shouldBeRebased() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.stateData.shouldBeRebased;
- }
-
- return this.mr.shouldBeRebased;
+ return this.$apollo.queries.userPermissions.loading && this.$apollo.queries.state.loading;
},
showResolveButton() {
- return this.mr.conflictResolutionPath && this.canPushToSourceBranch;
+ return (
+ this.mr.conflictResolutionPath &&
+ this.userPermissions.pushToSourceBranch &&
+ !this.state.sourceBranchProtected
+ );
},
},
};
@@ -95,7 +67,7 @@ export default {
</gl-skeleton-loader>
</template>
<template v-if="!isLoading">
- <span v-if="shouldBeRebased" class="bold gl-ml-0! gl-text-body!">
+ <span v-if="state.shouldBeRebased" class="bold gl-ml-0! gl-text-body!">
{{
s__(`mrWidget|Merge blocked: fast-forward merge is not possible.
To merge this request, first rebase locally.`)
@@ -104,7 +76,7 @@ export default {
<template v-else>
<span class="bold gl-ml-0! gl-text-body! gl-flex-grow-1 gl-w-full gl-md-w-auto gl-mr-2">
{{ s__('mrWidget|Merge blocked: merge conflicts must be resolved.') }}
- <span v-if="!canMerge">
+ <span v-if="!userPermissions.canMerge">
{{
s__(
`mrWidget|Users who can write to the source or target branches can resolve the conflicts.`,
@@ -114,9 +86,9 @@ export default {
</span>
</template>
</template>
- <template v-if="!isLoading && !shouldBeRebased" #actions>
+ <template v-if="!isLoading && !state.shouldBeRebased" #actions>
<gl-button
- v-if="canMerge"
+ v-if="userPermissions.canMerge"
size="small"
variant="confirm"
category="secondary"
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_missing_branch.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_missing_branch.vue
index 214d1b49732..5e073bf7c04 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_missing_branch.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_missing_branch.vue
@@ -1,7 +1,6 @@
<script>
import { GlIcon, GlTooltipDirective, GlSprintf } from '@gitlab/ui';
import { sprintf } from '~/locale';
-import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';
import missingBranchQuery from '../../queries/states/missing_branch.query.graphql';
import {
@@ -21,13 +20,10 @@ export default {
GlSprintf,
StatusIcon,
},
- mixins: [glFeatureFlagMixin(), mergeRequestQueryVariablesMixin],
+ mixins: [mergeRequestQueryVariablesMixin],
apollo: {
state: {
query: missingBranchQuery,
- skip() {
- return !this.glFeatures.mergeRequestWidgetGraphql;
- },
variables() {
return this.mergeRequestQueryVariables;
},
@@ -44,15 +40,8 @@ export default {
return { state: {} };
},
computed: {
- sourceBranchRemoved() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return !this.state.sourceBranchExists;
- }
-
- return this.mr.sourceBranchRemoved;
- },
type() {
- return this.sourceBranchRemoved ? 'source' : 'target';
+ return this.mr.sourceBranchRemoved ? 'source' : 'target';
},
name() {
return this.type === 'source' ? this.mr.sourceBranch : this.mr.targetBranch;
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue
index f6843c1f3d3..4ae4edf02c3 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_rebase.vue
@@ -2,7 +2,6 @@
import { GlButton, GlSkeletonLoader } from '@gitlab/ui';
import { createAlert } from '~/flash';
import { __ } from '~/locale';
-import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import toast from '~/vue_shared/plugins/global_toast';
import simplePoll from '~/lib/utils/simple_poll';
import eventHub from '../../event_hub';
@@ -15,9 +14,6 @@ export default {
apollo: {
state: {
query: rebaseQuery,
- skip() {
- return !this.glFeatures.mergeRequestWidgetGraphql;
- },
variables() {
return this.mergeRequestQueryVariables;
},
@@ -29,7 +25,7 @@ export default {
GlButton,
StateContainer,
},
- mixins: [glFeatureFlagMixin(), mergeRequestQueryVariablesMixin],
+ mixins: [mergeRequestQueryVariablesMixin],
props: {
mr: {
type: Object,
@@ -49,28 +45,16 @@ export default {
},
computed: {
isLoading() {
- return this.glFeatures.mergeRequestWidgetGraphql && this.$apollo.queries.state.loading;
+ return this.$apollo.queries.state.loading;
},
rebaseInProgress() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.state.rebaseInProgress;
- }
-
- return this.mr.rebaseInProgress;
+ return this.state.rebaseInProgress;
},
canPushToSourceBranch() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.state.userPermissions.pushToSourceBranch;
- }
-
- return this.mr.canPushToSourceBranch;
+ return this.state.userPermissions.pushToSourceBranch;
},
targetBranch() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.state.targetBranch;
- }
-
- return this.mr.targetBranch;
+ return this.state.targetBranch;
},
status() {
if (this.isLoading) {
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/new_ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/new_ready_to_merge.vue
index 0b6aa104181..2db5c71be82 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/new_ready_to_merge.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/new_ready_to_merge.vue
@@ -8,7 +8,7 @@ export default {
canMerge: {
query: readyToMergeQuery,
skip() {
- return !this.mr || !window.gon?.features?.mergeRequestWidgetGraphql;
+ return !this.mr;
},
variables() {
return this.mergeRequestQueryVariables;
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 1298c1316e2..c54672cd0f8 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
@@ -19,7 +19,6 @@ import { secondsToMilliseconds } from '~/lib/utils/datetime_utility';
import simplePoll from '~/lib/utils/simple_poll';
import { __, s__, n__ } from '~/locale';
import SmartInterval from '~/smart_interval';
-import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import { helpPagePath } from '~/helpers/help_page_helper';
import {
AUTO_MERGE_STRATEGIES,
@@ -54,9 +53,6 @@ export default {
apollo: {
state: {
query: readyToMergeQuery,
- skip() {
- return !this.glFeatures.mergeRequestWidgetGraphql;
- },
variables() {
return this.mergeRequestQueryVariables;
},
@@ -123,14 +119,14 @@ export default {
directives: {
GlTooltip: GlTooltipDirective,
},
- mixins: [readyToMergeMixin, glFeatureFlagMixin(), mergeRequestQueryVariablesMixin],
+ mixins: [readyToMergeMixin, mergeRequestQueryVariablesMixin],
props: {
mr: { type: Object, required: true },
service: { type: Object, required: true },
},
data() {
return {
- loading: this.glFeatures.mergeRequestWidgetGraphql,
+ loading: true,
state: {},
removeSourceBranch: this.mr.shouldRemoveSourceBranch,
isMakingRequest: false,
@@ -148,7 +144,7 @@ export default {
},
computed: {
stateData() {
- return this.glFeatures.mergeRequestWidgetGraphql ? this.state : this.mr;
+ return this.state;
},
hasCI() {
return this.stateData.hasCI || this.stateData.hasCi;
@@ -157,35 +153,19 @@ export default {
return !isEmpty(this.stateData.availableAutoMergeStrategies);
},
pipeline() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.state.headPipeline;
- }
-
- return this.mr.pipeline;
+ return this.state.headPipeline;
},
isPipelineFailed() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return ['FAILED', 'CANCELED'].indexOf(this.pipeline?.status) !== -1;
- }
-
- return this.mr.isPipelineFailed;
+ return ['FAILED', 'CANCELED'].indexOf(this.pipeline?.status) !== -1;
},
showMergeFailedPipelineConfirmationDialog() {
return this.status === PIPELINE_FAILED_STATE && this.isPipelineFailed;
},
isMergeAllowed() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.state.mergeable;
- }
-
- return this.mr.isMergeAllowed;
+ return this.state.mergeable || false;
},
canRemoveSourceBranch() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.state.userPermissions.removeSourceBranch;
- }
-
- return this.mr.canRemoveSourceBranch;
+ return this.state.userPermissions.removeSourceBranch;
},
commitTemplateHelpPage() {
return helpPagePath('user/project/merge_requests/commit_templates.md');
@@ -200,46 +180,24 @@ export default {
return this.$options.i18n.mergeCommitTemplateHintText;
},
commits() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.state.commitsWithoutMergeCommits.nodes;
- }
-
- return this.mr.commits;
+ return this.state.commitsWithoutMergeCommits?.nodes;
},
commitsCount() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.state.commitCount || 0;
- }
-
- return this.mr.commitsCount;
+ return this.state.commitCount || 0;
},
preferredAutoMergeStrategy() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return MergeRequestStore.getPreferredAutoMergeStrategy(
- this.state.availableAutoMergeStrategies,
- );
- }
-
- return this.mr.preferredAutoMergeStrategy;
+ return MergeRequestStore.getPreferredAutoMergeStrategy(
+ this.state.availableAutoMergeStrategies,
+ );
},
squashIsSelected() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.isSquashReadOnly ? this.state.squashOnMerge : this.state.squash;
- }
-
- return this.mr.squashIsSelected;
+ return this.isSquashReadOnly ? this.state.squashOnMerge : this.state.squash;
},
isPipelineActive() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.pipeline?.active || false;
- }
-
- return this.mr.isPipelineActive;
+ return this.pipeline?.active || false;
},
status() {
- const ciStatus = this.glFeatures.mergeRequestWidgetGraphql
- ? this.pipeline?.status.toLowerCase()
- : this.mr.ciStatus;
+ const ciStatus = this.pipeline?.status?.toLowerCase();
if ((this.hasCI && !ciStatus) || this.hasPipelineMustSucceedConflict) {
return PIPELINE_FAILED_STATE;
@@ -304,11 +262,7 @@ export default {
return this.squashBeforeMerge && this.shouldShowSquashBeforeMerge;
},
shouldShowMergeEdit() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return !this.state.mergeRequestsFfOnlyEnabled;
- }
-
- return !this.mr.ffOnlyEnabled;
+ return !this.state.mergeRequestsFfOnlyEnabled;
},
shaMismatchLink() {
return this.mr.mergeRequestDiffsPath;
@@ -345,18 +299,15 @@ export default {
},
},
mounted() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- eventHub.$on('ApprovalUpdated', this.updateGraphqlState);
- eventHub.$on('MRWidgetUpdateRequested', this.updateGraphqlState);
- eventHub.$on('mr.discussion.updated', this.updateGraphqlState);
- }
+ eventHub.$on('ApprovalUpdated', this.updateGraphqlState);
+ eventHub.$on('MRWidgetUpdateRequested', this.updateGraphqlState);
+ eventHub.$on('mr.discussion.updated', this.updateGraphqlState);
},
beforeDestroy() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- eventHub.$off('ApprovalUpdated', this.updateGraphqlState);
- eventHub.$off('MRWidgetUpdateRequested', this.updateGraphqlState);
- eventHub.$off('mr.discussion.updated', this.updateGraphqlState);
- }
+ eventHub.$off('ApprovalUpdated', this.updateGraphqlState);
+ eventHub.$off('MRWidgetUpdateRequested', this.updateGraphqlState);
+ eventHub.$off('mr.discussion.updated', this.updateGraphqlState);
+ eventHub.$off('ApprovalUpdated', this.updateGraphqlState);
if (this.pollingInterval) {
this.pollingInterval.destroy();
@@ -391,9 +342,7 @@ export default {
if (mergeImmediately) {
this.isMergingImmediately = true;
}
- const latestSha = this.glFeatures.mergeRequestWidgetGraphql
- ? this.state.diffHeadSha
- : this.mr.latestSHA;
+ const latestSha = this.state.diffHeadSha;
const options = {
sha: latestSha || this.mr.sha,
@@ -435,9 +384,7 @@ export default {
this.mr.transitionStateMachine({ transition: MERGE_FAILURE });
}
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- this.updateGraphqlState();
- }
+ this.updateGraphqlState();
this.isMakingRequest = false;
})
@@ -521,7 +468,7 @@ export default {
<template>
<div
data-testid="ready_to_merge_state"
- class="gl-border-t-1 gl-border-t-solid gl-border-gray-100 gl-bg-gray-10 gl-pl-7 gl-rounded-bottom-left-base gl-rounded-bottom-right-base"
+ class="gl-border-t-1 gl-border-t-solid gl-border-gray-100 gl-bg-gray-10 gl-pl-7"
>
<div v-if="loading" class="mr-widget-body">
<div class="gl-w-full mr-ready-to-merge-loader">
@@ -538,13 +485,15 @@ export default {
<div class="media-body">
<div class="mr-widget-body-controls gl-display-flex gl-align-items-center gl-flex-wrap">
<template v-if="shouldShowMergeControls">
- <div class="gl-display-flex gl-align-items-center gl-flex-wrap gl-w-full gl-mb-5">
+ <div
+ class="gl-display-flex gl-sm-flex-direction-column gl-md-align-items-center gl-flex-wrap gl-w-full gl-md-pb-5"
+ >
<gl-form-checkbox
v-if="canRemoveSourceBranch"
id="remove-source-branch-input"
v-model="removeSourceBranch"
:disabled="isRemoveSourceBranchButtonDisabled"
- class="js-remove-source-branch-checkbox gl-display-flex gl-align-items-center gl-mr-5"
+ class="js-remove-source-branch-checkbox gl-display-flex gl-align-items-center gl-mr-5 gl-mb-3 gl-md-mb-0"
>
{{ __('Delete source branch') }}
</gl-form-checkbox>
@@ -555,37 +504,18 @@ export default {
v-model="squashBeforeMerge"
:help-path="mr.squashBeforeMergeHelpPath"
:is-disabled="isSquashReadOnly"
- class="gl-mr-5"
+ class="gl-mr-5 gl-mb-3 gl-md-mb-0"
/>
<gl-form-checkbox
v-if="shouldShowSquashEdit || shouldShowMergeEdit"
v-model="editCommitMessage"
data-testid="widget_edit_commit_message"
- class="gl-display-flex gl-align-items-center"
+ class="gl-display-flex gl-align-items-center gl-mb-3 gl-md-mb-0"
>
{{ __('Edit commit message') }}
</gl-form-checkbox>
</div>
- <div class="gl-w-full gl-text-gray-500 gl-mb-5">
- <added-commit-message
- :is-squash-enabled="squashBeforeMerge"
- :is-fast-forward-enabled="!shouldShowMergeEdit"
- :commits-count="commitsCount"
- :target-branch="stateData.targetBranch"
- />
- <template v-if="mr.relatedLinks">
- &middot;
- <related-links
- :state="mr.state"
- :related-links="mr.relatedLinks"
- :show-assign-to-me="false"
- :diverged-commits-count="mr.divergedCommitsCount"
- :target-branch-path="mr.targetBranchPath"
- class="mr-ready-merge-related-links gl-display-inline"
- />
- </template>
- </div>
<div v-if="editCommitMessage" class="gl-w-full" data-testid="edit_commit_message">
<ul class="border-top commits-list flex-list gl-list-style-none gl-p-0 gl-pt-4">
<commit-edit
@@ -625,6 +555,25 @@ export default {
</li>
</ul>
</div>
+ <div class="gl-w-full gl-text-gray-500 gl-mb-3 gl-md-mb-0 gl-md-pb-5">
+ <added-commit-message
+ :is-squash-enabled="squashBeforeMerge"
+ :is-fast-forward-enabled="!shouldShowMergeEdit"
+ :commits-count="commitsCount"
+ :target-branch="state.targetBranch"
+ />
+ <template v-if="mr.relatedLinks">
+ &middot;
+ <related-links
+ :state="mr.state"
+ :related-links="mr.relatedLinks"
+ :show-assign-to-me="false"
+ :diverged-commits-count="mr.divergedCommitsCount"
+ :target-branch-path="mr.targetBranchPath"
+ class="mr-ready-merge-related-links gl-display-inline"
+ />
+ </template>
+ </div>
<gl-button-group class="gl-align-self-start">
<gl-button
size="medium"
@@ -702,7 +651,7 @@ export default {
:is-squash-enabled="squashBeforeMerge"
:is-fast-forward-enabled="!shouldShowMergeEdit"
:commits-count="commitsCount"
- :target-branch="stateData.targetBranch"
+ :target-branch="state.targetBranch"
:merge-commit-path="mr.mergeCommitPath"
/>
</li>
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue
index 8f2e4eb2131..074758e33b2 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/states/unresolved_discussions.vue
@@ -26,30 +26,30 @@ export default {
<template>
<state-container :mr="mr" status="failed">
<span
- class="gl-ml-3 gl-font-weight-bold gl-w-100 gl-flex-grow-1 gl-md-mr-3 gl-ml-0! gl-text-body!"
+ class="gl-ml-3 gl-font-weight-bold gl-w-100 gl-flex-grow-1 gl-md-mr-3 gl-ml-0! gl-text-body! gl-align-self-start"
>
{{ s__('mrWidget|Merge blocked: all threads must be resolved.') }}
</span>
<template #actions>
<gl-button
- v-if="mr.createIssueToResolveDiscussionsPath"
- :href="mr.createIssueToResolveDiscussionsPath"
- class="js-create-issue gl-align-self-start gl-vertical-align-top gl-mr-2"
+ data-testid="jump-to-first"
+ class="gl-align-self-start gl-vertical-align-top"
size="small"
variant="confirm"
- category="secondary"
+ category="primary"
+ @click="jumpToFirstUnresolvedDiscussion"
>
- {{ s__('mrWidget|Create issue to resolve all threads') }}
+ {{ s__('mrWidget|Jump to first unresolved thread') }}
</gl-button>
<gl-button
- data-testid="jump-to-first"
- class="gl-mb-2 gl-md-mb-0 gl-align-self-start gl-vertical-align-top"
+ v-if="mr.createIssueToResolveDiscussionsPath"
+ :href="mr.createIssueToResolveDiscussionsPath"
+ class="js-create-issue gl-align-self-start gl-vertical-align-top"
size="small"
variant="confirm"
- category="primary"
- @click="jumpToFirstUnresolvedDiscussion"
+ category="secondary"
>
- {{ s__('mrWidget|Jump to first unresolved thread') }}
+ {{ s__('mrWidget|Create issue to resolve all threads') }}
</gl-button>
</template>
</state-container>
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 dee27a5d5b5..ef5be0fbfcd 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
@@ -5,14 +5,12 @@ import $ from 'jquery';
import { createAlert } 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';
-import eventHub from '../../event_hub';
import mergeRequestQueryVariablesMixin from '../../mixins/merge_request_query_variables';
import getStateQuery from '../../queries/get_state.query.graphql';
import draftQuery from '../../queries/states/draft.query.graphql';
import removeDraftMutation from '../../queries/toggle_draft.mutation.graphql';
import StateContainer from '../state_container.vue';
+import eventHub from '../../event_hub';
export default {
name: 'WorkInProgress',
@@ -20,13 +18,10 @@ export default {
GlButton,
StateContainer,
},
- mixins: [glFeatureFlagMixin(), mergeRequestQueryVariablesMixin],
+ mixins: [mergeRequestQueryVariablesMixin],
apollo: {
userPermissions: {
query: draftQuery,
- skip() {
- return !this.glFeatures.mergeRequestWidgetGraphql;
- },
variables() {
return this.mergeRequestQueryVariables;
},
@@ -35,7 +30,6 @@ export default {
},
props: {
mr: { type: Object, required: true },
- service: { type: Object, required: true },
},
data() {
return {
@@ -43,17 +37,8 @@ export default {
isMakingRequest: false,
};
},
- computed: {
- canUpdate() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- return this.userPermissions.updateMergeRequest;
- }
-
- return Boolean(this.mr.removeWIPPath);
- },
- },
methods: {
- removeDraftMutation() {
+ handleRemoveDraft() {
const { mergeRequestQueryVariables } = this;
this.isMakingRequest = true;
@@ -138,26 +123,6 @@ export default {
this.isMakingRequest = false;
});
},
- handleRemoveDraft() {
- if (this.glFeatures.mergeRequestWidgetGraphql) {
- this.removeDraftMutation();
- } else {
- this.isMakingRequest = true;
- this.service
- .removeWIP()
- .then((res) => res.data)
- .then((data) => {
- eventHub.$emit('UpdateWidgetData', data);
- MergeRequest.toggleDraftStatus(this.mr.title, true);
- })
- .catch(() => {
- this.isMakingRequest = false;
- createAlert({
- message: __('Something went wrong. Please try again.'),
- });
- });
- }
- },
},
};
</script>
@@ -169,12 +134,13 @@ export default {
</span>
<template #actions>
<gl-button
- v-if="canUpdate"
+ v-if="userPermissions.updateMergeRequest"
size="small"
:disabled="isMakingRequest"
:loading="isMakingRequest"
variant="confirm"
class="js-remove-draft gl-md-ml-3 gl-align-self-start"
+ data-testid="removeWipButton"
@click="handleRemoveDraft"
>
{{ s__('mrWidget|Mark as ready') }}