notify_user
===========
Install:
```
gem 'notify_user'
rails g notify_user:install
```
Getting started:
```
rails g notify_user:notification NewMyProperty
```
Edit views/notify_user/new_my_property/action_mailer/notification.html.erb, e.g.
```
We added <%= @notification.params[:listing_address] %> to your My Properties.
```
Then send:
```
NotifyUser.send_notification('new_my_property').to(user).with("listing_address" => "123 Main St").notify
```
Dynamic email titles use %{tags} that correspond to your params hash (Will throw an exception if key is missing)
```
channel :action_mailer,
subject: "%{name} sent you a message",
aggregate: {
subject: "%{name} sent you %{count} messages"
}
```
To enable APNS add this line to your app/notification/notification_type.rb
```
channel :apns,
aggregate_per: false
```
To run the tests:
```
BUNDLE_GEMFILE=gemfiles/rails40.gemfile bundle install
BUNDLE_GEMFILE=gemfiles/rails40.gemfile bundle exec rspec spec
```
To run the tests like Travis:
```
gem install wwtd
wwtd
```
##Web interface
Display a list of notifications for a logged in user
```
visit /notify_user/notifications
```
Clicking on a notification gets marked as read and taken to the redirect_logic action (notifications_controller.rb)
```
def redirect_logic(notification)
class = notification.params[:type].capitalize.constantize
object = class.find(@notification.params[:id])
redirect_to property_url(object)
end
```
Add line to environment.rb file to configure host url for mail notifications
```
config.action_mailer.default_url_options = { :host => "http://example.com" }
```
##Subscriptions
Unsubscribing from a notification type, first add it to the notify_user.rb initilizer
```
# Override the default notification type
config.unsubscribable_notifications = ['NewPostNotification','NewSale']
```
Users can manage their subscription statuses through the web interface
```
visit notify_user/notifications/unsubscribe
```
Unsubscribe link helper - add this to your views/notify_user/layouts/action_mailer.html.erb
```
<% if is_unsubscribeable? @notification %>
<%= unsubscribe_link(@notification, "Unsubscribe") %>
<% end %>
```
##Upgrading to JSON params data type
Run json_update generator which generates the migrations to change the params datatype to json as well as convert the current data to json
```
rails generate notify_user:json_update
rake db:migrate
```
##Changes
Notification description and aggregates has changed syntax slighly from
```
@@description = "please override this type description"
@@aggregate_per = 10.minutes
```
to
```
self.description = "please override this type description"
self.aggregate_per = 10.minutes
```