diff --git a/app/mailers/application_mailer.rb b/app/mailers/application_mailer.rb index 3c34c8148..24cf3f1a1 100644 --- a/app/mailers/application_mailer.rb +++ b/app/mailers/application_mailer.rb @@ -1,4 +1,7 @@ class ApplicationMailer < ActionMailer::Base - default from: "from@example.com" + default from: "The Fizzy team " + layout "mailer" + append_view_path Rails.root.join("app/views/mailers") + helper AvatarsHelper, HtmlHelper end diff --git a/app/mailers/notification/bundle_mailer.rb b/app/mailers/notification/bundle_mailer.rb index a3e830b16..4947981d5 100644 --- a/app/mailers/notification/bundle_mailer.rb +++ b/app/mailers/notification/bundle_mailer.rb @@ -1,11 +1,12 @@ class Notification::BundleMailer < ApplicationMailer + helper NotificationsHelper + def notification(bundle) @bundle = bundle @notifications = bundle.notifications - - mail( + + mail \ to: bundle.user.email_address, - subject: "You have #{@notifications.count} notifications" - ) + subject: "Recent activity in Fizzy" end -end \ No newline at end of file +end diff --git a/app/models/notification/bundle.rb b/app/models/notification/bundle.rb index 31b16ac7e..74a681888 100644 --- a/app/models/notification/bundle.rb +++ b/app/models/notification/bundle.rb @@ -29,7 +29,9 @@ class Notification::Bundle < ApplicationRecord def deliver processing! - BundleMailer.notification(self).deliver + + BundleMailer.notification(self).deliver if has_unread_notifications? + delivered! end @@ -48,4 +50,8 @@ class Notification::Bundle < ApplicationRecord def window starts_at..ends_at end + + def has_unread_notifications? + notifications.unread.any? + end end diff --git a/app/views/notification/bundle_mailer/_notification.html.erb b/app/views/notification/bundle_mailer/_notification.html.erb new file mode 100644 index 000000000..308cf172f --- /dev/null +++ b/app/views/notification/bundle_mailer/_notification.html.erb @@ -0,0 +1,2 @@ +<%= render "notification/bundle_mailer/notification/#{notification.source_type.underscore}/header", notification: notification %> +<%= render "notification/bundle_mailer/notification/#{notification.source_type.underscore}/body", notification: notification %> diff --git a/app/views/notification/bundle_mailer/notification.html.erb b/app/views/notification/bundle_mailer/notification.html.erb index 1fd9371f0..e638a0724 100644 --- a/app/views/notification/bundle_mailer/notification.html.erb +++ b/app/views/notification/bundle_mailer/notification.html.erb @@ -1,9 +1,5 @@ -

Your Notifications

+

Your Notifications since <%= @bundle.starts_at.strftime("%-l%P on %A, %B %-d") %>

You have <%= @notifications.count %> notifications:

- \ No newline at end of file +<%= render partial: "notification/bundle_mailer/notification", collection: @notifications, as: :notification %> diff --git a/app/views/notification/bundle_mailer/notification/event/_body.html.erb b/app/views/notification/bundle_mailer/notification/event/_body.html.erb new file mode 100644 index 000000000..314a1a6dc --- /dev/null +++ b/app/views/notification/bundle_mailer/notification/event/_body.html.erb @@ -0,0 +1,9 @@ +<% event = notification.source %> + +

+ <%= event_notification_title(event) %> +

+ +

+ <%= event_notification_body(event) %> +

diff --git a/app/views/notification/bundle_mailer/notification/event/_header.html.erb b/app/views/notification/bundle_mailer/notification/event/_header.html.erb new file mode 100644 index 000000000..9c1cc48fd --- /dev/null +++ b/app/views/notification/bundle_mailer/notification/event/_header.html.erb @@ -0,0 +1,6 @@ +

#<%= notification.card.id %> <%= notification.card.collection.name %>

+

+ <%= notification.creator.familiar_name %> + <%= image_tag user_avatar_url(notification.creator), alt: notification.creator.name, size: 48 %> +

+ diff --git a/app/views/notification/bundle_mailer/notification/mention/_body.html.erb b/app/views/notification/bundle_mailer/notification/mention/_body.html.erb new file mode 100644 index 000000000..dae1488bb --- /dev/null +++ b/app/views/notification/bundle_mailer/notification/mention/_body.html.erb @@ -0,0 +1,9 @@ +<% mention = notification.source %> + +

+<%= mention.mentioner.first_name %> mentioned you +

+ +

+<%= mention.source.mentionable_content.truncate(200) %> +

diff --git a/app/views/notification/bundle_mailer/notification/mention/_header.html.erb b/app/views/notification/bundle_mailer/notification/mention/_header.html.erb new file mode 100644 index 000000000..9c1cc48fd --- /dev/null +++ b/app/views/notification/bundle_mailer/notification/mention/_header.html.erb @@ -0,0 +1,6 @@ +

#<%= notification.card.id %> <%= notification.card.collection.name %>

+

+ <%= notification.creator.familiar_name %> + <%= image_tag user_avatar_url(notification.creator), alt: notification.creator.name, size: 48 %> +

+