spree_klaviyo 1.0.3 → 1.1.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: bcd8b3d6ce12abc2388b64c101ac72c0e9a92665c7157cd7efbcf3f8638a06cc
4
- data.tar.gz: fec14ec4aa716ab552b192200a176b35e799cbb40d3fb623a9ea702aeb576657
3
+ metadata.gz: 95b3a0a2276094c5e1535bdaa822be253a7410f2f44046fffed49fee6529555d
4
+ data.tar.gz: 1d4d258600b546f9dda0821dd4f65ead9039688f41ba19e1980c1f36c424cea2
5
5
  SHA512:
6
- metadata.gz: 85564d29fcd37469a58e42efe2e152fe28d4c426f6005306fb2dfa8cd4a5c28ffa228db31d6366cc99780c78cb1cb7be9533e16abcf6e75e651fd35df7c2c2f2
7
- data.tar.gz: 66a52c5deb60fdb6aef795fda1f11a8bbf878564bda92ea128ea9c99bb141e8df1c8c9cad0e35776672bfcc1e1ddbde7e2d8ceffb1b1afe84e016da6dd058b9d
6
+ metadata.gz: 984bfb79ba4a915eaed118f93dffe926de43b1d494192a88bafa057560e66178b43a71053ba2a9c2c3ecd96e05ca42cd61d30dd2236cbaac5601165e1a9e246b
7
+ data.tar.gz: 98d9e99ec7027ee49868a40c051410f737baca5d55cd89e81866cf278f79338aa98c46ef28252d54ec713f70667932ebb6ecac895a0745554d869d1d43d1a893
@@ -0,0 +1,25 @@
1
+ module SpreeKlaviyo
2
+ class AnalyticsEventJob < BaseJob
3
+ def perform(klaviyo_integration_id, event_name, resource_type, resource_id, email, guest_id = nil)
4
+ klaviyo_integration = ::Spree::Integrations::Klaviyo.find(klaviyo_integration_id)
5
+ record = load_record(resource_type, resource_id)
6
+
7
+ SpreeKlaviyo::CreateEvent.call(
8
+ klaviyo_integration: klaviyo_integration,
9
+ event: event_name,
10
+ resource: record,
11
+ email: email,
12
+ guest_id: guest_id
13
+ )
14
+ end
15
+
16
+ private
17
+
18
+ def load_record(resource_type, resource_id)
19
+ return nil if resource_type.nil?
20
+ return resource_id if resource_type == 'String'
21
+
22
+ resource_type.constantize.find(resource_id)
23
+ end
24
+ end
25
+ end
@@ -5,6 +5,8 @@ module SpreeKlaviyo
5
5
  included do
6
6
  store_accessor :private_metadata, :klaviyo_id
7
7
  store_accessor :private_metadata, :klaviyo_subscribed
8
+
9
+ after_commit :subscribe_to_klaviyo, on: :update, if: :marketing_opt_in_changed?
8
10
  end
9
11
 
10
12
  def klaviyo_subscribed?
@@ -20,5 +22,24 @@ module SpreeKlaviyo
20
22
 
21
23
  SpreeKlaviyo::FetchProfileJob.perform_later(klaviyo_integration.id, id)
22
24
  end
25
+
26
+ private
27
+
28
+ def marketing_opt_in_changed?
29
+ return false if klaviyo_subscribed?
30
+
31
+ Spree::Deprecation.warn('`SpreeKlaviyo::UserMethods#marketing_opt_in_changed?` is deprecated and will be removed in SpreeKlaviyo 1.1.0. ' \
32
+ 'Use `SpreeKlaviyo::OrderDecorator#subscribe_user_to_klaviyo_newsletter` or `SpreeKlaviyo::AnalyticsEventHandler#handle_event` instead.')
33
+ saved_change_to_accepts_email_marketing? && accepts_email_marketing?
34
+ end
35
+
36
+ def subscribe_to_klaviyo
37
+ Spree::Deprecation.warn('`SpreeKlaviyo::UserMethods#subscribe_to_klaviyo` is deprecated and will be removed in SpreeKlaviyo 1.1.0. ' \
38
+ 'Use `SpreeKlaviyo::OrderDecorator#subscribe_user_to_klaviyo_newsletter` or `SpreeKlaviyo::AnalyticsEventHandler#handle_event` instead.')
39
+ klaviyo_integration = store_integration('klaviyo')
40
+ return unless klaviyo_integration
41
+
42
+ SpreeKlaviyo::SubscribeJob.perform_later(klaviyo_integration.id, email, id)
43
+ end
23
44
  end
