summaryrefslogtreecommitdiff
path: root/app/controllers/ide_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/ide_controller.rb')
-rw-r--r--app/controllers/ide_controller.rb24
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