Module: Gitlab::GonHelper
- Includes:
- WebpackHelper
- Defined in:
- lib/gitlab/gon_helper.rb
Instance Method Summary collapse
- #add_browsersdk_tracking ⇒ Object
- #add_gon_variables ⇒ Object
- #default_avatar_url ⇒ Object
-
#push_force_frontend_feature_flag(name, enabled) ⇒ Object
Exposes the state of a feature flag to the frontend code.
-
#push_frontend_feature_flag(name, *args, **kwargs) ⇒ Object
Exposes the state of a feature flag to the frontend code.
- #push_to_gon_attributes(key, name, enabled) ⇒ Object
Methods included from WebpackHelper
#prefetch_link_tag, #webpack_bundle_tag, #webpack_controller_bundle_tags, #webpack_entrypoint_paths, #webpack_preload_asset_tag, #webpack_public_host, #webpack_public_path
Methods included from ViteHelper
#universal_asset_path, #universal_javascript_include_tag
Instance Method Details
#add_browsersdk_tracking ⇒ Object
123 124 125 126 127 128 129 |
# File 'lib/gitlab/gon_helper.rb', line 123 def add_browsersdk_tracking return unless Gitlab.com? && Feature.enabled?(:browsersdk_tracking) return if ENV['GITLAB_ANALYTICS_URL'].blank? || ENV['GITLAB_ANALYTICS_ID'].blank? gon.analytics_url = ENV['GITLAB_ANALYTICS_URL'] gon.analytics_id = ENV['GITLAB_ANALYTICS_ID'] end |
#add_gon_variables ⇒ Object
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/gitlab/gon_helper.rb', line 9 def add_gon_variables gon.api_version = 'v4' gon.default_avatar_url = default_avatar_url gon.max_file_size = Gitlab::CurrentSettings. 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 gon.markdown_automatic_lists = current_user&.markdown_automatic_lists add_browsersdk_tracking if Gitlab.config.sentry.enabled 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 gon.sentry_clientside_traces_sample_rate = Gitlab::CurrentSettings.sentry_clientside_traces_sample_rate end gon.recaptcha_api_server_url = ::Recaptcha.configuration.api_server_url gon.recaptcha_sitekey = Gitlab::CurrentSettings.recaptcha_site_key gon.gitlab_url = Gitlab.config.gitlab.url gon.revision = Gitlab.revision gon.feature_category = Gitlab::ApplicationContext.current_context_attribute(:feature_category).presence gon.gitlab_logo = ActionController::Base.helpers.asset_path('gitlab_logo.png') gon.secure = Gitlab.config.gitlab.https 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.gridstack_css_path = ActionController::Base.helpers.stylesheet_path('lazy_bundles/gridstack.css') gon.test_env = Rails.env.test? gon.disable_animations = Gitlab.config.gitlab['disable_animations'] gon.suggested_label_colors = LabelsHelper.suggested_colors gon.first_day_of_week = current_user&.first_day_of_week || Gitlab::CurrentSettings.first_day_of_week gon.time_display_relative = true gon.ee = Gitlab.ee? gon.jh = Gitlab.jh? gon.dot_com = Gitlab.com? gon.uf_error_prefix = ::Gitlab::Utils::ErrorMessage::UF_ERROR_PREFIX gon.pat_prefix = Gitlab::CurrentSettings.current_application_settings.personal_access_token_prefix gon. = NavHelper.(current_user) gon.keyboard_shortcuts_enabled = current_user ? current_user.keyboard_shortcuts_enabled : true gon.diagramsnet_url = Gitlab::CurrentSettings.diagramsnet_url if Gitlab::CurrentSettings.diagramsnet_enabled if current_user gon.version = Gitlab::VERSION # publish version only for logged in users 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 gon.time_display_relative = current_user.time_display_relative end # Initialize gon.features with any flags that should be # made globally available to the frontend push_frontend_feature_flag(:usage_data_api, type: :ops) push_frontend_feature_flag(:security_auto_fix) push_frontend_feature_flag(:source_editor_toolbar) push_frontend_feature_flag(:vscode_web_ide, current_user) push_frontend_feature_flag(:unbatch_graphql_queries, current_user) push_frontend_feature_flag(:server_side_frecent_namespaces, current_user) # To be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/399248 push_frontend_feature_flag(:remove_monitor_metrics) push_frontend_feature_flag(:gitlab_duo, current_user) push_frontend_feature_flag(:custom_emoji) end |
#default_avatar_url ⇒ Object
113 114 115 116 117 118 119 120 121 |
# File 'lib/gitlab/gon_helper.rb', line 113 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 |
#push_force_frontend_feature_flag(name, enabled) ⇒ Object
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.
101 102 103 |
# File 'lib/gitlab/gon_helper.rb', line 101 def push_force_frontend_feature_flag(name, enabled) push_to_gon_attributes(:features, name, !!enabled) end |
#push_frontend_feature_flag(name, *args, **kwargs) ⇒ Object
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.
90 91 92 93 94 |
# File 'lib/gitlab/gon_helper.rb', line 90 def push_frontend_feature_flag(name, *args, **kwargs) enabled = Feature.enabled?(name, *args, **kwargs) push_to_gon_attributes(:features, name, enabled) end |
#push_to_gon_attributes(key, name, enabled) ⇒ Object
105 106 107 108 109 110 111 |
# File 'lib/gitlab/gon_helper.rb', line 105 def push_to_gon_attributes(key, name, enabled) var_name = name.to_s.camelize(:lower) # 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({ key => { var_name => enabled } }, true) end |