blob: e95b90c69ef64d83a14ca673784f2d00fcd338fc (
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
|
# frozen_string_literal: true
module WebHooks
module WebHooksHelper
EXPIRY_TTL = 1.hour
def show_project_hook_failed_callout?(project:)
return false if project_hook_page?
return false unless current_user
return false unless Feature.enabled?(:webhooks_failed_callout, project)
return false unless Feature.enabled?(:web_hooks_disable_failed, project)
return false unless Ability.allowed?(current_user, :read_web_hooks, project)
# Assumes include of Users::CalloutsHelper
return false if web_hook_disabled_dismissed?(project)
any_project_hook_failed?(project) # Most expensive query last
end
private
def any_project_hook_failed?(project)
Rails.cache.fetch("any_web_hook_failed:#{project.id}", expires_in: EXPIRY_TTL) do
ProjectHook.for_projects(project).disabled.exists?
end
end
def project_hook_page?
current_controller?('projects/hooks') || current_controller?('projects/hook_logs')
end
end
end
|