activity_notification 2.1.2 → 2.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +10 -16
  3. data/CHANGELOG.md +52 -0
  4. data/Gemfile +2 -3
  5. data/README.md +2 -2
  6. data/activity_notification.gemspec +1 -1
  7. data/app/channels/activity_notification/notification_api_with_devise_channel.rb +1 -1
  8. data/app/channels/activity_notification/notification_channel.rb +1 -1
  9. data/app/channels/activity_notification/notification_with_devise_channel.rb +1 -1
  10. data/app/controllers/activity_notification/notifications_controller.rb +0 -20
  11. data/app/controllers/activity_notification/subscriptions_api_controller.rb +1 -1
  12. data/app/controllers/activity_notification/subscriptions_controller.rb +2 -2
  13. data/app/views/activity_notification/subscriptions/default/_form.html.erb +1 -1
  14. data/app/views/activity_notification/subscriptions/default/_notification_keys.html.erb +2 -2
  15. data/app/views/activity_notification/subscriptions/default/_subscription.html.erb +2 -2
  16. data/app/views/activity_notification/subscriptions/default/index.html.erb +2 -2
  17. data/app/views/activity_notification/subscriptions/default/show.html.erb +2 -2
  18. data/bin/bundle_update.sh +0 -1
  19. data/docs/Functions.md +19 -3
  20. data/docs/Setup.md +190 -63
  21. data/gemfiles/Gemfile.rails-5.0 +3 -1
  22. data/gemfiles/Gemfile.rails-5.1 +3 -1
  23. data/gemfiles/Gemfile.rails-5.2 +3 -1
  24. data/gemfiles/Gemfile.rails-6.0 +2 -3
  25. data/gemfiles/{Gemfile.rails-4.2 → Gemfile.rails-6.1} +4 -5
  26. data/lib/activity_notification/apis/notification_api.rb +7 -0
  27. data/lib/activity_notification/apis/subscription_api.rb +5 -5
  28. data/lib/activity_notification/common.rb +15 -4
  29. data/lib/activity_notification/config.rb +53 -23
  30. data/lib/activity_notification/controllers/common_controller.rb +2 -18
  31. data/lib/activity_notification/models/concerns/notifiable.rb +12 -12
  32. data/lib/activity_notification/models/concerns/subscriber.rb +6 -4
  33. data/lib/activity_notification/models/concerns/swagger/notification_schema.rb +34 -34
  34. data/lib/activity_notification/models/concerns/swagger/subscription_schema.rb +17 -17
  35. data/lib/activity_notification/models/concerns/target.rb +8 -12
  36. data/lib/activity_notification/optional_targets/action_cable_api_channel.rb +1 -1
  37. data/lib/activity_notification/optional_targets/action_cable_channel.rb +1 -1
  38. data/lib/activity_notification/orm/active_record.rb +1 -1
  39. data/lib/activity_notification/orm/active_record/notification.rb +3 -3
  40. data/lib/activity_notification/orm/dynamoid.rb +10 -3
  41. data/lib/activity_notification/orm/dynamoid/notification.rb +49 -14
  42. data/lib/activity_notification/orm/dynamoid/subscription.rb +2 -2
  43. data/lib/activity_notification/orm/mongoid.rb +10 -3
  44. data/lib/activity_notification/orm/mongoid/notification.rb +8 -6
  45. data/lib/activity_notification/orm/mongoid/subscription.rb +1 -1
  46. data/lib/activity_notification/renderable.rb +2 -2
  47. data/lib/activity_notification/roles/acts_as_notifiable.rb +13 -16
  48. data/lib/activity_notification/version.rb +1 -1
  49. data/lib/generators/templates/activity_notification.rb +11 -1
  50. data/lib/generators/templates/migrations/migration.rb +1 -1
  51. data/spec/channels/notification_api_channel_spec.rb +42 -44
  52. data/spec/channels/notification_api_with_devise_channel_spec.rb +57 -59
  53. data/spec/channels/notification_channel_spec.rb +41 -43
  54. data/spec/channels/notification_with_devise_channel_spec.rb +75 -77
  55. data/spec/concerns/apis/subscription_api_spec.rb +144 -2
  56. data/spec/concerns/common_spec.rb +25 -3
  57. data/spec/concerns/models/notifiable_spec.rb +35 -35
  58. data/spec/concerns/models/subscriber_spec.rb +179 -6
  59. data/spec/concerns/models/target_spec.rb +10 -12
  60. data/spec/concerns/renderable_spec.rb +5 -5
  61. data/spec/config_spec.rb +26 -15
  62. data/spec/controllers/controller_spec_utility.rb +15 -51
  63. data/spec/generators/migration/migration_generator_spec.rb +2 -10
  64. data/spec/helpers/view_helpers_spec.rb +1 -1
  65. data/spec/optional_targets/action_cable_api_channel_spec.rb +21 -24
  66. data/spec/optional_targets/action_cable_channel_spec.rb +26 -29
  67. data/spec/rails_app/app/controllers/users_controller.rb +5 -0
  68. data/spec/rails_app/app/javascript/App.vue +8 -72
  69. data/spec/rails_app/app/javascript/components/DeviseTokenAuth.vue +3 -4
  70. data/spec/rails_app/app/javascript/components/Top.vue +2 -3
  71. data/spec/rails_app/app/javascript/packs/spa.js +6 -3
  72. data/spec/rails_app/app/javascript/router/index.js +73 -0
  73. data/spec/rails_app/app/javascript/store/{auth.js → index.js} +0 -0
  74. data/spec/rails_app/app/models/dummy/dummy_group.rb +8 -0
  75. data/spec/rails_app/app/models/dummy/dummy_notifiable_target.rb +8 -0
  76. data/spec/rails_app/app/models/user.rb +2 -1
  77. data/spec/rails_app/config/application.rb +6 -7
  78. data/spec/rails_app/config/dynamoid.rb +11 -3
  79. data/spec/rails_app/config/environments/production.rb +3 -0
  80. data/spec/rails_app/config/environments/test.rb +2 -11
  81. data/spec/rails_app/config/initializers/activity_notification.rb +13 -3
  82. data/spec/rails_app/config/routes.rb +5 -1
  83. data/spec/rails_app/db/seeds.rb +9 -2
  84. data/spec/rails_app/package.json +14 -14
  85. data/spec/roles/acts_as_notifiable_spec.rb +5 -5
  86. data/spec/spec_helper.rb +1 -5
  87. metadata +12 -12
  88. data/spec/support/patch_rails_42_action_controller_test_response.rb +0 -11