24
45
  end
@@ -53,9 +53,12 @@ module SpreeKlaviyo
53
53
  nil
54
54
  end
55
55
 
56
- return if email&.strip&.blank? && identity_hash[:visitor_id].blank?
56
+ return if email.blank? && identity_hash[:visitor_id].blank?
57
57
 
58
- client.create_event(event: event_human_name(event_name), resource: record, email: email, guest_id: identity_hash[:visitor_id])
58
+ resource_type = record.nil? ? nil : (record.is_a?(String) ? 'String' : record.class.name)
59
+ resource_id = record.is_a?(String) ? record : record&.id
60
+
61
+ SpreeKlaviyo::AnalyticsEventJob.perform_later(client.id, event_human_name(event_name), resource_type, resource_id, email, identity_hash[:visitor_id])
59
62
  end
60
63
  end
61
64
  end
@@ -45,7 +45,7 @@ module SpreeKlaviyo
45
45
  total_quantity: shipped_items_quantity,
46
46
  price: shipped_item.line_item.price.to_f,
47
47
  total_price: shipped_item.line_item.amount.to_f,
48
- brand: brand_name(shipped_item.variant.product)
48
+ brand: shipped_item.variant.product.brand_name
49
49
  }.merge(try_variants(shipped_item.variant))
50
50
  end
51
51
  end
@@ -14,7 +14,9 @@ module SpreeKlaviyo
14
14
  end
15
15
 
16
16
  initializer 'spree_klaviyo.assets' do |app|
17
- app.config.assets.precompile += %w[spree_klaviyo_manifest]
17
+ if app.config.respond_to?(:assets)
18
+ app.config.assets.precompile += %w[spree_klaviyo_manifest]
19
+ end
18
20
  end
19
21
 
20
22
  def self.activate
@@ -1,5 +1,5 @@
1
1
  module SpreeKlaviyo
2
- VERSION = '1.0.3'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
 
4
4
  def gem_version
5
5
  Gem::Version.new(VERSION)
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_klaviyo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vendo Connect Inc.
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-08-14 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: spree
@@ -150,7 +149,6 @@ dependencies:
150
149
  - - ">="
151
150
  - !ruby/object:Gem::Version
152
151
  version: '0'
153
- description:
154
152
  email: hello@spreecommerce.org
155
153
  executables: []
156
154
  extensions: []
@@ -165,6 +163,7 @@ files:
165
163
  - app/controllers/spree_klaviyo/addresses_controller_decorator.rb
166
164
  - app/controllers/spree_klaviyo/profile_controller_decorator.rb
167
165
  - app/controllers/spree_klaviyo/user_registrations_controller_decorator.rb
166
+ - app/jobs/spree_klaviyo/analytics_event_job.rb
168
167
  - app/jobs/spree_klaviyo/base_job.rb
169
168
  - app/jobs/spree_klaviyo/create_back_in_stock_subscription_job.rb
170
169
  - app/jobs/spree_klaviyo/create_event_job.rb
@@ -211,7 +210,6 @@ homepage: https://github.com/spree/spree_klaviyo
211
210
  licenses:
212
211
  - AGPL-3.0-or-later
213
212
  metadata: {}
214
- post_install_message:
215
213
  rdoc_options: []
216
214
  require_paths:
217
215
  - lib
@@ -227,8 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
227
225
  version: '0'
228
226
  requirements:
229
227
  - none
230
- rubygems_version: 3.5.3
231
- signing_key:
228
+ rubygems_version: 4.0.2
232
229
  specification_version: 4
233
230
  summary: Official Spree Commerce Klaviyo email marketing integration
234
231
  test_files: []