File: error_tracking_helper.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (52 lines) | stat: -rw-r--r-- 2,042 bytes parent folder | download
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
# frozen_string_literal: true

module Projects::ErrorTrackingHelper
  def error_tracking_data(current_user, project)
    error_tracking_enabled = !!project.error_tracking_setting&.enabled?

    {
      'index-path' => project_error_tracking_index_path(project, format: :json),
      'user-can-enable-error-tracking' => can?(current_user, :admin_operations, project).to_s,
      'enable-error-tracking-link' => project_settings_operations_path(project),
      'error-tracking-enabled' => error_tracking_enabled.to_s,
      'integrated-error-tracking-enabled' => integrated_tracking_enabled?(project).to_s,
      'project-path' => project.full_path,
      'list-path' => project_error_tracking_index_path(project),
      'illustration-path' => image_path('illustrations/empty-state/empty-radar-md.svg'),
      'show-integrated-tracking-disabled-alert' => show_integrated_tracking_disabled_alert?(project).to_s
    }
  end

  def error_details_data(project, issue_id)
    opts = [project, issue_id, { format: :json }]

    {
      'issue-id' => issue_id,
      'project-path' => project.full_path,
      'issue-update-path' => update_project_error_tracking_index_path(*opts),
      'project-issues-path' => project_issues_path(project),
      'issue-stack-trace-path' => stack_trace_project_error_tracking_index_path(*opts),
      'integrated-error-tracking-enabled' => integrated_tracking_enabled?(project).to_s
    }
  end

  private

  # Should show the alert if the FF was turned off after the integrated client has been configured.
  def show_integrated_tracking_disabled_alert?(project)
    return false if ::Feature.enabled?(:integrated_error_tracking, project)

    integrated_client_enabled?(project)
  end

  def integrated_tracking_enabled?(project)
    ::Feature.enabled?(:integrated_error_tracking, project) && integrated_client_enabled?(project)
  end

  def integrated_client_enabled?(project)
    setting ||= project.error_tracking_setting ||
      project.build_error_tracking_setting

    setting.integrated_enabled?
  end
end