Commit fc1c250d404902c9b34ccd28d9cfea7108f80831
1 parent
63dac843
Exists in
master
and in
4 other branches
Reorder Note methods and add helpers
Showing
1 changed file
with
58 additions
and
27 deletions
Show diff stats
app/models/note.rb
| ... | ... | @@ -18,7 +18,6 @@ require 'carrierwave/orm/activerecord' |
| 18 | 18 | require 'file_size_validator' |
| 19 | 19 | |
| 20 | 20 | class Note < ActiveRecord::Base |
| 21 | - | |
| 22 | 21 | attr_accessible :note, :noteable, :noteable_id, :noteable_type, :project_id, |
| 23 | 22 | :attachment, :line_code |
| 24 | 23 | |
| ... | ... | @@ -55,12 +54,58 @@ class Note < ActiveRecord::Base |
| 55 | 54 | }, without_protection: true) |
| 56 | 55 | end |
| 57 | 56 | |
| 58 | - def notify | |
| 59 | - @notify ||= false | |
| 57 | + def commit_author | |
| 58 | + @commit_author ||= | |
| 59 | + project.users.find_by_email(noteable.author_email) || | |
| 60 | + project.users.find_by_name(noteable.author_name) | |
| 61 | + rescue | |
| 62 | + nil | |
| 60 | 63 | end |
| 61 | 64 | |
| 62 | - def notify_author | |
| 63 | - @notify_author ||= false | |
| 65 | + def diff | |
| 66 | + noteable.diffs[diff_file_index] | |
| 67 | + end | |
| 68 | + | |
| 69 | + def diff_file_index | |
| 70 | + line_code.split('_')[0].to_i | |
| 71 | + end | |
| 72 | + | |
| 73 | + def diff_file_name | |
| 74 | + diff.b_path | |
| 75 | + end | |
| 76 | + | |
| 77 | + def diff_new_line | |
| 78 | + line_code.split('_')[2].to_i | |
| 79 | + end | |
| 80 | + | |
| 81 | + def discussion_id | |
| 82 | + @discussion_id ||= [noteable_type, noteable_id, line_code].join.underscore.to_sym | |
| 83 | + end | |
| 84 | + | |
| 85 | + # Returns true if this is a downvote note, | |
| 86 | + # otherwise false is returned | |
| 87 | + def downvote? | |
| 88 | + note.start_with?('-1') || note.start_with?(':-1:') | |
| 89 | + end | |
| 90 | + | |
| 91 | + def for_commit? | |
| 92 | + noteable_type == "Commit" | |
| 93 | + end | |
| 94 | + | |
| 95 | + def for_commit_diff_line? | |
| 96 | + for_commit? && for_diff_line? | |
| 97 | + end | |
| 98 | + | |
| 99 | + def for_diff_line? | |
| 100 | + line_code.present? | |
| 101 | + end | |
| 102 | + | |
| 103 | + def for_merge_request? | |
| 104 | + noteable_type == "MergeRequest" | |
| 105 | + end | |
| 106 | + | |
| 107 | + def for_merge_request_diff_line? | |
| 108 | + for_merge_request? && for_diff_line? | |
| 64 | 109 | end |
| 65 | 110 | |
| 66 | 111 | # override to return commits, which are not active record |
| ... | ... | @@ -76,6 +121,14 @@ class Note < ActiveRecord::Base |
| 76 | 121 | nil |
| 77 | 122 | end |
| 78 | 123 | |
| 124 | + def notify | |
| 125 | + @notify ||= false | |
| 126 | + end | |
| 127 | + | |
| 128 | + def notify_author | |
| 129 | + @notify_author ||= false | |
| 130 | + end | |
| 131 | + | |
| 79 | 132 | # Check if we can notify commit author |
| 80 | 133 | # with email about our comment |
| 81 | 134 | # |
| ... | ... | @@ -94,31 +147,9 @@ class Note < ActiveRecord::Base |
| 94 | 147 | commit_author.email != user.email |
| 95 | 148 | end |
| 96 | 149 | |
| 97 | - def for_commit? | |
| 98 | - noteable_type == "Commit" | |
| 99 | - end | |
| 100 | - | |
| 101 | - def for_diff_line? | |
| 102 | - line_code.present? | |
| 103 | - end | |
| 104 | - | |
| 105 | - def commit_author | |
| 106 | - @commit_author ||= | |
| 107 | - project.users.find_by_email(noteable.author_email) || | |
| 108 | - project.users.find_by_name(noteable.author_name) | |
| 109 | - rescue | |
| 110 | - nil | |
| 111 | - end | |
| 112 | - | |
| 113 | 150 | # Returns true if this is an upvote note, |
| 114 | 151 | # otherwise false is returned |
| 115 | 152 | def upvote? |
| 116 | 153 | note.start_with?('+1') || note.start_with?(':+1:') |
| 117 | 154 | end |
| 118 | - | |
| 119 | - # Returns true if this is a downvote note, | |
| 120 | - # otherwise false is returned | |
| 121 | - def downvote? | |
| 122 | - note.start_with?('-1') || note.start_with?(':-1:') | |
| 123 | - end | |
| 124 | 155 | end | ... | ... |