summaryrefslogtreecommitdiff
path: root/app/services/draft_notes/destroy_service.rb
blob: ddca0debb03796761dc3f1ff8a9132ff1b321bf5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# frozen_string_literal: true

module DraftNotes
  class DestroyService < DraftNotes::BaseService
    # If no `draft` is given it fallsback to all
    # draft notes of the given merge request and user.
    def execute(draft = nil)
      drafts = draft || draft_notes

      clear_highlight_diffs_cache(Array.wrap(drafts))

      drafts.is_a?(DraftNote) ? drafts.destroy! : drafts.delete_all
    end

    private

    def clear_highlight_diffs_cache(drafts)
      if drafts.any? { |draft| draft.diff_file&.unfolded? }
        merge_request.diffs.clear_cache
      end
    end
  end
end