userlist-rails 0.6.2 → 1.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: aa029bf122f3f49769fb1a618bb41a1d6da63994bceb98e214a92cdd36f80a30
4
- data.tar.gz: '0097422a814d7321137ea008846e37999355f065bf016ac8fe3e7b9be9fc2466'
3
+ metadata.gz: b37f407aa0fafadcfd37cece33e49bb05d04e2891b442717f167e0f0391f1c99
4
+ data.tar.gz: e69bde3e0e95de200a7196bf10c30abd5f68be569fec68af7ea756b542f36017
5
5
  SHA512:
6
- metadata.gz: a61a015fa3f0b673766568a6093698163eb5a1cee9dd10217c071b487f6a88c64acaefc28ee85ef432336e8e51aa5d189746fb78c395cf347cdfdb194bae6119
7
- data.tar.gz: c8d6c754bbe733e2863aeed4708299740b9fca1e6ac1461a9731a45a60b90cd621b2aeecf85a2f8917e20889b5c9beeefd9f14fb080536a85a37436bd2db0ae5
6
+ metadata.gz: 2b103ab51d54698367fe4d30b115dbc9afbaac61e6a35afa87790892a8f993c205dfc2bea47818c0719a84101743126c24aa1d2facc49fbf35fbc9d362493f49
7
+ data.tar.gz: c5882c73da7629605644ee62c8562d42fdb5339338020adbcfeec85143c3b98a281fafcfc342eeff16ec25cf317b466341f7fb1fd6749f34cb514e83258de386
@@ -5,13 +5,14 @@ jobs:
5
5
  strategy:
6
6
  matrix:
7
7
  ruby:
8
- - 2.7
9
8
  - 3.0
10
9
  - 3.1
11
10
  - 3.2
11
+ - 3.3
12
+ - 3.4
12
13
  runs-on: ubuntu-latest
13
14
  steps:
14
- - uses: actions/checkout@v2
15
+ - uses: actions/checkout@v4
15
16
  - uses: ruby/setup-ruby@v1
16
17
  with:
17
18
  ruby-version: ${{ matrix.ruby }}
data/CHANEGLOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Userlist for Ruby on Rails Changelog
2
2
 
3
+ ## Unreleased (main)
4
+
5
+ ## v1.0.0 (2025-04-08)
6
+
7
+ - Fix detection of relationships when there are multiple associations between users and companies
8
+ - Register Userlist::DeliveryMethod when it's available
9
+
3
10
  ## v0.6.2 (2023-11-30)
4
11
 
5
12
  - Upgrades dependencies
@@ -11,7 +18,7 @@
11
18
  ## v0.6.0 (2021-05-14)
12
19
 
13
20
  - Improves handling of relationships across different setups (1:1, 1:n, and n:m)
14
- - Automatically call userlist_* methods on models in transforms
21
+ - Automatically call userlist\_\* methods on models in transforms
15
22
 
16
23
  ## v0.5.3 (2021-04-15)
17
24
 
@@ -48,7 +55,6 @@
48
55
  - Use Userlist::Push::Resources to transform payloads
49
56
  - Upgrades dependencies
50
57
 
51
-
52
58
  ## v0.2.2 (2019-03-18)
53
59
 
54
60
  - Adds support for Ruby 2.2
@@ -17,6 +17,14 @@ module Userlist
17
17
  base.extend(ClassMethods)
18
18
  end
19
19
 
20
+ def identifier
21
+ super if !payload.respond_to?(:destroyed?) || !payload.destroyed?
22
+ end
23
+
24
+ def identifiers
25
+ super if payload.respond_to?(:destroyed?) && payload.destroyed?
26
+ end
27
+
20
28
  def push?
21
29
  super && (!payload.respond_to?(:push?) || payload.push?)
22
30
  end
@@ -36,7 +36,7 @@ module Userlist
36
36
  end
37
37
 
38
38
  initializer 'userlist.helpers' do
39
- ActiveSupport.on_load :action_view do
39
+ ActiveSupport.on_load(:action_view) do
40
40
  include Userlist::Rails::Helpers
41
41
  end
42
42
  end
@@ -75,6 +75,12 @@ module Userlist
75
75
  end
76
76
  end
77
77
  end
78
+
79
+ initializer 'userlist.delivery_method', before: 'action_mailer.set_configs' do
80
+ ActiveSupport.on_load(:action_mailer) do
81
+ ActionMailer::Base.add_delivery_method(:userlist, Userlist::DeliveryMethod) if defined?(Userlist::DeliveryMethod)
82
+ end
83
+ end
78
84
  end
79
85
  end
80
86
  end
@@ -27,11 +27,15 @@ module Userlist
27
27
  end
28
28
 
29
29
  def push?
