summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@selenight.nl>2017-08-17 19:26:45 +0200
committerDouwe Maan <douwe@selenight.nl>2017-08-17 19:26:45 +0200
commit5f758aff57dc54df7d92d0fb63e706d58cf1093d (patch)
tree5eb0e5f786e37c2f8e72a6dea13fac0408da982e
parent9c22974cd14f41ed156ced0a6742dbae7412b0db (diff)
downloadgitlab-ce-5f758aff57dc54df7d92d0fb63e706d58cf1093d.tar.gz
Prefer polymorphism over `is_a?`
-rw-r--r--app/controllers/concerns/notes_actions.rb4
-rw-r--r--app/models/award_emoji.rb2
-rw-r--r--app/models/concerns/noteable.rb4
-rw-r--r--app/models/issue.rb4
-rw-r--r--app/models/note.rb6
5 files changed, 14 insertions, 6 deletions
diff --git a/app/controllers/concerns/notes_actions.rb b/app/controllers/concerns/notes_actions.rb
index 29142e70ed8..c568b401a2f 100644
--- a/app/controllers/concerns/notes_actions.rb
+++ b/app/controllers/concerns/notes_actions.rb
@@ -18,7 +18,7 @@ module NotesActions
@notes = prepare_notes_for_rendering(@notes)
notes_json[:notes] =
- if noteable.is_a?(Issue)
+ if noteable.discussions_rendered_on_frontend?
note_serializer.represent(@notes)
else
@notes.map { |note| note_json(note) }
@@ -87,7 +87,7 @@ module NotesActions
if note.persisted?
attrs[:valid] = true
- if noteable.is_a?(Issue)
+ if noteable.discussions_rendered_on_frontend?
attrs.merge!(note_serializer.represent(note))
else
attrs.merge!(
diff --git a/app/models/award_emoji.rb b/app/models/award_emoji.rb
index 1f07caf3366..b4e8bf836c2 100644
--- a/app/models/award_emoji.rb
+++ b/app/models/award_emoji.rb
@@ -37,7 +37,7 @@ class AwardEmoji < ActiveRecord::Base
end
def expire_etag_cache
- return unless awardable.is_a?(Note)
+ return unless awardable.respond_to?(:expire_etag_cache)
awardable.expire_etag_cache
end
diff --git a/app/models/concerns/noteable.rb b/app/models/concerns/noteable.rb
index a30deffec7b..1c4ddabcad5 100644
--- a/app/models/concerns/noteable.rb
+++ b/app/models/concerns/noteable.rb
@@ -24,6 +24,10 @@ module Noteable
DiscussionNote::NOTEABLE_TYPES.include?(base_class_name)
end
+ def discussions_rendered_on_frontend?
+ false
+ end
+
def discussion_notes
notes
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 1c948c8957e..2f7624ae2bb 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -269,6 +269,10 @@ class Issue < ActiveRecord::Base
end
end
+ def discussions_rendered_on_frontend?
+ true
+ end
+
private
# Returns `true` if the given User can read the current Issue.
diff --git a/app/models/note.rb b/app/models/note.rb
index aa8e03ce302..d807d5ad618 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -300,12 +300,12 @@ class Note < ActiveRecord::Base
end
def expire_etag_cache
- return unless for_issue?
+ return unless noteable.discussions_rendered_on_frontend?
key = Gitlab::Routing.url_helpers.project_noteable_notes_path(
- noteable.project,
+ project,
target_type: noteable_type.underscore,
- target_id: noteable.id
+ target_id: noteable_id
)
Gitlab::EtagCaching::Store.new.touch(key)
end