All files / app/assets/javascripts/batch_comments/mixins resolved_status.js

84.21% Statements 16/19
68% Branches 17/25
66.66% Functions 2/3
83.33% Lines 15/18

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72                                                    3x       3x   3x       3x 2x     1x   1x 1x     3x           23x   23x   22x   22x 22x             22x          
// eslint-disable-next-line no-restricted-imports
import { mapGetters } from 'vuex';
import { sprintf, s__, __ } from '~/locale';
 
export default {
  props: {
    discussionId: {
      type: String,
      required: false,
      default: null,
    },
    resolveDiscussion: {
      type: Boolean,
      required: false,
      default: false,
    },
    isDraft: {
      type: Boolean,
      required: false,
      default: false,
    },
  },
  computed: {
    ...mapGetters(['isDiscussionResolved']),
    resolvedStatusMessage() {
      let message;
      const discussionResolved = this.isDiscussionResolved(
        'draft' in this ? this.draft.discussion_id : this.discussionId,
      );
      const discussionToBeResolved =
        'draft' in this ? this.draft.resolve_discussion : this.resolveDiscussion;
 
      Iif (discussionToBeResolved && discussionResolved && !this.$options.showStaysResolved) {
        return undefined;
      }
 
      if (discussionToBeResolved) {
        message = discussionResolved
          ? s__('MergeRequests|Thread stays resolved')
          : s__('MergeRequests|Thread will be resolved');
      } else Iif (discussionResolved) {
        message = s__('MergeRequests|Thread will be unresolved');
      } else Eif (this.$options.showStaysResolved) {
        message = s__('MergeRequests|Thread stays unresolved');
      }
 
      return message;
    },
    componentClasses() {
      return this.resolveDiscussion ? 'is-resolving-discussion' : 'is-unresolving-discussion';
    },
    resolveButtonTitle() {
      const escapeParameters = false;
 
      if (this.isDraft || this.discussionId) return this.resolvedStatusMessage;
 
      let title = __('Resolve thread');
 
      Eif (this.resolvedBy) {
        title = sprintf(
          __('Resolved by %{name}'),
          { name: this.resolvedBy.name },
          escapeParameters,
        );
      }
 
      return title;
    },
  },
  showStaysResolved: true,
};