summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/vue_merge_request_widget/stores/get_state_key.js
blob: 18d955652baee03eb8bf89b189c9f60d08881cd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { stateKey } from './state_maps';

export default function deviseState() {
  if (!this.commitsCount) {
    return stateKey.nothingToMerge;
  } else if (this.projectArchived) {
    return stateKey.archived;
  } else if (this.branchMissing) {
    return stateKey.missingBranch;
  } else if (this.mergeStatus === 'unchecked' || this.mergeStatus === 'checking') {
    return stateKey.checking;
  } else if (this.hasConflicts) {
    return stateKey.conflicts;
  } else if (this.shouldBeRebased) {
    return stateKey.rebase;
  } else if (this.hasMergeChecksFailed && !this.autoMergeEnabled) {
    return stateKey.mergeChecksFailed;
  } else if (this.onlyAllowMergeIfPipelineSucceeds && this.isPipelineFailed) {
    return stateKey.pipelineFailed;
  } else if (this.draft) {
    return stateKey.draft;
  } else if (this.hasMergeableDiscussionsState && !this.autoMergeEnabled) {
    return stateKey.unresolvedDiscussions;
  } else if (this.isPipelineBlocked) {
    return stateKey.pipelineBlocked;
  } else if (this.canMerge && this.isSHAMismatch) {
    return stateKey.shaMismatch;
  } else if (this.autoMergeEnabled && !this.mergeError) {
    return stateKey.autoMergeEnabled;
  } else if (!this.canMerge && !window.gon?.features?.restructuredMrWidget) {
    return stateKey.notAllowedToMerge;
  } else if (this.canBeMerged) {
    return stateKey.readyToMerge;
  }
  return null;
}