39f252254b
In Ruby 2.4, `URI.join("http://test//", "a").to_s` will remove the double slash, however it's not the case in Ruby 2.5. Using chomp should work better for the intention, as we're not trying to allow things like ../ or / paths resolution. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/53180
54 lines
2.4 KiB
Ruby
54 lines
2.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# rubocop:disable Metrics/AbcSize
|
|
|
|
module Gitlab
|
|
module GonHelper
|
|
include WebpackHelper
|
|
|
|
def add_gon_variables
|
|
gon.api_version = 'v4'
|
|
gon.default_avatar_url =
|
|
Gitlab::Utils.append_path(
|
|
Gitlab.config.gitlab.url,
|
|
ActionController::Base.helpers.image_path('no_avatar.png'))
|
|
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.shortcuts_path = Gitlab::Routing.url_helpers.help_page_path('shortcuts')
|
|
gon.user_color_scheme = Gitlab::ColorSchemes.for_user(current_user).css_class
|
|
gon.sentry_dsn = Gitlab::CurrentSettings.clientside_sentry_dsn if Gitlab::CurrentSettings.clientside_sentry_enabled
|
|
gon.gitlab_url = Gitlab.config.gitlab.url
|
|
gon.revision = Gitlab.revision
|
|
gon.gitlab_logo = ActionController::Base.helpers.asset_path('gitlab_logo.png')
|
|
gon.sprite_icons = IconsHelper.sprite_icon_path
|
|
gon.sprite_file_icons = IconsHelper.sprite_file_icons_path
|
|
gon.emoji_sprites_css_path = ActionController::Base.helpers.stylesheet_path('emoji_sprites')
|
|
gon.test_env = Rails.env.test?
|
|
gon.suggested_label_colors = LabelsHelper.suggested_colors
|
|
|
|
if current_user
|
|
gon.current_user_id = current_user.id
|
|
gon.current_username = current_user.username
|
|
gon.current_user_fullname = current_user.name
|
|
gon.current_user_avatar_url = current_user.avatar_url
|
|
end
|
|
end
|
|
|
|
# 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.
|
|
def push_frontend_feature_flag(name, *args)
|
|
var_name = name.to_s.camelize(:lower)
|
|
enabled = Feature.enabled?(name, *args)
|
|
|
|
# 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.
|
|
gon.push({ features: { var_name => enabled } }, true)
|
|
end
|
|
end
|
|
end
|