@@ -11,13 +11,15 @@ group :development do
11
11
  end
12
12
 
13
13
  group :test do
14
+ gem 'rspec-rails', '< 4.0.0'
14
15
  gem 'rails-controller-testing'
15
16
  gem 'action-cable-testing'
16
17
  gem 'ammeter'
17
18
  gem 'timecop'
18
19
  gem 'committee'
19
20
  gem 'committee-rails'
20
- gem 'coveralls', require: false
21
+ # gem 'coveralls', require: false
22
+ gem 'coveralls_reborn', require: false
21
23
  end
22
24
 
23
25
  gem 'dotenv-rails', groups: [:development, :test]
@@ -10,13 +10,15 @@ group :development do
10
10
  end
11
11
 
12
12
  group :test do
13
+ gem 'rspec-rails', '< 4.0.0'
13
14
  gem 'rails-controller-testing'
14
15
  gem 'action-cable-testing'
15
16
  gem 'ammeter'
16
17
  gem 'timecop'
17
18
  gem 'committee'
18
19
  gem 'committee-rails'
19
- gem 'coveralls', require: false
20
+ # gem 'coveralls', require: false
21
+ gem 'coveralls_reborn', require: false
20
22
  end
21
23
 
22
24
  gem 'dotenv-rails', groups: [:development, :test]
@@ -10,13 +10,15 @@ group :development do
10
10
  end
11
11
 
12
12
  group :test do
13
+ gem 'rspec-rails', '< 4.0.0'
13
14
  gem 'rails-controller-testing'
