summaryrefslogtreecommitdiff
path: root/app/services/discussions/unresolve_service.rb
blob: f6685b79a33c235ee75fdf6f34cad8c7fd862a82 (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
37
38
# frozen_string_literal: true

module Discussions
  class UnresolveService < Discussions::BaseService
    include Gitlab::Utils::StrongMemoize

    def initialize(discussion, user)
      @discussion = discussion
      @user = user

      super
    end

    def execute
      @all_discussions_resolved_before = merge_request ? @discussion.noteable.discussions_resolved? : false

      @discussion.unresolve!

      send_graphql_triggers

      Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter
        .track_unresolve_thread_action(user: @user)
    end

    private

    def merge_request
      @discussion.noteable if @discussion.for_merge_request?
    end
    strong_memoize_attr :merge_request

    def send_graphql_triggers
      return unless merge_request && @all_discussions_resolved_before

      GraphqlTriggers.merge_request_merge_status_updated(merge_request)
    end
  end
end