Welcome to mirror list, hosted at ThFree Co, Russian Federation.

merge_message.rb « chat_message « integrations « models « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d2f48699f50028f95cdfca7a468da521bfd89718 (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
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
73
74
75
76
77
78
79
80
81
82
83
# frozen_string_literal: true

module Integrations
  module ChatMessage
    class MergeMessage < BaseMessage
      attr_reader :merge_request_iid
      attr_reader :source_branch
      attr_reader :target_branch
      attr_reader :action
      attr_reader :state
      attr_reader :title

      def initialize(params)
        super

        obj_attr = params[:object_attributes]
        obj_attr = HashWithIndifferentAccess.new(obj_attr)
        @merge_request_iid = obj_attr[:iid]
        @source_branch = obj_attr[:source_branch]
        @target_branch = obj_attr[:target_branch]
        @action = obj_attr[:action]
        @state = obj_attr[:state]
        @title = format_title(obj_attr[:title])
      end

      def attachments
        []
      end

      def activity
        {
          title: "Merge request #{state_or_action_text} by #{user_combined_name}",
          subtitle: "in #{project_link}",
          text: merge_request_link,
          image: user_avatar
        }
      end

      private

      def format_title(title)
        '*' + title.lines.first.chomp + '*'
      end

      def message
        merge_request_message
      end

      def project_link
        link(project_name, project_url)
      end

      def merge_request_message
        "#{user_combined_name} #{state_or_action_text} merge request #{merge_request_link} in #{project_link}"
      end

      def merge_request_link
        link(merge_request_title, merge_request_url)
      end

      def merge_request_title
        "#{MergeRequest.reference_prefix}#{merge_request_iid} #{title}"
      end

      def merge_request_url
        "#{project_url}/-/merge_requests/#{merge_request_iid}"
      end

      def state_or_action_text
        case action
        when 'approved', 'unapproved'
          action
        when 'approval'
          'added their approval to'
        when 'unapproval'
          'removed their approval from'
        else
          state
        end
      end
    end
  end
end