14
15
  gem 'action-cable-testing'
15
16
  gem 'ammeter'
16
17
  gem 'timecop'
17
18
  gem 'committee'
18
19
  gem 'committee-rails'
19
- gem 'coveralls', require: false
20
+ # gem 'coveralls', require: false
21
+ gem 'coveralls_reborn', require: false
20
22
  end
21
23
 
22
24
  gem 'dotenv-rails', groups: [:development, :test]
@@ -10,14 +10,13 @@ group :development do
10
10
  end
11
11
 
12
12
  group :test do
13
- #TODO https://github.com/rails/rails/issues/35417
14
- gem 'rspec-rails', '4.0.0.beta4'
15
13
  gem 'rails-controller-testing'
16
14
  gem 'ammeter'
17
15
  gem 'timecop'
18
16
  gem 'committee'
19
17
  gem 'committee-rails'
20
- gem 'coveralls', require: false
18
+ # gem 'coveralls', require: false
19
+ gem 'coveralls_reborn', require: false
21
20
  end
22
21
 
23
22
  gem 'dotenv-rails', groups: [:development, :test]
@@ -2,10 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec path: '../'
4
4
 
5
- gem 'rails', '~> 4.2.0'
6
- gem 'sqlite3', '~> 1.3.13'
7
- gem 'mysql2', '~> 0.4.10'
8
- gem 'pg', '~> 0.21.0'
5
+ gem 'rails', '~> 6.1.0'
9
6
 
10
7
  group :development do
11
8
  gem 'bullet'
@@ -13,11 +10,13 @@ group :development do
13
10
  end
14
11
 
15
12
  group :test do
13
+ gem 'rails-controller-testing'
16
14
  gem 'ammeter'
17
15
  gem 'timecop'
18
16
  gem 'committee'
19
17
  gem 'committee-rails'
20
- gem 'coveralls', require: false
18
+ # gem 'coveralls', require: false
19
+ gem 'coveralls_reborn', require: false
21
20
  end
22
21
 
23
22
  gem 'dotenv-rails', groups: [:development, :test]
@@ -495,16 +495,23 @@ module ActivityNotification
495
495
 
496
496
  notification = new({ target: target, notifiable: notifiable, key: key, group: group, parameters: parameters, notifier: notifier, group_owner: group_owner })
497
497
  notification.prepare_to_store.save
498
+ notification.after_store
498
499
  notification
499
500
  end
500
501
  end
501
502
 
503
+ # :nocov:
502
504
  # Returns prepared notification object to store
503
505
  # @return [Object] prepared notification object to store
504
506
  def prepare_to_store
505
507
  self
506
508
  end
507
509
 
510
+ # Call after store action with stored notification
511
+ def after_store
512
+ end
513
+ # :nocov:
514
+
508
515
  # Sends notification email to the target.
509
516
  #
510
517
  # @param [Hash] options Options for notification email
@@ -21,7 +21,7 @@ module ActivityNotification
21
21
  # @subscriptions = @user.subscriptions.filtered_by_options({ custom_filter: ["created_at >= ?", time.hour.ago] })
22
22
  # @scope class
23
23
  # @param [Hash] options Options for filter
24
- # @option options [String] :filtered_by_key (nil) Key of the subscription for filter
24
+ # @option options [String] :filtered_by_key (nil) Key of the subscription for filter
25
25
  # @option options [Array|Hash] :custom_filter (nil) Custom subscription filter (e.g. ["created_at >= ?", time.hour.ago] or ['created_at.gt': time.hour.ago])
26
26
  # @return [ActiveRecord_AssociationRelation<Subscription>, Mongoid::Criteria<Notificaion>] Database query of filtered subscriptions
