From e223dc9260a64b3986ffefaf43201d6b0521c783 Mon Sep 17 00:00:00 2001 From: Paco Guzman Date: Thu, 21 Jul 2016 15:11:46 +0200 Subject: Cache Highlighted Diff Lines when reload MR content --- app/helpers/diff_helper.rb | 3 ++- app/models/merge_request.rb | 2 ++ app/services/merge_requests/merge_request_diff_cache_service.rb | 9 +++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 app/services/merge_requests/merge_request_diff_cache_service.rb diff --git a/app/helpers/diff_helper.rb b/app/helpers/diff_helper.rb index 75b029365f9..b2af1294fe6 100644 --- a/app/helpers/diff_helper.rb +++ b/app/helpers/diff_helper.rb @@ -30,7 +30,8 @@ module DiffHelper options[:paths] = params.values_at(:old_path, :new_path) end - Commit.max_diff_options.merge(options) + # Select truthy values those are the ones that makes a change + Commit.max_diff_options.merge(options).select { |_, v| v } end def safe_diff_files(diffs, diff_refs: nil, repository: nil) diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index daee7289c32..dfd93c6de10 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -342,6 +342,8 @@ class MergeRequest < ActiveRecord::Base merge_request_diff.reload_content + MergeRequests::MergeRequestDiffCacheService.new.execute(merge_request) + new_diff_refs = self.diff_refs update_diff_notes_positions( diff --git a/app/services/merge_requests/merge_request_diff_cache_service.rb b/app/services/merge_requests/merge_request_diff_cache_service.rb new file mode 100644 index 00000000000..e8e4cd13cd1 --- /dev/null +++ b/app/services/merge_requests/merge_request_diff_cache_service.rb @@ -0,0 +1,9 @@ +module MergeRequests + class MergeRequestDiffCacheService + def execute(merge_request) + # REVIEW how do we share default options here and in the controllers + # We store by calculating the cache + merge_request.highlighted_safe_diff_files(Commit.max_diff_options) + end + end +end -- cgit v1.2.1