devise-onesignal 2.0.1 → 3.0.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: 107a9075cb4ba1e6aa859142f8ad429ef18470f32bc515b754e522c96b4771e8
4
- data.tar.gz: 513f23e8a4ca0a60f7535c0e5e68f43f1c8421ed368e86e76cea524b4ab0784a
3
+ metadata.gz: bb032ba7dc17d0e039d2e4639d045017315cfccd837e57360f138635eb68a1af
4
+ data.tar.gz: fd986da1ce7fede417100cb77203cee79654d9dd1a69ade70d5a980614dd00cc
5
5
  SHA512:
6
- metadata.gz: a523ec599d55ab9c7a3bcc35210dfaf9a2f43c6934589ac174a10cd9b6b2a1b8995a369a5eb0d20305ddf2b0d7e02a2dbd08e0c7743a09be0e75a77c68bb0eb2
7
- data.tar.gz: 68cc49c37097dfef72fce53965c54413474aaf7577b940f7526d01d2575b0244e524eb0461db5c6e79da4ea624d9c9398568aefd9a4b3e7515ced9d4335034bb
6
+ metadata.gz: c3775ea071a90365e87cb8296735b78f5f9ae5858a551f746440ab0dc4e7e71271fa8aa1ec830c80fb8d93cb20b12c08abc9b0efe04469ae8cc32ca2827ac4fb
7
+ data.tar.gz: 0bb3c6fb16252a8a99c334c6de7c596343f4684b278f172efa128b732797245d67b53a79ace98645b98fe576497912cd82e23de7d4b58f89bc84bb85e00da38b
data/CHANGELOG.md CHANGED
@@ -4,6 +4,14 @@
4
4
 
5
5
  * nothing yet
6
6
 
7
+ ### 3.0.0 - 2017-12-21
8
+
9
+ * features
10
+ * made Devise optional
11
+ * added `owner` association to `Device` model
12
+ * enhancements
13
+ * renamed elements of the javascript API
14
+
7
15
  ### 2.0.1 - 2017-12-20
8
16
 
9
17
  * bugfixes
data/DEPRECATIONS.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Deprecations
2
2
 
3
+ ### 3.0.0 - 2017-12-21
4
+
5
+ * `devise_class` configuration method removed
6
+
3
7
  ### 2.0.0 - 2017-12-19
4
8
 