27
27
  scope :filtered_by_options, ->(options = {}) {
@@ -127,8 +127,8 @@ module ActivityNotification
127
127
  # @return [Boolean] If successfully updated subscription instance
128
128
  def subscribe(options = {})
129
129
  subscribed_at = options[:subscribed_at] || Time.current
130
- with_email_subscription = options.has_key?(:with_email_subscription) ? options[:with_email_subscription] : true
131
- with_optional_targets = options.has_key?(:with_optional_targets) ? options[:with_optional_targets] : true
130
+ with_email_subscription = options.has_key?(:with_email_subscription) ? options[:with_email_subscription] : ActivityNotification.config.subscribe_to_email_as_default
131
+ with_optional_targets = options.has_key?(:with_optional_targets) ? options[:with_optional_targets] : ActivityNotification.config.subscribe_to_optional_targets_as_default
132
132
  new_attributes = { subscribing: true, subscribed_at: subscribed_at, optional_targets: optional_targets }
133
133
  new_attributes = new_attributes.merge(subscribing_to_email: true, subscribed_to_email_at: subscribed_at) if with_email_subscription
134
134
  if with_optional_targets
@@ -184,7 +184,7 @@ module ActivityNotification
184
184
  # @param [Symbol] optional_target_name Symbol class name of the optional target implementation (e.g. :amazon_sns, :slack)
185
185
  # @param [Boolean] subscribe_as_default Default subscription value to use when the subscription record does not configured
186
186
  # @return [Boolean] If the target subscribes to the specified optional target
187
- def subscribing_to_optional_target?(optional_target_name, subscribe_as_default = ActivityNotification.config.subscribe_as_default)
187
+ def subscribing_to_optional_target?(optional_target_name, subscribe_as_default = ActivityNotification.config.subscribe_to_optional_targets_as_default)
188
188
  optional_target_key = Subscription.to_optional_target_key(optional_target_name)
189
189
  subscribe_as_default ?
190
190
  !optional_targets.has_key?(optional_target_key) || optional_targets[optional_target_key] :
@@ -244,4 +244,4 @@ module ActivityNotification
244
244
  end
245
245
 
246
246
  end
247
- end
247
+ end
@@ -16,7 +16,11 @@ module ActivityNotification
16
16
  when Symbol
17
17
  symbol_method = context.method(thing)
18
18
  if symbol_method.arity > 1
19
- symbol_method.call(ActivityNotification.get_controller, *args)
19
+ if args.last.kind_of?(Hash)
20
+ symbol_method.call(ActivityNotification.get_controller, *args[0...-1], **args[-1])
21
+ else
22
+ symbol_method.call(ActivityNotification.get_controller, *args)
23
+ end
20
24
  elsif symbol_method.arity > 0
21
25
  symbol_method.call(ActivityNotification.get_controller)
22
26
  else
@@ -74,7 +78,11 @@ module ActivityNotification
74
78
  when Symbol
75
79
  symbol_method = method(thing)
76
80
  if symbol_method.arity > 0
77
- symbol_method.call(*args)
81
+ if args.last.kind_of?(Hash)
82
+ symbol_method.call(*args[0...-1], **args[-1])
83
+ else
84
+ symbol_method.call(*args)
85
+ end
78
86
  else
79
87
  symbol_method.call
80
88
  end
@@ -98,9 +106,12 @@ module ActivityNotification
98
106
  end
99
107
 
100
108
  # Convets to class name.
109
+ # This function returns base_class name for STI models if the class responds to base_class method.
110
+ # @see https://github.com/simukappu/activity_notification/issues/89
111
+ # @see https://github.com/simukappu/activity_notification/pull/139
101
112
  # @return [String] Class name
102
113
  def to_class_name
103
- self.class.name
114
+ self.class.respond_to?(:base_class) ? self.class.base_class.name : self.class.name
104
115
  end
105
116
 
106
117
  # Convets to singularized model name (resource name).
@@ -128,4 +139,4 @@ module ActivityNotification
128
139
  "#{self.printable_type} (#{id})"
129
140
  end
130
141
  end
131
- end
142
+ end
@@ -61,6 +61,18 @@ module ActivityNotification
61
61
  # @return [Boolean] Default subscription value to use when the subscription record does not configured.
62
62
  attr_accessor :subscribe_as_default
63
63
 
64
+ # @overload subscribe_to_email_as_default=(value)
65
+ # Sets default email subscription value to use when the subscription record does not configured
66
+ # @param [Boolean] subscribe_to_email_as_default The new subscribe_to_email_as_default
67
+ # @return [Boolean] Default email subscription value to use when the subscription record does not configured.
68
+ attr_writer :subscribe_to_email_as_default
69
+
70
+ # @overload subscribe_to_optional_targets_as_default=(value)
71
+ # Sets default optional target subscription value to use when the subscription record does not configured
72
+ # @param [Boolean] subscribe_to_optional_targets_as_default The new subscribe_to_optional_targets_as_default
73
+ # @return [Boolean] Default optional target subscription value to use when the subscription record does not configured.
74
+ attr_writer :subscribe_to_optional_targets_as_default
75
+
64
76
  # @overload mailer_sender
65
77
  # Returns email address as sender of notification email
66
78
  # @return [String] Email address as sender of notification email.
@@ -205,29 +217,31 @@ module ActivityNotification
205
217
  # These configuration can be overridden in initializer.
206
218
  # @return [Config] A new instance of Config
207
219
  def initialize
208
- @enabled = true
209
- @orm = :active_record
210
- @notification_table_name = 'notifications'
211
- @subscription_table_name = 'subscriptions'
212
- @email_enabled = false
213
- @subscription_enabled = false
214
- @subscribe_as_default = true
215
- @mailer_sender = nil
216
- @mailer = 'ActivityNotification::Mailer'
217
- @parent_mailer = 'ActionMailer::Base'
218
- @parent_job = 'ActiveJob::Base'
219
- @parent_controller = 'ApplicationController'
220
- @parent_channel = 'ActionCable::Channel::Base'
221
- @mailer_templates_dir = 'activity_notification/mailer'
222
- @opened_index_limit = 10
223
- @active_job_queue = :activity_notification
224
- @composite_key_delimiter = '#'
225
- @store_with_associated_records = false
226
- @action_cable_enabled = false
227
- @action_cable_api_enabled = false
228
- @action_cable_with_devise = false
229
- @notification_channel_prefix = 'activity_notification_channel'
230
- @notification_api_channel_prefix = 'activity_notification_api_channel'
220
+ @enabled = true
221
+ @orm = :active_record
222
+ @notification_table_name = 'notifications'
223
+ @subscription_table_name = 'subscriptions'
224
+ @email_enabled = false
225
+ @subscription_enabled = false
226
+ @subscribe_as_default = true
227
+ @subscribe_to_email_as_default = nil
228
+ @subscribe_to_optional_targets_as_default = nil
229
+ @mailer_sender = nil
230
+ @mailer = 'ActivityNotification::Mailer'
231
+ @parent_mailer = 'ActionMailer::Base'
232
+ @parent_job = 'ActiveJob::Base'
233
+ @parent_controller = 'ApplicationController'
234
+ @parent_channel = 'ActionCable::Channel::Base'
235
+ @mailer_templates_dir = 'activity_notification/mailer'
236
+ @opened_index_limit = 10
237
+ @active_job_queue = :activity_notification
238
+ @composite_key_delimiter = '#'
239
+ @store_with_associated_records = false
240
+ @action_cable_enabled = false
241
+ @action_cable_api_enabled = false
242
+ @action_cable_with_devise = false
243
+ @notification_channel_prefix = 'activity_notification_channel'
244
+ @notification_api_channel_prefix = 'activity_notification_api_channel'
231
245
  end
232
246
 
233
247
  # Sets ORM name for ActivityNotification (:active_record, :mongoid or :dynamodb)
@@ -245,5 +259,21 @@ module ActivityNotification
245
259
  if store_with_associated_records && [:mongoid, :dynamoid].exclude?(@orm) then raise ActivityNotification::ConfigError, "config.store_with_associated_records can be set true only when you use mongoid or dynamoid ORM." end
246
260
  @store_with_associated_records = store_with_associated_records
247
261
  end
262
+
263
+ # Returns default email subscription value to use when the subscription record does not configured
264
+ # @return [Boolean] Default email subscription value to use when the subscription record does not configured.
265
+ def subscribe_to_email_as_default
266
+ return false unless @subscribe_as_default
267
+
268
+ @subscribe_to_email_as_default.nil? ? @subscribe_as_default : @subscribe_to_email_as_default
269
+ end
270
+
271
+ # Returns default optional target subscription value to use when the subscription record does not configured
272
+ # @return [Boolean] Default optinal target subscription value to use when the subscription record does not configured.
273
+ def subscribe_to_optional_targets_as_default
274
+ return false unless @subscribe_as_default
275
+
276
+ @subscribe_to_optional_targets_as_default.nil? ? @subscribe_as_default : @subscribe_to_optional_targets_as_default
277
+ end
248
278
  end
249
279
  end
@@ -26,7 +26,7 @@ module ActivityNotification
26
26
  target_class = target_type.to_model_class
27
27
  @target = params[:target_id].present? ?
28
28
  target_class.find_by!(id: params[:target_id]) :
29
- target_class.find_by!(id: params["#{target_type.to_resource_name}_id"])
29
+ target_class.find_by!(id: params["#{target_type.to_resource_name[/([^\/]+)$/]}_id"])
30
30
  else
31
31
  render status: 400, json: error_response(code: 400, message: "Invalid parameter", type: "Parameter is missing or the value is empty: target_type")
32
32
  end
@@ -130,25 +130,9 @@ module ActivityNotification
130
130
  load_index if params[:reload].to_s.to_boolean(true)
131
131
  format.js
132
132
  else
133
- compatibly_redirect_back(@index_options) and return
133
+ redirect_back(fallback_location: { action: :index }, **@index_options) and return
134
134
  end
135
135
  end
136
136
  end
137
-
138
- # Redirect to back.
139
- # @api protected
140
- # @return [Boolean] True
141
- def compatibly_redirect_back(request_params = {})
142
- # :nocov:
143
- if Rails::VERSION::MAJOR >= 5
144
- redirect_back fallback_location: { action: :index }, **request_params
145
- elsif request.referer
146
- redirect_to :back, **request_params
147
- else
148
- redirect_to action: :index, **request_params
149
- end
150
- # :nocov:
151
- true
152
- end
153
137
  end
154
138
  end
@@ -25,8 +25,8 @@ module ActivityNotification
25
25
  :_notifier,
26
26
  :_notification_parameters,
27
27
  :_notification_email_allowed,
28
- :_notification_action_cable_allowed,
29
- :_notification_action_cable_api_allowed,
28
+ :_notifiable_action_cable_allowed,
29
+ :_notifiable_action_cable_api_allowed,
30
30
  :_notifiable_path,
31
31
  :_printable_notifiable_name,
32
32
  :_optional_targets
@@ -55,8 +55,8 @@ module ActivityNotification
55
55
  self._notifier = {}
56
56
  self._notification_parameters = {}
57
57
  self._notification_email_allowed = {}
58
- self._notification_action_cable_allowed = {}
59
- self._notification_action_cable_api_allowed = {}
58
+ self._notifiable_action_cable_allowed = {}
59
+ self._notifiable_action_cable_api_allowed = {}
60
60
  self._notifiable_path = {}
61
61
  self._printable_notifiable_name = {}
62
62
  self._optional_targets = {}
@@ -162,10 +162,10 @@ module ActivityNotification
162
162
  # @param [Object] target Target instance to notify
163
163
  # @param [String] key Key of the notification
164
164
  # @return [Boolean] If publishing WebSocket using ActionCable is allowed for the notifiable
165
- def notification_action_cable_allowed?(target, key = nil)
165
+ def notifiable_action_cable_allowed?(target, key = nil)
166
166
  resolve_parameter(
167
- "notification_action_cable_allowed_for_#{cast_to_resources_name(target.class)}?",
168
- _notification_action_cable_allowed[cast_to_resources_sym(target.class)],
167
+ "notifiable_action_cable_allowed_for_#{cast_to_resources_name(target.class)}?",
168
+ _notifiable_action_cable_allowed[cast_to_resources_sym(target.class)],
169
169
  ActivityNotification.config.action_cable_enabled,
170
170
  target, key)
171
171
  end
@@ -176,10 +176,10 @@ module ActivityNotification
176
176
  # @param [Object] target Target instance to notify
177
177
  # @param [String] key Key of the notification
178
178
  # @return [Boolean] If publishing WebSocket API using ActionCable is allowed for the notifiable
179
- def notification_action_cable_api_allowed?(target, key = nil)
179
+ def notifiable_action_cable_api_allowed?(target, key = nil)
180
180
  resolve_parameter(
181
- "notification_action_cable_api_allowed_for_#{cast_to_resources_name(target.class)}?",
182
- _notification_action_cable_api_allowed[cast_to_resources_sym(target.class)],
181
+ "notifiable_action_cable_api_allowed_for_#{cast_to_resources_name(target.class)}?",
182
+ _notifiable_action_cable_api_allowed[cast_to_resources_sym(target.class)],
183
183
  ActivityNotification.config.action_cable_api_enabled,
184
184
  target, key)
185
185
  end
@@ -456,7 +456,7 @@ module ActivityNotification
456
456
  unless generated_notifications.to_a.empty?
457
457
  record = self.class.human_attribute_name("generated_notifications_as_notifiable_for_#{target_type.to_s.pluralize.underscore}").downcase
458
458
  self.errors.add(:base, :'restrict_dependent_destroy.has_many', record: record)
459
- if Rails::VERSION::MAJOR >= 5 then throw(:abort) else false end
459
+ throw(:abort)
460
460
  end
461
461
  when :destroy
462
462
  generated_notifications.each { |n| n.destroy }
@@ -482,7 +482,7 @@ module ActivityNotification
482
482
  # Casts to symbol of resources name.
483
483
  # @api private
484
484
  def cast_to_resources_sym(target_type)
485
- target_type.to_s.to_resources_name.to_sym
485
+ cast_to_resources_name(target_type).to_sym
486
486
  end
487
487
  end
488
488
  end
@@ -61,7 +61,9 @@ module ActivityNotification
61
61
  def build_subscription(subscription_params = {})
62
62
  created_at = Time.current
63
63
  if subscription_params[:subscribing] == false && subscription_params[:subscribing_to_email].nil?
64
- subscription_params[:subscribing_to_email] = subscription_params[:subscribing]
64
+ subscription_params[:subscribing_to_email] = subscription_params[:subscribing]
65
+ elsif subscription_params[:subscribing_to_email].nil?
66
+ subscription_params[:subscribing_to_email] = ActivityNotification.config.subscribe_to_email_as_default
65
67
  end
66
68
  subscription = Subscription.new(subscription_params)
67
69
  subscription.assign_attributes(target: self)
@@ -157,7 +159,7 @@ module ActivityNotification
157
159
  # @param [String] key Key of the notification
158
160
  # @param [Boolean] subscribe_as_default Default subscription value to use when the subscription record does not configured
159
161
  # @return [Boolean] If the target subscribes to the notification
160
- def _subscribes_to_notification_email?(key, subscribe_as_default = ActivityNotification.config.subscribe_as_default)
162
+ def _subscribes_to_notification_email?(key, subscribe_as_default = ActivityNotification.config.subscribe_to_email_as_default)
161
163
  evaluate_subscription(subscriptions.where(key: key).first, :subscribing_to_email?, subscribe_as_default)
162
164
  end
163
165
  alias_method :_subscribes_to_email?, :_subscribes_to_notification_email?
@@ -170,7 +172,7 @@ module ActivityNotification
170
172
  # @param [String, Symbol] optional_target_name Class name of the optional target implementation (e.g. :amazon_sns, :slack)
171
173
  # @param [Boolean] subscribe_as_default Default subscription value to use when the subscription record does not configured
172
174
  # @return [Boolean] If the target subscribes to the specified optional target
173
- def _subscribes_to_optional_target?(key, optional_target_name, subscribe_as_default = ActivityNotification.config.subscribe_as_default)
175
+ def _subscribes_to_optional_target?(key, optional_target_name, subscribe_as_default = ActivityNotification.config.subscribe_to_optional_targets_as_default)
174
176
  _subscribes_to_notification?(key, subscribe_as_default) &&
175
177
  evaluate_subscription(subscriptions.where(key: key).first, :subscribing_to_optional_target?, subscribe_as_default, optional_target_name, subscribe_as_default)
176
178
  end
@@ -189,4 +191,4 @@ module ActivityNotification
189
191
  end
190
192
 
191
193
  end
192
- end
194
+ end
@@ -90,7 +90,7 @@ module ActivityNotification
90
90
  type: :string
91
91
  }
