summaryrefslogtreecommitdiff
path: root/app/models/concerns
diff options
context:
space:
mode:
authorMichael Clarke <michael.m.clarke@gmail.com>2014-11-05 20:45:18 +0000
committerMichael Clarke <michael.m.clarke@gmail.com>2015-01-19 21:18:36 +0000
commit505a492cd87be7683827c5f46a05b6a7dddffc86 (patch)
tree3d34981fbfb3e429475d2f6e87da0c63db5b9657 /app/models/concerns
parent465f41673a418096b761d12438301c7b217f9a81 (diff)
downloadgitlab-ce-505a492cd87be7683827c5f46a05b6a7dddffc86.tar.gz
Only count the user's last vote
Diffstat (limited to 'app/models/concerns')
-rw-r--r--app/models/concerns/issuable.rb16
1 files changed, 14 insertions, 2 deletions
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index f49708fd6eb..b8bee0d0ec0 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -88,7 +88,7 @@ module Issuable
# Return the number of -1 comments (downvotes)
def downvotes
- notes.select(&:downvote?).size
+ filter_superceded_votes(notes.select(&:downvote?), notes).size
end
def downvotes_in_percent
@@ -101,7 +101,7 @@ module Issuable
# Return the number of +1 comments (upvotes)
def upvotes
- notes.select(&:upvote?).size
+ filter_superceded_votes(notes.select(&:upvote?), notes).size
end
def upvotes_in_percent
@@ -154,4 +154,16 @@ module Issuable
self.labels << label
end
end
+
+ private
+
+ def filter_superceded_votes(votes, notes)
+ filteredvotes = [] + votes
+ votes.each do |vote|
+ if vote.superceded?(notes)
+ filteredvotes.delete(vote)
+ end
+ end
+ filteredvotes
+ end
end