summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-02-07 18:59:42 +0000
committerStan Hu <stanhu@gmail.com>2018-02-07 18:59:42 +0000
commit714d8e95f6de31ed2686f1b2ca05cb5d1f68c878 (patch)
tree508a6b286e32482af5c69c7b6791c271b5cca763
parent8900b23eab6abd5a6c01278fa0da18d5bed98491 (diff)
parentfd372ce3957dd810c9f774944d68aaed6fd46d98 (diff)
downloadgitlab-ce-714d8e95f6de31ed2686f1b2ca05cb5d1f68c878.tar.gz
Merge branch 'osw-remove-duplicate-can-be-reverted-calls' into 'master'
Remove duplicate calls of MergeRequest#can_be_reverted? on MR widget endpoint See merge request gitlab-org/gitlab-ce!16975
-rw-r--r--app/presenters/merge_request_presenter.rb11
-rw-r--r--changelogs/unreleased/osw-remove-duplicate-can-be-reverted-calls.yml5
2 files changed, 14 insertions, 2 deletions
diff --git a/app/presenters/merge_request_presenter.rb b/app/presenters/merge_request_presenter.rb
index c6806b7cc26..08ae49562c7 100644
--- a/app/presenters/merge_request_presenter.rb
+++ b/app/presenters/merge_request_presenter.rb
@@ -3,6 +3,7 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
include GitlabRoutingHelper
include MarkupHelper
include TreeHelper
+ include Gitlab::Utils::StrongMemoize
presents :merge_request
@@ -43,7 +44,7 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
end
def revert_in_fork_path
- if user_can_fork_project? && can_be_reverted?(current_user)
+ if user_can_fork_project? && cached_can_be_reverted?
continue_params = {
to: merge_request_path(merge_request),
notice: "#{edit_in_new_fork_notice} Try to cherry-pick this commit again.",
@@ -151,7 +152,7 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
end
def can_revert_on_current_merge_request?
- user_can_collaborate_with_project? && can_be_reverted?(current_user)
+ user_can_collaborate_with_project? && cached_can_be_reverted?
end
def can_cherry_pick_on_current_merge_request?
@@ -164,6 +165,12 @@ class MergeRequestPresenter < Gitlab::View::Presenter::Delegated
private
+ def cached_can_be_reverted?
+ strong_memoize(:can_be_reverted) do
+ can_be_reverted?(current_user)
+ end
+ end
+
def conflicts
@conflicts ||= MergeRequests::Conflicts::ListService.new(merge_request)
end
diff --git a/changelogs/unreleased/osw-remove-duplicate-can-be-reverted-calls.yml b/changelogs/unreleased/osw-remove-duplicate-can-be-reverted-calls.yml
new file mode 100644
index 00000000000..03940555162
--- /dev/null
+++ b/changelogs/unreleased/osw-remove-duplicate-can-be-reverted-calls.yml
@@ -0,0 +1,5 @@
+---
+title: Remove duplicate calls of MergeRequest#can_be_reverted?
+merge_request:
+author:
+type: performance