notifiable-core 0.1.5 → 0.2.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
  SHA256:
3
- metadata.gz: ee5fccd800a04500a363939b090a2a9f88faa45c84a6d43af689e0036efe1191
4
- data.tar.gz: a7bf3297962dda646bc268d9ee07a09008f89a917e0450f4c896e85ed57c6ad2
3
+ metadata.gz: 425bb33e77f7b1321f9df9f3dd7f0cfc59804f3bfbd3e156b19f25f464a2a640
4
+ data.tar.gz: fa9dd36fd58bb92a5f751d015ded197823bb5cd7481d0a662f8da9e6b40498f6
5
5
  SHA512:
6
- metadata.gz: f3816a57d151d68f66dce06cdf8210a773a03e965b08cb91955a6baa788ce8c04d3c7d9e5b0ba0f1495814986cf9deeee91a9a85a27f25c78691cf1bbdcbabee
7
- data.tar.gz: 119f7f22adc594d0af15b16b5f7c2811cf256184138623c0f788573690eb8a8600f0b18f8aae952f082068116ee84d1d03d49c481d1ae09b2a2c853e5ab593bf
6
+ metadata.gz: f06b405186be419fffbfc69af22cb287406714e480e072aa227fe8a5ff12d3fc451c45f8ff0aa1e653f74a6b3d32f6d0396ea8439e3aeb4212df0ead0e855317
7
+ data.tar.gz: 9980a92f754834eca0e6bdf408bfcd794860c653c6f9335655e3015fc940336e341100c9031087ead98cf4ba9ffe72effb1702ec8991537a586b41be21da28b9
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddErrorCodeToNotificationStatuses < ActiveRecord::Migration[4.2]
4
+ def change
5
+ rename_column :notifiable_statuses, :status, :error_code
6
+ add_column :notifiable_statuses, :status, :integer
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddDeliveredCountToNotifications < ActiveRecord::Migration[4.2]
4
+ def change
5
+ add_column :notifiable_notifications, :delivered_count, :integer, default: 0
6
+ end
7
+ end
@@ -46,6 +46,16 @@ module Notifiable
46
46
  def send_params
47
47
  @send_params ||= (parameters || {}).merge(n_id: id)
48
48
  end
49
+
50
+ def delivered!(device_token)
51
+ increment!(:delivered_count)
52
+ notification_statuses.find_by(device_token: device_token).delivered! if notification_statuses.exists?(device_token: device_token)
53
+ end
54
+
55
+ def opened!(device_token)
56
+ increment!(:opened_count)
57
+ notification_statuses.find_by(device_token: device_token).opened! if notification_statuses.exists?(device_token: device_token)
58
+ end
49
59
 
50
60
  private
51
61
 
@@ -2,7 +2,12 @@
2
2
 
3
3
  module Notifiable
4
4
  class NotificationStatus < ActiveRecord::Base
5
- self.table_name_prefix = 'notifiable_'
5
+ self.table_name = 'notifiable_statuses'
6
+
7
+ REJECTED_STATUS = 1
8
+ SENT_STATUS = 2
9
+ DELIVERED_STATUS = 3
10
+ OPENED_STATUS = 4
6
11
 
7
12
  belongs_to :notification, class_name: 'Notifiable::Notification'
8
13
  validates :notification, presence: true
@@ -10,15 +15,20 @@ module Notifiable
10
15
  belongs_to :device_token, class_name: 'Notifiable::DeviceToken'
11
16
  validates :device_token, presence: true
12
17
 
13
- self.table_name = 'notifiable_statuses'
14
-
15
- def opened!
16
- update_attribute(:status, -1)
17
- notification.increment!(:opened_count)
18
+ def rejected!
19
+ update_attributes(status: REJECTED_STATUS)
18
20
  end
19
21
 
20
- def opened?
21
- status == -1
22
+ def sent!
23
+ update_attributes(status: SENT_STATUS)
24
+ end
25
+
26
+ def delivered!
27
+ update_attributes(status: DELIVERED_STATUS)
28
+ end
29
+
30
+ def opened!
31
+ update_attributes(status: OPENED_STATUS)
22
32
  end
23
33
  end
24
34
  end
@@ -2,9 +2,7 @@
2
2
  require 'logger'
3
3
 
4
4
  module Notifiable
5
- class NotifierBase
6
- OK_STATUS = 0
7
-
5
+ class NotifierBase
8
6
  attr_reader :env, :notification
9
7
 
10
8
  def self.notifier_attribute(*vars)
@@ -43,14 +41,14 @@ module Notifiable
43
41
 
44
42
  def flush; end
45
43
 
46
- def processed(device_token, status = OK_STATUS, error_message = nil)
44
+ def processed(device_token, status = NotificationStatus::SENT_STATUS, error_code = nil, error_message = nil)
47
45
  if @notification.app.save_notification_statuses
48
- receipts << { notification_id: notification.id, device_token_id: device_token.id, status: status, created_at: DateTime.now, error_message: error_message }
46
+ receipts << { notification_id: notification.id, device_token_id: device_token.id, status: status, created_at: DateTime.now, error_code: error_code, error_message: error_message }
49
47
  save_receipts if receipts.count >= Notifiable.notification_status_batch_size
50
48
  end
51
49
 
52
50
  @notification.sent_count += 1
53
- @notification.gateway_accepted_count += 1 if status == 0
51
+ @notification.gateway_accepted_count += 1 if status == NotificationStatus::SENT_STATUS
54
52
  @notification.save if @notification.sent_count % Notifiable.notification_status_batch_size == 0
55
53
  end
56
54
 
@@ -1,3 +1,3 @@
1
1
  module Notifiable
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notifiable-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brooke-Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-27 00:00:00.000000000 Z
11
+ date: 2018-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -178,6 +178,20 @@ dependencies:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: byebug
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
181
195
  description:
182
196
  email:
183
197
  - matt@futureworkshops.com
@@ -202,6 +216,8 @@ files:
202
216
  - db/migrate/201806242135000_add_category_to_notifications.rb
203
217
  - db/migrate/201808242135000_add_error_message_to_notification_statuses.rb
204
218
  - db/migrate/201808272135000_add_status_to_notifications.rb
219
+ - db/migrate/201809032135000_add_error_code_to_notification_statuses.rb
220
+ - db/migrate/201809032235000_add_delivered_count_to_notifications.rb
205
221
  - lib/notifiable.rb
206
222
  - lib/notifiable/app.rb
207
223
  - lib/notifiable/device_token.rb