debian-mirror-gitlab/lib/gitlab/gon_helper.rb

116 lines
5.5 KiB
Ruby
Raw Normal View History

2018-12-13 13:39:08 +05:30
# frozen_string_literal: true
2017-08-17 22:00:37 +05:30
# rubocop:disable Metrics/AbcSize
2016-06-02 11:05:42 +05:30
module Gitlab
module GonHelper
2017-09-10 17:25:29 +05:30
include WebpackHelper
2016-06-02 11:05:42 +05:30
def add_gon_variables
2021-04-17 20:07:23 +05:30
gon.api_version = 'v4'
gon.default_avatar_url = default_avatar_url
gon.max_file_size = Gitlab::CurrentSettings.max_attachment_size
gon.asset_host = ActionController::Base.asset_host
gon.webpack_public_path = webpack_public_path
gon.relative_url_root = Gitlab.config.gitlab.relative_url_root
gon.user_color_scheme = Gitlab::ColorSchemes.for_user(current_user).css_class
gon.markdown_surround_selection = current_user&.markdown_surround_selection
2022-11-25 23:54:43 +05:30
gon.markdown_automatic_lists = current_user&.markdown_automatic_lists
2019-07-31 22:56:46 +05:30
2019-09-30 21:07:59 +05:30
if Gitlab.config.sentry.enabled
2023-01-13 00:05:48 +05:30
gon.sentry_dsn = Gitlab.config.sentry.clientside_dsn
gon.sentry_environment = Gitlab.config.sentry.environment
end
# Support for Sentry setup via configuration files will be removed in 16.0
# in favor of Gitlab::CurrentSettings.
if Feature.enabled?(:enable_new_sentry_clientside_integration,
current_user) && Gitlab::CurrentSettings.sentry_enabled
gon.sentry_dsn = Gitlab::CurrentSettings.sentry_clientside_dsn
gon.sentry_environment = Gitlab::CurrentSettings.sentry_environment
2019-07-31 22:56:46 +05:30
end
2021-11-11 11:23:49 +05:30
gon.recaptcha_api_server_url = ::Recaptcha.configuration.api_server_url
gon.recaptcha_sitekey = Gitlab::CurrentSettings.recaptcha_site_key
2017-08-17 22:00:37 +05:30
gon.gitlab_url = Gitlab.config.gitlab.url
2018-10-15 14:42:47 +05:30
gon.revision = Gitlab.revision
2021-09-30 23:02:18 +05:30
gon.feature_category = Gitlab::ApplicationContext.current_context_attribute(:feature_category).presence
2017-08-17 22:00:37 +05:30
gon.gitlab_logo = ActionController::Base.helpers.asset_path('gitlab_logo.png')
2022-04-04 11:22:00 +05:30
gon.secure = Gitlab.config.gitlab.https
2018-03-17 18:26:18 +05:30
gon.sprite_icons = IconsHelper.sprite_icon_path
gon.sprite_file_icons = IconsHelper.sprite_file_icons_path
2018-10-15 14:42:47 +05:30
gon.emoji_sprites_css_path = ActionController::Base.helpers.stylesheet_path('emoji_sprites')
2022-11-25 23:54:43 +05:30
gon.gridstack_css_path = ActionController::Base.helpers.stylesheet_path('lazy_bundles/gridstack.css')
2018-03-27 19:54:05 +05:30
gon.test_env = Rails.env.test?
2020-03-13 15:44:24 +05:30
gon.disable_animations = Gitlab.config.gitlab['disable_animations']
2018-03-27 19:54:05 +05:30
gon.suggested_label_colors = LabelsHelper.suggested_colors
2019-03-02 22:35:43 +05:30
gon.first_day_of_week = current_user&.first_day_of_week || Gitlab::CurrentSettings.first_day_of_week
2021-09-30 23:02:18 +05:30
gon.time_display_relative = true
2019-07-07 11:18:12 +05:30
gon.ee = Gitlab.ee?
2021-11-11 11:23:49 +05:30
gon.jh = Gitlab.jh?
2021-03-11 19:13:27 +05:30
gon.dot_com = Gitlab.com?
2023-06-20 00:43:36 +05:30
gon.uf_error_prefix = ::Gitlab::Utils::ErrorMessage::UF_ERROR_PREFIX
2016-06-02 11:05:42 +05:30
if current_user
gon.current_user_id = current_user.id
2017-08-17 22:00:37 +05:30
gon.current_username = current_user.username
gon.current_user_fullname = current_user.name
2017-09-10 17:25:29 +05:30
gon.current_user_avatar_url = current_user.avatar_url
2021-09-30 23:02:18 +05:30
gon.time_display_relative = current_user.time_display_relative
2023-07-09 08:55:56 +05:30
gon.use_new_navigation = NavHelper.show_super_sidebar?(current_user)
2016-06-02 11:05:42 +05:30
end
2019-12-21 20:55:43 +05:30
# Initialize gon.features with any flags that should be
# made globally available to the frontend
2022-07-16 23:28:13 +05:30
push_frontend_feature_flag(:usage_data_api, type: :ops)
push_frontend_feature_flag(:security_auto_fix)
push_frontend_feature_flag(:source_editor_toolbar)
2023-03-04 22:38:38 +05:30
push_frontend_feature_flag(:vscode_web_ide, current_user)
2023-07-09 08:55:56 +05:30
push_frontend_feature_flag(:super_sidebar_peek, current_user)
push_frontend_feature_flag(:unbatch_graphql_queries, current_user)
# To be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/399248
push_frontend_feature_flag(:remove_monitor_metrics)
2016-06-02 11:05:42 +05:30
end
2018-12-13 13:39:08 +05:30
# Exposes the state of a feature flag to the frontend code.
#
# name - The name of the feature flag, e.g. `my_feature`.
# args - Any additional arguments to pass to `Feature.enabled?`. This allows
# you to check if a flag is enabled for a particular user.
2021-01-03 14:25:43 +05:30
def push_frontend_feature_flag(name, *args, **kwargs)
enabled = Feature.enabled?(name, *args, **kwargs)
2018-12-13 13:39:08 +05:30
2021-02-22 17:27:13 +05:30
push_to_gon_attributes(:features, name, enabled)
2021-01-29 00:20:46 +05:30
end
2022-06-21 17:19:12 +05:30
# Exposes the state of a feature flag to the frontend code.
# Can be used for more complex feature flag checks.
#
# name - The name of the feature flag, e.g. `my_feature`.
# enabled - Boolean to be pushed directly to the frontend. Should be fetched by checking a feature flag.
def push_force_frontend_feature_flag(name, enabled)
push_to_gon_attributes(:features, name, !!enabled)
end
2021-02-22 17:27:13 +05:30
def push_to_gon_attributes(key, name, enabled)
2021-01-29 00:20:46 +05:30
var_name = name.to_s.camelize(:lower)
2018-12-13 13:39:08 +05:30
# Here the `true` argument signals gon that the value should be merged
# into any existing ones, instead of overwriting them. This allows you to
# use this method to push multiple feature flags.
2021-02-22 17:27:13 +05:30
gon.push({ key => { var_name => enabled } }, true)
2018-12-13 13:39:08 +05:30
end
2019-02-15 15:39:39 +05:30
def default_avatar_url
# We can't use ActionController::Base.helpers.image_url because it
# doesn't return an actual URL because request is nil for some reason.
#
# We also can't use Gitlab::Utils.append_path because the image path
# may be an absolute URL.
URI.join(Gitlab.config.gitlab.url,
ActionController::Base.helpers.image_path('no_avatar.png')).to_s
end
2016-06-02 11:05:42 +05:30
end
end
2021-02-22 17:27:13 +05:30
2021-06-08 01:23:25 +05:30
Gitlab::GonHelper.prepend_mod_with('Gitlab::GonHelper')