92
92
  key :example, {
93
- "test_default_param": "1"
93
+ test_default_param: "1"
94
94
  }
95
95
  end
96
96
  property :opened_at do
@@ -139,28 +139,28 @@ module ActivityNotification
139
139
  key :type, :object
140
140
  key :description, "Associated target model in your application"
141
141
  key :example, {
142
- "id": 1,
143
- "email": "ichiro@example.com",
144
- "name": "Ichiro",
145
- "created_at": Time.current,
146
- "updated_at": Time.current,
147
- "provider": "email",
148
- "uid": "",
149
- "printable_type": "User",
150
- "printable_target_name": "Ichiro"
142
+ id: 1,
143
+ email: "ichiro@example.com",
144
+ name: "Ichiro",
145
+ created_at: Time.current,
146
+ updated_at: Time.current,
147
+ provider: "email",
148
+ uid: "",
149
+ printable_type: "User",
150
+ printable_target_name: "Ichiro"
151
151
  }
152
152
  end
153
153
  property :notifiable do
154
154
  key :type, :object
155
155
  key :description, "Associated notifiable model in your application"
156
156
  key :example, {
157
- "id": 22,
158
- "user_id": 2,
159
- "article_id": 11,
160
- "body": "This is the first Stephen's comment to Ichiro's article.",
161
- "created_at": Time.current,
162
- "updated_at": Time.current,
163
- "printable_type": "Comment"
157
+ id: 22,
158
+ user_id: 2,
159
+ article_id: 11,
160
+ body: "This is the first Stephen's comment to Ichiro's article.",
161
+ created_at: Time.current,
162
+ updated_at: Time.current,
163
+ printable_type: "Comment"
164
164
  }