30
- (!model.respond_to?(:userlist_push?) || model.userlist_push?)
30
+ !model.respond_to?(:userlist_push?) || model.userlist_push?
31
31
  end
32
32
 
33
33
  def delete?
34
- (!model.respond_to?(:userlist_delete?) || model.userlist_delete?)
34
+ !model.respond_to?(:userlist_delete?) || model.userlist_delete?
35
+ end
36
+
37
+ def destroyed?
38
+ model.try(:destroyed?)
35
39
  end
36
40
 
37
41
  private
@@ -12,6 +12,7 @@ module Userlist
12
12
  :identifier,
13
13
  :properties,
14
14
  :relationships,
15
+ :identifiers,
15
16
  :email,
16
17
  :signed_up_at
17
18
  ]
@@ -33,6 +34,10 @@ module Userlist
33
34
  model.try(:created_at)
34
35
  end
35
36
 
37
+ def default_identifiers
38
+ [{ scope: 'custom', identifier: self[:identifier] }]
39
+ end
40
+
36
41
  private
37
42
 
38
43
  def build_relationship(record)
@@ -1,5 +1,5 @@
1
1
  module Userlist
2
2
  module Rails
3
- VERSION = '0.6.2'.freeze
3
+ VERSION = '1.0.0'.freeze
4
4
  end
5
5
  end
@@ -11,6 +11,12 @@ module Userlist
11
11
  :userlist_user
12
12
  ].freeze
13
13
 
14
+ REFLECTION_PRIORITY = [
15
+ ActiveRecord::Reflection::ThroughReflection,
16
+ ActiveRecord::Reflection::HasManyReflection,
17
+ ActiveRecord::Reflection::HasOneReflection
18
+ ].freeze
19
+
14
20
  def self.with_current_user(user)
15
21
  Thread.current[:userlist_current_user] = user
16
22
  yield
@@ -56,7 +62,10 @@ module Userlist
56
62
  def self.find_reflection(from, to)
57
63
  return unless from && to
58
64
 
59
- from.reflect_on_all_associations.find { |r| r.class_name == to.to_s }
65
+ from
66
+ .reflect_on_all_associations
67
+ .sort_by { |r| REFLECTION_PRIORITY.index(r.class) || REFLECTION_PRIORITY.length }
68
+ .find { |r| r.class_name == to.to_s }
60
69
  end
61
70
 
62
71
  def self.find_association_between(from, to)
@@ -75,11 +84,13 @@ module Userlist
75
84
  model.instance_variable_set(:@userlist_callbacks_registered, true)
76
85
  end
77
86
 
78
- def self.setup_callback(type, model, scope, method)
87
+ def self.setup_callback(type, model, scope, default_method)
79
88
  return unless callback_method = [:after_commit, :"after_#{type}"].find { |m| model.respond_to?(m) }
80
89
 
81
90
  callback = lambda do
82
91
  begin
92
+ method = try(:"userlist_#{type}_behavior") || default_method
93
+
83
94
  relation = Userlist::Push.public_send(scope)
84
95
  relation.public_send(method, self)
85
96
  rescue Userlist::Error => e
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_dependency 'activesupport', '>= 5.0'
25
25
  spec.add_dependency 'railties', '>= 5.0'
26
- spec.add_dependency 'userlist', '~> 0.8', '>= 0.8.1'
26
+ spec.add_dependency 'userlist', '~> 1.0'
27
27
 
28
28
  spec.metadata = { 'rubygems_mfa_required' => 'true' }
29
29
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: userlist-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benedikt Deicke
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2023-11-30 00:00:00.000000000 Z
10
+ date: 2025-04-08 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
@@ -44,21 +43,14 @@ dependencies:
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: '0.8'
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: 0.8.1
46
+ version: '1.0'
51
47
  type: :runtime
52
48
  prerelease: false
53
49
  version_requirements: !ruby/object:Gem::Requirement
54
50
  requirements:
55
51
  - - "~>"
56
52
  - !ruby/object:Gem::Version
57
- version: '0.8'
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: 0.8.1
61
- description:
53
+ version: '1.0'
62
54
  email:
63
55
  - benedikt@userlist.com
64
56
  executables: []
@@ -102,7 +94,6 @@ licenses:
102
94
  - MIT
103
95
  metadata:
104
96
  rubygems_mfa_required: 'true'
105
- post_install_message:
106
97
  rdoc_options: []
107
98
  require_paths:
108
99
  - lib
@@ -117,8 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
108
  - !ruby/object:Gem::Version
118
109
  version: '0'
119
110
  requirements: []
120
- rubygems_version: 3.4.21
121
- signing_key:
111
+ rubygems_version: 3.6.2
122
112
  specification_version: 4
123
113
  summary: Rails integration for Userlist
124
114
  test_files: []