5
9
  * you should now configure devise-onesignal through a `configure` block
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/devise-onesignal.svg)](https://badge.fury.io/rb/devise-onesignal) <img src="https://travis-ci.org/jonhue/devise-onesignal.svg?branch=master" />
4
4
 
5
- Implement user targeted cross-platform notifications with OneSignal & Devise in your Rails app.
5
+ Implement user targeted cross-platform notifications with OneSignal & Devise in your Rails app. This gem can also be used without Devise, but it is primarily intended to be used along with some sort of user-management-system.
6
6
 
7
7
  This gem works well together with [notifications-rails](https://github.com/jonhue/notifications-rails) which introduces a notifications handling & pushing API. To build a cross-platform notification solution also add the [native](https://github.com/NativeGap/native-ruby) gem to your app.
8
8
 
@@ -20,6 +20,7 @@ This gem works well together with [notifications-rails](https://github.com/jonhu
20
20
  * [To Do](#to-do)
21
21
  * [Contributing](#contributing)
22
22
  * [Contributors](#contributors)
23
+ * [Semantic versioning](#semantic-versioning)
23
24
  * [License](#license)
24
25
 
25
26
  ---
@@ -56,15 +57,13 @@ To wrap things up, migrate the changes into your database:
56
57
 
57
58
  It is time to [create your OneSignal app](https://onesignal.com) if you haven't already and set your application ID in the created initializer (`config/initializers/devise-onesignal.rb`).
58
59
 
59
- Then add ...
60
+ Define an association in those models whose objects are supposed to be associated with OneSignal players. For example `User` in `app/models/user.rb`.
60
61
 
61
62
  ```ruby
62
63
  has_many :devices
63
64
  ```
64
65
 
65
- ... to your devise class. For example `User` in `app/models/user.rb`.
66
-
67
- Now let's include the neccessary javascript files in our application (`apps/assets/javascripts/application.js`):
66
+ Now let us include the neccessary javascript files in our application (`apps/assets/javascripts/application.js`):
68
67
 
69
68
  ```js
70
69
  //= require OneSignalSDK
@@ -81,6 +80,20 @@ document.addEventListener( 'turbolinks:load', function() {
81
80
 
82
81
  ## Usage
83
82
 
83
+ ### Devise object
84
+
85
+ You most likely want to associate your devise object (e.g. `current_user`) with your OneSignal integration. Now, if your Devise model is called `User` and the `current_user` method is available you don't have to worry about that.
86
+
87
+ Let's say our Devise model is named `Admin`. Just add `private` method to your `ApplicationController`:
88
+
89
+ ```ruby
90
+ def set_device_owner
91
+ current_admin if current_admin
92
+ end
93
+ ```
94
+
95
+ **Note:** Essentially `set_device_owner` has to return a class object *or* `nil`.
96
+
84
97
  ### Device methods
85
98
 
86
99
  devise-onesignal introduces a `Device` activerecord model. Every object of your devise class can have multiple devices, one for each device / browser they enabled OneSignal at least once.
@@ -88,8 +101,8 @@ devise-onesignal introduces a `Device` activerecord model. Every object of your
88
101
  ```ruby
89
102
  d = Device.first
90
103
 
91
- # Returns user (or other devise object) that this device belongs to. Can return `nil`.
92
- d.user
104
+ # Returns object associated with device. Can return `nil`.
105
+ d.owner
93
106
 
94
107
  # Returns OneSignal player id
95
108
  d.onesignal_id
@@ -131,7 +144,7 @@ If you want to completely remove a user from OneSignal, call `OneSignalUnsubscri
131
144
 
132
145
  ## Configuration
133
146
 
134
- You can configure devise-onesignal by passing a block to `configure`:
147
+ You can configure devise-onesignal by passing a block to `configure`. This can be done in `config/initializers/devise-onesignal.rb`:
135
148
 
136
149
  ```ruby
137
150
  DeviseOnesignal.configure do |config|
@@ -141,8 +154,6 @@ end
141
154
 
142
155
  **`app_id` (required)** Your OneSignal app id. Takes a string. Create one here: https://onesignal.com
143
156
 
144
- **`devise_class`** Specify your devise class. Takes a string. Defaults to `'User'`.
145
-
146
157
  **`auto_register`** Automatically try to subscribe the user when loading a page. Takes a boolean. Defaults to `false`.
147
158
 
148
159
  **`persist_notification`** Automatically dismiss the notification after ~20 seconds in Chrome. Takes a boolean. Defaults to `false`.
@@ -171,6 +182,10 @@ Give the people some :heart: who are working on this project. See them all at:
171
182
 
172
183
  https://github.com/jonhue/devise-onesignal/graphs/contributors
173
184
 
185
+ ### Semantic Versioning
186
+
187
+ Sandboxy follows Semantic Versioning 2.0 as defined at http://semver.org.
188
+
174
189
  ## License
175
190
 
176
191
  MIT License
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
6
6
  gem.version = DeviseOnesignal::VERSION
7
7
  gem.platform = Gem::Platform::RUBY
8
8
  gem.summary = 'Implement user targeted cross-platform notifications in your Rails app'
9
- gem.description = 'Implement user targeted cross-platform notifications with OneSignal & Devise in your Rails app.'
9
+ gem.description = 'Implement user targeted cross-platform notifications with OneSignal & Devise in your Rails app. This gem can also be used without Devise, but it is primarily intended to be used along with some sort of user-management-system.'
10
10
  gem.authors = 'Jonas Hübotter'
11
11
  gem.email = 'jonas.huebotter@gmail.com'
12
12
  gem.homepage = 'https://github.com/jonhue/devise-onesignal'
@@ -22,5 +22,4 @@ Gem::Specification.new do |gem|
22
22
  gem.add_development_dependency 'bundler', '~> 1.16'
23
23
  gem.add_development_dependency 'rake', '~> 10.0'
24
24
  gem.add_dependency 'rails', '>= 5.0'
25
- gem.add_dependency 'devise', '~> 4.3'
26
25
  end
@@ -2,13 +2,11 @@ module DeviseOnesignal
2
2
  class Configuration
3
3
 
4
4
  attr_accessor :app_id
5
- attr_accessor :devise_class
6
5
  attr_accessor :auto_register
7
6
  attr_accessor :persist_notification
8
7
  attr_accessor :subscribe_with_modal
9
8
 
10
9
  def initialize
11
- @devise_class = 'User'
12
10
  @auto_register = false
13
11
  @persist_notification = false
14
12
  @subscribe_with_modal = false
@@ -12,15 +12,19 @@ module DeviseOnesignal
12
12
  private
13
13
 
14
14
  def set_device
15
- unless cookies[:oneSignalUserId].nil?
16
- onesignal_user_id = cookies[:oneSignalUserId]
17
- device = Device.find_or_create_by! onesignal_id: onesignal_user_id
18
- device.user = current_user if current_user
19
- device.onesignal_permission = cookies[:oneSignalUserPermission]
15
+ unless cookies[:oneSignalPlayerId].nil?
16
+ onesignal_player_id = cookies[:oneSignalPlayerId]
17
+ device = Device.find_or_create_by! onesignal_id: onesignal_player_id
18
+ device.onesignal_permission = cookies[:oneSignalPlayerPermission]
20
19
  device.last_used = Time.now
20
+ device.owner = set_device_owner
21
21
  device.save!
22
22
  end
23
23
  end
24
24
 
25
+ def set_device_owner
26
+ current_user if current_user
27
+ end
28
+
25
29
  end
26
30
  end
@@ -2,13 +2,13 @@ module DeviseOnesignal
2
2
  module DeviceHelper
3
3
 
4
4
  def current_device
5
- if cookies[:oneSignalUserId].nil?
5
+ if cookies[:oneSignalPlayerId].nil?
6
6
  device = Device.new
7
- device.user = current_user if current_user
8
- device.onesignal_permission = cookies[:oneSignalUserPermission]
7
+ device.onesignal_permission = cookies[:oneSignalPlayerPermission]
8
+ device.owner = set_device_owner
9
9
  device.last_used = Time.now
10
10
  else
11
- device = Device.find_by(onesignal_id: cookies[:oneSignalUserId])
11
+ device = Device.find_by onesignal_id: cookies[:oneSignalPlayerId]
12
12
  end
13
13
  device
14
14
  end
@@ -1,5 +1,5 @@
1
1
  module DeviseOnesignal
2
2
 
3
- VERSION = '2.0.1'
3
+ VERSION = '3.0.0'
4
4
 
5
5
  end
@@ -2,6 +2,6 @@ class Device < ActiveRecord::Base
2
2
 
3
3
  extend DeviseOnesignal::DeviceLib
4
4
 
5
- belongs_to DeviseOnesignal.configuration.devise_class.downcase.to_sym, optional: true
5
+ belongs_to :owner, polymorphic: true, optional: true
6
6
 
7
7
  end
@@ -2,7 +2,7 @@ class DeviseOnesignalMigration < ActiveRecord::Migration<%= migration_version %>
2
2
  def change
3
3
  create_table :devices do |t|
4
4
 
5
- t.references DeviseOnesignal.configuration.devise_class.downcase.to_sym, index: true
5
+ t.references :owner, polymorphic: true, index: true
6
6
 
7
7
  t.string :onesignal_id, index: true, unique: true
8
8
  t.string :onesignal_permission
@@ -1,19 +1,9 @@
1
1
  DeviseOnesignal.configure do |config|
2
2
 
3
- ### ONESIGNAL ###
4
-
5
3
  # Your OneSignal app id. Create one here: https://onesignal.com
6
4
  config.app_id = ''
7
5
 
8
6
 
9
- ### DEVISE ###
10
-
11
- # Specify your devise class. Defaults to `'User'`.
12
- # config.devise_class = 'User'
13
-
14
-
15
- ### CUSTOMIZATION ###
16
-
17
7
  # Automatically try to subscribe the user when loading a page. Defaults to `false`.
18
8
  # config.auto_register = false
19
9
 
@@ -1,13 +1,11 @@
1
- var useragentid = null;
1
+ var OneSignalPlayerId = null;
2
2
  var OneSignal = window.OneSignal || [];
3
3
 
4
4
 
5
5
 
6
6
  function OneSignalInit() {
7
7
 
8
- // Do NOT call init() twice
9
8
  OneSignal.push([ 'init', {
10
- // Your other init options here
11
9
  appId: '<%= DeviseOnesignal.configuration.app_id %>',
12
10
  autoRegister: <%= DeviseOnesignal.configuration.auto_register ? 'true' : 'false' %>,
13
11
  welcomeNotification: {
@@ -21,15 +19,14 @@ function OneSignalInit() {
21
19
  persistNotification: <%= DeviseOnesignal.configuration.persist_notification ? 'true' : 'false' %> // Automatically dismiss the notification after ~20 seconds in Chrome Desktop v47+
22
20
  }]);
23
21
 
24
- // Firstly this will check user id
25
22
  OneSignal.push(function() {
26
- OneSignal.getUserId().then(function(userId) {
27
- if ( userId != null ) {
28
- useragentid = userId;
29
- document.cookie = 'oneSignalUserId=' + userId;
23
+ OneSignal.getUserId().then(function(playerId) {
24
+ if ( playerId != null ) {
25
+ OneSignalPlayerId = playerId;
26
+ document.cookie = 'oneSignalPlayerId=' + playerId;
30
27
  };
31
28
  OneSignal.push([ 'getNotificationPermission', function(permission) {
32
- document.cookie = 'oneSignalUserPermission=' + permission;
29
+ document.cookie = 'oneSignalPlayerPermission=' + permission;
33
30
  }]);
34
31
  });
35
32
  });
@@ -39,7 +36,7 @@ function OneSignalInit() {
39
36
 
40
37
 
41
38
  function OneSignalSubscribe() {
42
- if ( useragentid != null ) {
39
+ if ( OneSignalPlayerId != null ) {
43
40
  OneSignal.setSubscription(true);
44
41
  } else {
45
42
  OneSignal.registerForPushNotifications({
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-onesignal
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Hübotter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-20 00:00:00.000000000 Z
11
+ date: 2017-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,22 +52,9 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
- - !ruby/object:Gem::Dependency
56
- name: devise
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '4.3'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '4.3'
69
55
  description: Implement user targeted cross-platform notifications with OneSignal &
70
- Devise in your Rails app.
56
+ Devise in your Rails app. This gem can also be used without Devise, but it is primarily
57
+ intended to be used along with some sort of user-management-system.
71
58
  email: jonas.huebotter@gmail.com
72
59
  executables: []
73
60
  extensions: []