165
165
  end
166
166
  property :group do
@@ -168,14 +168,14 @@ module ActivityNotification
168
168
  key :description, "Associated group model in your application"
169
169
  key :nullable, true
170
170
  key :example, {
171
- "id": 11,
172
- "user_id": 4,
173
- "title": "Ichiro's great article",
174
- "body": "This is Ichiro's great article. Please read it!",
175
- "created_at": Time.current,
176
- "updated_at": Time.current,
177
- "printable_type": "Article",
178
- "printable_group_name": "article \"Ichiro's great article\""
171
+ id: 11,
172
+ user_id: 4,
173
+ title: "Ichiro's great article",
174
+ body: "This is Ichiro's great article. Please read it!",
175
+ created_at: Time.current,
176
+ updated_at: Time.current,
177
+ printable_type: "Article",
178
+ printable_group_name: "article \"Ichiro's great article\""
179
179
  }
180
180
  end
181
181
  property :notifier do
@@ -183,15 +183,15 @@ module ActivityNotification
183
183
  key :description, "Associated notifier model in your application"
184
184
  key :nullable, true
185
185
  key :example, {
186
- "id": 2,
187
- "email": "stephen@example.com",
188
- "name": "Stephen",
189
- "created_at": Time.current,
190
- "updated_at": Time.current,
191
- "provider": "email",
192
- "uid": "",
193
- "printable_type": "User",
194
- "printable_notifier_name": "Stephen"
186
+ id: 2,
187
+ email: "stephen@example.com",
188
+ name: "Stephen",
189
+ created_at: Time.current,
190
+ updated_at: Time.current,
191
+ provider: "email",
192
+ uid: "",
193
+ printable_type: "User",
194
+ printable_notifier_name: "Stephen"
195
195
  }
196
196
  end
197
197
  property :group_members do