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 | ... | ... |