From 616675b4a6ef63abed2d133333fe5f5fbe1d73c6 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 17 Nov 2015 11:55:43 +0100 Subject: Remove duplication in mailers/emails/notes.rb Signed-off-by: Dmitriy Zaporozhets --- app/mailers/emails/issues.rb | 22 +++++++------ app/mailers/emails/notes.rb | 75 +++++++++++++++++++++++--------------------- 2 files changed, 52 insertions(+), 45 deletions(-) (limited to 'app/mailers') diff --git a/app/mailers/emails/issues.rb b/app/mailers/emails/issues.rb index 11533bc53c6..abdeefed5ef 100644 --- a/app/mailers/emails/issues.rb +++ b/app/mailers/emails/issues.rb @@ -1,34 +1,36 @@ module Emails module Issues def new_issue_email(recipient_id, issue_id) - mail_with_notification(issue_id, recipient_id) do - mail_new_thread(@issue, thread_options(@issue.author_id, recipient_id)) + issue_mail_with_notification(issue_id, recipient_id) do + mail_new_thread(@issue, issue_thread_options(@issue.author_id, recipient_id)) end end def reassigned_issue_email(recipient_id, issue_id, previous_assignee_id, updated_by_user_id) - mail_with_notification(issue_id, recipient_id) do + issue_mail_with_notification(issue_id, recipient_id) do @previous_assignee = User.find_by(id: previous_assignee_id) if previous_assignee_id - mail_answer_thread(@issue, thread_options(updated_by_user_id, recipient_id)) + mail_answer_thread(@issue, issue_thread_options(updated_by_user_id, recipient_id)) end end def closed_issue_email(recipient_id, issue_id, updated_by_user_id) - mail_with_notification(issue_id, recipient_id) do + issue_mail_with_notification(issue_id, recipient_id) do @updated_by = User.find updated_by_user_id - mail_answer_thread(@issue, thread_options(updated_by_user_id, recipient_id)) + mail_answer_thread(@issue, issue_thread_options(updated_by_user_id, recipient_id)) end end def issue_status_changed_email(recipient_id, issue_id, status, updated_by_user_id) - mail_with_notification(issue_id, recipient_id) do + issue_mail_with_notification(issue_id, recipient_id) do @issue_status = status @updated_by = User.find updated_by_user_id - mail_answer_thread(@issue, thread_options(updated_by_user_id, recipient_id)) + mail_answer_thread(@issue, issue_thread_options(updated_by_user_id, recipient_id)) end end - def thread_options(sender_id, recipient_id) + private + + def issue_thread_options(sender_id, recipient_id) { from: sender(sender_id), to: recipient(recipient_id), @@ -36,7 +38,7 @@ module Emails } end - def mail_with_notification(issue_id, recipient_id) + def issue_mail_with_notification(issue_id, recipient_id) @issue = Issue.find(issue_id) @project = @issue.project @target_url = namespace_project_issue_url(@project.namespace, @project, @issue) diff --git a/app/mailers/emails/notes.rb b/app/mailers/emails/notes.rb index 87ba94a583d..65f37e92677 100644 --- a/app/mailers/emails/notes.rb +++ b/app/mailers/emails/notes.rb @@ -1,49 +1,54 @@ module Emails module Notes def note_commit_email(recipient_id, note_id) - @note = Note.find(note_id) - @commit = @note.noteable - @project = @note.project - @target_url = namespace_project_commit_url(@project.namespace, @project, - @commit, anchor: - "note_#{@note.id}") - mail_answer_thread(@commit, - from: sender(@note.author_id), - to: recipient(recipient_id), - subject: subject("#{@commit.title} (#{@commit.short_id})")) - - SentNotification.record_note(@note, recipient_id, reply_key) + note_mail_with_notification(note_id, recipient_id) do + @commit = @note.noteable + @target_url = namespace_project_commit_url(*note_target_url_options) + + mail_answer_thread(@commit, + from: sender(@note.author_id), + to: recipient(recipient_id), + subject: subject("#{@commit.title} (#{@commit.short_id})")) + end end def note_issue_email(recipient_id, note_id) - @note = Note.find(note_id) - @issue = @note.noteable - @project = @note.project - @target_url = namespace_project_issue_url(@project.namespace, @project, - @issue, anchor: - "note_#{@note.id}") - mail_answer_thread(@issue, - from: sender(@note.author_id), - to: recipient(recipient_id), - subject: subject("#{@issue.title} (##{@issue.iid})")) - - SentNotification.record_note(@note, recipient_id, reply_key) + note_mail_with_notification(note_id, recipient_id) do + @issue = @note.noteable + @target_url = namespace_project_issue_url(*note_target_url_options) + mail_answer_thread(@issue, note_thread_options(recipient_id)) + end end def note_merge_request_email(recipient_id, note_id) + note_mail_with_notification(note_id, recipient_id) do + @merge_request = @note.noteable + @target_url = namespace_project_merge_request_url(*note_target_url_options) + mail_answer_thread(@merge_request, note_thread_options(recipient_id)) + end + end + + private + + def note_target_url_options + [@project.namespace, @project, @note.noteable, anchor: "note_#{@note.id}"] + end + + def note_thread_options(recipient_id) + { + from: sender(@note.author_id), + to: recipient(recipient_id), + subject: subject("#{@note.noteable.title} (##{@note.noteable.iid})") + } + end + + def note_mail_with_notification(note_id, recipient_id) @note = Note.find(note_id) - @merge_request = @note.noteable @project = @note.project - @target_url = namespace_project_merge_request_url(@project.namespace, - @project, - @merge_request, anchor: - "note_#{@note.id}") - mail_answer_thread(@merge_request, - from: sender(@note.author_id), - to: recipient(recipient_id), - subject: subject("#{@merge_request.title} (##{@merge_request.iid})")) - - SentNotification.record_note(@note, recipient_id, reply_key) + + yield + + SentNotification.record(@note, recipient_id, reply_key) end end end -- cgit v1.2.3