diff options
Diffstat (limited to 'app/controllers/ide_controller.rb')
-rw-r--r-- | app/controllers/ide_controller.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/app/controllers/ide_controller.rb b/app/controllers/ide_controller.rb index 8c0414ad5da..ea67c76a8bc 100644 --- a/app/controllers/ide_controller.rb +++ b/app/controllers/ide_controller.rb @@ -5,10 +5,12 @@ class IdeController < ApplicationController include ClientsidePreviewCSP include StaticObjectExternalStorageCSP + include Gitlab::Utils::StrongMemoize before_action do push_frontend_feature_flag(:build_service_proxy) push_frontend_feature_flag(:schema_linting) + define_index_vars end feature_category :web_ide @@ -16,4 +18,26 @@ class IdeController < ApplicationController def index Gitlab::UsageDataCounters::WebIdeCounter.increment_views_count end + + private + + def define_index_vars + return unless project + + @branch = params[:branch] + @path = params[:path] + @merge_request = params[:merge_request_id] + + unless can?(current_user, :push_code, project) + @forked_project = ForkProjectsFinder.new(project, current_user: current_user).execute.first + end + end + + def project + strong_memoize(:project) do + next unless params[:project_id].present? + + Project.find_by_full_path(params[:project_id]) + end + end end |