summaryrefslogtreecommitdiff
path: root/app/controllers/projects/merge_requests/diffs_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/projects/merge_requests/diffs_controller.rb')
-rw-r--r--app/controllers/projects/merge_requests/diffs_controller.rb16
1 files changed, 15 insertions, 1 deletions
diff --git a/app/controllers/projects/merge_requests/diffs_controller.rb b/app/controllers/projects/merge_requests/diffs_controller.rb
index da19ddf6105..9180b3f6b62 100644
--- a/app/controllers/projects/merge_requests/diffs_controller.rb
+++ b/app/controllers/projects/merge_requests/diffs_controller.rb
@@ -11,6 +11,8 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
around_action :allow_gitaly_ref_name_caching
+ after_action :track_viewed_diffs_events, only: [:diffs_batch]
+
def show
render_diffs
end
@@ -163,7 +165,7 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
end
def render_merge_ref_head_diff?
- Gitlab::Utils.to_boolean(params[:diff_head]) && @merge_request.diffable_merge_ref?
+ Gitlab::Utils.to_boolean(params[:diff_head]) && @merge_request.diffable_merge_ref? && @start_sha.nil?
end
def note_positions
@@ -188,4 +190,16 @@ class Projects::MergeRequests::DiffsController < Projects::MergeRequests::Applic
Discussions::CaptureDiffNotePositionsService.new(@merge_request).execute
end
+
+ def track_viewed_diffs_events
+ return if request.headers['DNT'] == '1'
+
+ Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter
+ .track_mr_diffs_action(merge_request: @merge_request)
+
+ return unless current_user&.view_diffs_file_by_file
+
+ Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter
+ .track_mr_diffs_single_file_action(merge_request: @merge_request, user: current_user)
+ end
end