Fix reply by email for comments on a specific line in a diff/commit.
This commit is contained in:
parent
11bbc06b4b
commit
3377808193
|
@ -12,7 +12,7 @@ module Emails
|
||||||
to: recipient(recipient_id),
|
to: recipient(recipient_id),
|
||||||
subject: subject("#{@commit.title} (#{@commit.short_id})"))
|
subject: subject("#{@commit.title} (#{@commit.short_id})"))
|
||||||
|
|
||||||
SentNotification.record(@commit, recipient_id, reply_key)
|
SentNotification.record_note(@note, recipient_id, reply_key)
|
||||||
end
|
end
|
||||||
|
|
||||||
def note_issue_email(recipient_id, note_id)
|
def note_issue_email(recipient_id, note_id)
|
||||||
|
@ -27,7 +27,7 @@ module Emails
|
||||||
to: recipient(recipient_id),
|
to: recipient(recipient_id),
|
||||||
subject: subject("#{@issue.title} (##{@issue.iid})"))
|
subject: subject("#{@issue.title} (##{@issue.iid})"))
|
||||||
|
|
||||||
SentNotification.record(@issue, recipient_id, reply_key)
|
SentNotification.record_note(@note, recipient_id, reply_key)
|
||||||
end
|
end
|
||||||
|
|
||||||
def note_merge_request_email(recipient_id, note_id)
|
def note_merge_request_email(recipient_id, note_id)
|
||||||
|
@ -43,7 +43,7 @@ module Emails
|
||||||
to: recipient(recipient_id),
|
to: recipient(recipient_id),
|
||||||
subject: subject("#{@merge_request.title} (##{@merge_request.iid})"))
|
subject: subject("#{@merge_request.title} (##{@merge_request.iid})"))
|
||||||
|
|
||||||
SentNotification.record(@merge_request, recipient_id, reply_key)
|
SentNotification.record_note(@note, recipient_id, reply_key)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
# noteable_type :string(255)
|
# noteable_type :string(255)
|
||||||
# recipient_id :integer
|
# recipient_id :integer
|
||||||
# commit_id :string(255)
|
# commit_id :string(255)
|
||||||
|
# line_code :string(255)
|
||||||
# reply_key :string(255) not null
|
# reply_key :string(255) not null
|
||||||
#
|
#
|
||||||
|
|
||||||
|
@ -21,13 +22,14 @@ class SentNotification < ActiveRecord::Base
|
||||||
|
|
||||||
validates :noteable_id, presence: true, unless: :for_commit?
|
validates :noteable_id, presence: true, unless: :for_commit?
|
||||||
validates :commit_id, presence: true, if: :for_commit?
|
validates :commit_id, presence: true, if: :for_commit?
|
||||||
|
validates :line_code, format: { with: /\A[a-z0-9]+_\d+_\d+\Z/ }, allow_blank: true
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def for(reply_key)
|
def for(reply_key)
|
||||||
find_by(reply_key: reply_key)
|
find_by(reply_key: reply_key)
|
||||||
end
|
end
|
||||||
|
|
||||||
def record(noteable, recipient_id, reply_key)
|
def record(noteable, recipient_id, reply_key, params = {})
|
||||||
return unless reply_key
|
return unless reply_key
|
||||||
|
|
||||||
noteable_id = nil
|
noteable_id = nil
|
||||||
|
@ -38,7 +40,7 @@ class SentNotification < ActiveRecord::Base
|
||||||
noteable_id = noteable.id
|
noteable_id = noteable.id
|
||||||
end
|
end
|
||||||
|
|
||||||
create(
|
params.reverse_merge!(
|
||||||
project: noteable.project,
|
project: noteable.project,
|
||||||
noteable_type: noteable.class.name,
|
noteable_type: noteable.class.name,
|
||||||
noteable_id: noteable_id,
|
noteable_id: noteable_id,
|
||||||
|
@ -46,6 +48,14 @@ class SentNotification < ActiveRecord::Base
|
||||||
recipient_id: recipient_id,
|
recipient_id: recipient_id,
|
||||||
reply_key: reply_key
|
reply_key: reply_key
|
||||||
)
|
)
|
||||||
|
|
||||||
|
create(params)
|
||||||
|
end
|
||||||
|
|
||||||
|
def record_note(note, recipient_id, reply_key, params = {})
|
||||||
|
params[:line_code] = note.line_code
|
||||||
|
|
||||||
|
record(note.noteable, recipient_id, reply_key, params)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddLineCodeToSentNotification < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :sent_notifications, :line_code, :string
|
||||||
|
end
|
||||||
|
end
|
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20150920010715) do
|
ActiveRecord::Schema.define(version: 20150920161119) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -623,6 +623,7 @@ ActiveRecord::Schema.define(version: 20150920010715) do
|
||||||
t.integer "recipient_id"
|
t.integer "recipient_id"
|
||||||
t.string "commit_id"
|
t.string "commit_id"
|
||||||
t.string "reply_key", null: false
|
t.string "reply_key", null: false
|
||||||
|
t.string "line_code"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "sent_notifications", ["reply_key"], name: "index_sent_notifications_on_reply_key", unique: true, using: :btree
|
add_index "sent_notifications", ["reply_key"], name: "index_sent_notifications_on_reply_key", unique: true, using: :btree
|
||||||
|
|
|
@ -98,7 +98,8 @@ module Gitlab
|
||||||
note: reply,
|
note: reply,
|
||||||
noteable_type: sent_notification.noteable_type,
|
noteable_type: sent_notification.noteable_type,
|
||||||
noteable_id: sent_notification.noteable_id,
|
noteable_id: sent_notification.noteable_id,
|
||||||
commit_id: sent_notification.commit_id
|
commit_id: sent_notification.commit_id,
|
||||||
|
line_code: sent_notification.line_code
|
||||||
).execute
|
).execute
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue