notifly 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 939b12ea220c250f5b9e543f70c97f344fc0e973
4
- data.tar.gz: 6c827c9a14c21d476ddb6bad7b17a22f29e21fd5
3
+ metadata.gz: 6111c9569a44311f1348d13fe80f7a8463feae4a
4
+ data.tar.gz: 65b36c5d13eb9d42d2cb8a628f39d25361d7c306
5
5
  SHA512:
6
- metadata.gz: 275d3eb8008e16314a5bb02fea4094dea61c905b750d42a2200a1a3d16aa84319943abb33ad76bb266da07f85bd7eb069588cf11d26cae85f6f12b9c1554df5e
7
- data.tar.gz: 262dd1bc12350d735cb64f35322fbcb44fb9aa96666ac5063d492caf16d9b3f69f7f95c5636b6227de190e64b29a2be34d2fbc95dcb48bf092d0a62356ddfe80
6
+ metadata.gz: 09d4e63529826842d329b5663951e99b21748a8ab15785e0544610baea5d435889e9752db0d5bfedb03f4894e9b85ea5d5979a401bc410de3924ceb4d7e40b24
7
+ data.tar.gz: 78e93dcbb853a7afbaf79b6d6973f157b875e77945f9b7d4e40f13b1522e52e78a15d083dbbc51134bf50b805c82287d912aff2827937666353fb0c7f9de8ccb
data/README.md CHANGED
@@ -16,7 +16,7 @@ In actual version, notifications are composed by:
16
16
  - Read: flag that records if the receiver read the notification
17
17
  - Seen: flag that records if the receiver seen the notification
18
18
  - If and Unless: used to create notifications conditionally
19
- - type: helper
19
+ - Kind: an attribute to scope notifications
20
20
 
21
21
 
22
22
  # Install
@@ -65,7 +65,8 @@ class TicketOrder < ActiveRecord::Base
65
65
  notifly before: :destroy, template: :destroy, sender: :buyer, data: :attributes
66
66
  notifly after: :send_gift!, template: :ticket_gift, sender: :buyer,
67
67
  target: :ticket, if: -> { completed? }
68
- notifly after: :accept_gift, sender: :owner, receiver: :buyer, target: :ticket
68
+ notifly after: :accept_gift, sender: -> { self.owner }, receiver: :buyer, target: :ticket,
69
+ then: ->(notification) { self.send_mail_with(notification) }
69
70
 
70
71
  def send_gift!
71
72
  # code here
@@ -74,6 +75,10 @@ class TicketOrder < ActiveRecord::Base
74
75
  def accept_gift
75
76
  # code here
76
77
  end
78
+
79
+ def send_mail_with(notification)
80
+ # code here
81
+ end
77
82
  end
78
83
  ```
79
84
  Value explanation about each parameter:
@@ -86,6 +91,8 @@ Value explanation about each parameter:
86
91
  | `template` | The symbol or string that indicates which partial will be rendered at views. The partial must be inside `app/views/notifly/templates/`. Default is `:default`. |
87
92
  | `target` | The method which returns the notification target object. It's a third actor of the notification. Example: In "Max sent you a ticket" notification, Max is the sender, you are the receiver and the **ticket is the target**. |
88
93
  | `data` | A method which returns a hash with usefull values to be persisted, like ticket price or whatever you want to persist. |
94
+ | `kind` | String used to scope notifications, default is `:notification` and all notifications with default type will be shown in `current_user`'s notifications
95
+ | `then` | Callback that will be executed **after** the notification creation. It can receive a notification as parameter. Right now it only works in the code above.
89
96
 
90
97
  Note that you can use the `default_values` parameter, it is specific to DRY your
91
98
  notiflies and set the values to all notiflies. If you need to overwrite some
@@ -91,17 +91,14 @@ module Notifly
91
91
 
92
92
  def _create_notification_for(fly)
93
93
  new_fly = _default_fly.merge(fly)
94
- notification = Notifly::Notification.create _get_attributes_from(new_fly)
95
94
 
96
- if new_fly.mail.present?
97
- template = new_fly.mail.try(:fetch, :template) || notification.template
95
+ notification = Notifly::Notification.create _get_attributes_from(new_fly)
96
+ _after_create_notification(notification, new_fly)
98
97
 
99
- Notifly::NotificationMailer.notifly to: self.email, template: template,
100
- notification_id: notification.id
101
- end
102
98
  rescue => e
103
99
  logger.error "Something goes wrong with Notifly, will ignore: #{e}"
104
100
  raise e if not Rails.env.production?
101
+
105
102
  end
106
103
 
107
104
  def notifly_notifications(kind=nil)
@@ -137,6 +134,20 @@ module Notifly
137
134
  end
138
135
  end
139
136
  end
137
+
138
+ def _after_create_notification(notification, fly)
139
+ if fly.then.present?
140
+ block = fly.then;
141
+ block.parameters.present? ? instance_exec(notification, &block) : instance_exec(&block)
142
+ end
143
+
144
+ if fly.mail.present?
145
+ template = fly.mail.try(:fetch, :template) || notification.template
146
+
147
+ Notifly::NotificationMailer.notifly to: self.email, template: template,
148
+ notification_id: notification.id
149
+ end
150
+ end
140
151
  end
141
152
  end
142
153
  end
@@ -3,7 +3,7 @@ module Notifly
3
3
  module Options
4
4
  class Fly
5
5
  attr_accessor :before, :after, :template, :sender, :receiver, :target,
6
- :if, :unless, :data, :mail, :kind
6
+ :if, :unless, :data, :mail, :kind, :then
7
7
 
8
8
  def initialize(options={})
9
9
  options = options.fetch(:default_values, options)
@@ -23,7 +23,7 @@ module Notifly
23
23
  end
24
24
 
25
25
  def attributes
26
- no_attrs = [hook, :if, :unless, :mail]
26
+ no_attrs = [hook, :if, :unless, :mail, :then]
27
27
  attrs = instance_values.reject { |key| no_attrs.include? key.to_sym }
28
28
  attrs.merge({mail: get_mail_type})
29
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notifly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Passalini
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-15 00:00:00.000000000 Z
12
+ date: 2014-12-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails