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 +4 -4
- data/app/jobs/spree_klaviyo/analytics_event_job.rb +25 -0
- data/app/models/concerns/spree_klaviyo/user_methods.rb +21 -0
- data/app/models/spree_klaviyo/analytics_event_handler.rb +5 -2
- data/app/presenters/spree_klaviyo/shipment_presenter.rb +1 -1
- data/lib/spree_klaviyo/engine.rb +3 -1
- data/lib/spree_klaviyo/version.rb +1 -1
- metadata +4 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 95b3a0a2276094c5e1535bdaa822be253a7410f2f44046fffed49fee6529555d
|
|
4
|
+
data.tar.gz: 1d4d258600b546f9dda0821dd4f65ead9039688f41ba19e1980c1f36c424cea2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
56
|
+
return if email.blank? && identity_hash[:visitor_id].blank?
|
|
57
57
|
|
|
58
|
-
|
|
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:
|
|
48
|
+
brand: shipped_item.variant.product.brand_name
|
|
49
49
|
}.merge(try_variants(shipped_item.variant))
|
|
50
50
|
end
|
|
51
51
|
end
|
data/lib/spree_klaviyo/engine.rb
CHANGED
|
@@ -14,7 +14,9 @@ module SpreeKlaviyo
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
initializer 'spree_klaviyo.assets' do |app|
|
|
17
|
-
app.config.assets
|
|
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
|
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
|
|
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:
|
|
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:
|
|
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: []
|