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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/integrations/discord.rb')
-rw-r--r--app/models/integrations/discord.rb38
1 files changed, 36 insertions, 2 deletions
diff --git a/app/models/integrations/discord.rb b/app/models/integrations/discord.rb
index 815e3669d78..33b2b52fa62 100644
--- a/app/models/integrations/discord.rb
+++ b/app/models/integrations/discord.rb
@@ -42,8 +42,15 @@ module Integrations
s_('DiscordService|Override the default webhook (e.g. https://discord.com/api/webhooks/…)')
end
+ override :supported_events
+ def supported_events
+ additional = group_level? ? %w[group_mention group_confidential_mention] : []
+
+ (self.class.supported_events + additional).freeze
+ end
+
def self.supported_events
- %w[push issue confidential_issue merge_request note confidential_note tag_push pipeline wiki_page]
+ %w[push issue confidential_issue merge_request note confidential_note tag_push pipeline wiki_page deployment]
end
def configurable_channels?
@@ -68,7 +75,7 @@ module Integrations
builder.add_embed do |embed|
embed.author = Discordrb::Webhooks::EmbedAuthor.new(name: message.user_name, icon_url: message.user_avatar)
embed.description = (message.pretext + "\n" + Array.wrap(message.attachments).join("\n")).gsub(ATTACHMENT_REGEX, " \\k<entry> - \\k<name>\n")
- embed.colour = 16543014 # The hex "fc6d26" as an Integer
+ embed.colour = embed_color(message)
embed.timestamp = Time.now.utc
end
end
@@ -77,6 +84,33 @@ module Integrations
false
end
+ COLOR_OVERRIDES = {
+ 'good' => '#0d532a',
+ 'warning' => '#703800',
+ 'danger' => '#8d1300'
+ }.freeze
+
+ def embed_color(message)
+ return 'fc6d26'.hex unless message.respond_to?(:attachment_color)
+
+ color = message.attachment_color
+
+ color = COLOR_OVERRIDES[color] if COLOR_OVERRIDES.key?(color)
+
+ color = color.delete_prefix('#')
+
+ normalize_color(color).hex
+ end
+
+ # Expands the short notation to the full colorcode notation
+ # 123456 -> 123456
+ # 123 -> 112233
+ def normalize_color(color)
+ return (color[0, 1] * 2) + (color[1, 1] * 2) + (color[2, 1] * 2) if color.length == 3
+
+ color
+ end
+
def custom_data(data)
super(data).merge(markdown: true)
end