spree_cm_commissioner 1.18.0 → 1.18.1
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/Gemfile.lock +5 -1
- data/app/controllers/concerns/spree_cm_commissioner/content_cachable.rb +2 -1
- data/app/controllers/spree/api/v2/storefront/guests_controller.rb +25 -16
- data/app/controllers/spree_cm_commissioner/well_known_controller.rb +20 -18
- data/app/interactors/spree_cm_commissioner/universal_link_fetcher.rb +54 -0
- data/config/routes.rb +2 -1
- data/lib/spree_cm_commissioner/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60a9ca64e7401f96f8cb7e220a28a12ca89d7bc84ce724b0e7751e1c0abf1d0e
|
4
|
+
data.tar.gz: cb4e4fbfd87c785a73c23ee8fd3a02fadacf864d5c905df5a654c56069a79769
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0db6f0473e7663f28e179e51cc68034c6b96315d402a38bb49fef0669ba23ae46cc615d7ee350ec551b1c7fd1686a724a1aef0057ce2b4f637913766c8cdd8c9
|
7
|
+
data.tar.gz: bf5d35d082edc126bcead686c1d1de3e74f2a2bed22a1cbdd62e60dea23679c007ff1fb523f0a3447a3b598b1e3c66838b28f35e408b82024de877c5da237657
|
data/Gemfile.lock
CHANGED
@@ -34,7 +34,7 @@ GIT
|
|
34
34
|
PATH
|
35
35
|
remote: .
|
36
36
|
specs:
|
37
|
-
spree_cm_commissioner (1.18.
|
37
|
+
spree_cm_commissioner (1.18.1)
|
38
38
|
activerecord-multi-tenant
|
39
39
|
activerecord_json_validator (~> 2.1, >= 2.1.3)
|
40
40
|
aws-sdk-cloudfront
|
@@ -572,6 +572,10 @@ GEM
|
|
572
572
|
nokogiri (1.15.4)
|
573
573
|
mini_portile2 (~> 2.8.2)
|
574
574
|
racc (~> 1.4)
|
575
|
+
nokogiri (1.15.4-x86_64-darwin)
|
576
|
+
racc (~> 1.4)
|
577
|
+
nokogiri (1.15.4-x86_64-linux)
|
578
|
+
racc (~> 1.4)
|
575
579
|
noticed (1.6.3)
|
576
580
|
http (>= 4.0.0)
|
577
581
|
rails (>= 5.2.0)
|
@@ -6,8 +6,9 @@ module SpreeCmCommissioner
|
|
6
6
|
after_action :set_cache_control_for_cdn
|
7
7
|
end
|
8
8
|
|
9
|
+
# Override This Method based on your UseCase
|
9
10
|
def max_age
|
10
|
-
ENV.fetch('CONTENT_CACHE_MAX_AGE',
|
11
|
+
ENV.fetch('CONTENT_CACHE_MAX_AGE', 1.day.to_i).to_i
|
11
12
|
end
|
12
13
|
|
13
14
|
def set_cache_control_for_cdn
|
@@ -38,27 +38,25 @@ module Spree
|
|
38
38
|
def update
|
39
39
|
spree_authorize! :update, spree_current_order, order_token
|
40
40
|
|
41
|
-
|
42
|
-
|
41
|
+
begin
|
42
|
+
if guest_params[:guest_dynamic_fields_attributes]
|
43
|
+
resource.guest_dynamic_fields.destroy_all
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
if field.dynamic_field.requires_dynamic_field_options?
|
48
|
-
option = field.dynamic_field.dynamic_field_options.find_by(id: field.value)
|
49
|
-
field.dynamic_field_option = option if option
|
45
|
+
guest_params[:guest_dynamic_fields_attributes].each do |attr|
|
46
|
+
field = build_dynamic_field(attr)
|
47
|
+
field.save!
|
50
48
|
end
|
51
|
-
|
52
|
-
field.save!
|
53
49
|
end
|
54
|
-
end
|
55
50
|
|
56
|
-
|
51
|
+
resource.assign_attributes(guest_params.except(:guest_dynamic_fields_attributes))
|
57
52
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
53
|
+
if resource.save
|
54
|
+
render_serialized_payload { serialize_resource(resource) }
|
55
|
+
else
|
56
|
+
render_error_payload(resource.errors, 400)
|
57
|
+
end
|
58
|
+
rescue ActiveRecord::RecordInvalid => e
|
59
|
+
render_error_payload(e.record.errors, 400)
|
62
60
|
end
|
63
61
|
end
|
64
62
|
|
@@ -96,6 +94,17 @@ module Spree
|
|
96
94
|
guest_dynamic_fields_attributes: %i[id dynamic_field_id dynamic_field_option_id value _destroy]
|
97
95
|
)
|
98
96
|
end
|
97
|
+
|
98
|
+
def build_dynamic_field(attr)
|
99
|
+
field = resource.guest_dynamic_fields.build(attr.except(:id))
|
100
|
+
|
101
|
+
if field.dynamic_field.requires_dynamic_field_options?
|
102
|
+
option = field.dynamic_field.dynamic_field_options.find_by(id: field.value)
|
103
|
+
field.dynamic_field_option = option if option
|
104
|
+
end
|
105
|
+
|
106
|
+
field
|
107
|
+
end
|
99
108
|
end
|
100
109
|
end
|
101
110
|
end
|
@@ -3,19 +3,31 @@ module SpreeCmCommissioner
|
|
3
3
|
before_action :identify_request_source
|
4
4
|
rescue_from StandardError, with: :handle_error
|
5
5
|
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
6
|
+
def assetlinks_json
|
7
|
+
render_universal_link('assetlinks.json')
|
8
|
+
end
|
9
|
+
|
10
|
+
def apple_app_site_association
|
11
|
+
render_universal_link('apple-app-site-association')
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def render_universal_link(universal_link)
|
17
|
+
result = SpreeCmCommissioner::UniversalLinkFetcher.new(
|
18
|
+
universal_link: universal_link,
|
19
|
+
store: @store,
|
20
|
+
tenant: @tenant,
|
21
|
+
refresh: params[:_refresh].to_s == 'true'
|
22
|
+
).call
|
23
|
+
|
24
|
+
if result[:success]
|
25
|
+
render json: result[:data]
|
12
26
|
else
|
13
27
|
render_not_found
|
14
28
|
end
|
15
29
|
end
|
16
30
|
|
17
|
-
private
|
18
|
-
|
19
31
|
def identify_request_source
|
20
32
|
host = params[:original_host].presence || request.host.downcase
|
21
33
|
|
@@ -25,16 +37,6 @@ module SpreeCmCommissioner
|
|
25
37
|
@tenant = result.tenant
|
26
38
|
end
|
27
39
|
|
28
|
-
def render_preference(preference_key)
|
29
|
-
if @store&.send(preference_key).present?
|
30
|
-
render json: @store.send(preference_key)
|
31
|
-
elsif @tenant&.send(preference_key).present?
|
32
|
-
render json: @tenant.send(preference_key)
|
33
|
-
else
|
34
|
-
render_not_found
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
40
|
def render_not_found
|
39
41
|
render json: { error: 'Not found' }, status: :not_found
|
40
42
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module SpreeCmCommissioner
|
2
|
+
class UniversalLinkFetcher < BaseInteractor
|
3
|
+
delegate :universal_link, :store, :tenant, :refresh, to: :context
|
4
|
+
|
5
|
+
def call
|
6
|
+
return not_found unless resource
|
7
|
+
|
8
|
+
data = load_cached_preference(resource)
|
9
|
+
return not_found if data.blank?
|
10
|
+
|
11
|
+
{ success: true, data: data }
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def resource
|
17
|
+
@resource ||= store.presence || tenant
|
18
|
+
end
|
19
|
+
|
20
|
+
def load_cached_preference(resource)
|
21
|
+
preference_key = preference_key_for(universal_link)
|
22
|
+
return nil unless preference_key && resource.respond_to?(preference_key)
|
23
|
+
|
24
|
+
updated_at = resource.try(:updated_at)&.to_i || 'no_updated_at'
|
25
|
+
cache_key = build_cache_key(universal_link, resource, updated_at)
|
26
|
+
|
27
|
+
CmAppLogger.log(label: 'LOOKING_UP_CACHE', data: { cache_key: cache_key })
|
28
|
+
|
29
|
+
Rails.cache.delete(cache_key) if refresh
|
30
|
+
|
31
|
+
Rails.cache.fetch(cache_key, expires_in: 1.day, force: refresh) do
|
32
|
+
CmAppLogger.log(label: 'CACHE_MISS', data: { cache_key: cache_key })
|
33
|
+
resource.public_send(preference_key).presence
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def build_cache_key(universal_link, resource, updated_at)
|
38
|
+
"well_known:#{universal_link}:#{resource.class.name}:#{resource.id}:#{updated_at}"
|
39
|
+
end
|
40
|
+
|
41
|
+
def preference_key_for(universal_link)
|
42
|
+
case universal_link
|
43
|
+
when 'assetlinks.json'
|
44
|
+
:preferred_assetlinks
|
45
|
+
when 'apple-app-site-association'
|
46
|
+
:preferred_apple_app_site_association
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def not_found
|
51
|
+
{ success: false, error: 'Not found' }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/config/routes.rb
CHANGED
@@ -669,5 +669,6 @@ Rails.application.routes.draw do
|
|
669
669
|
get 'o/:id', to: 'spree_cm_commissioner/orders#show', as: 'order'
|
670
670
|
get 'li/:id', to: 'spree_cm_commissioner/line_item_qr_images#show', as: 'line_item_qr_image'
|
671
671
|
get 'g/:id', to: 'spree_cm_commissioner/guest_cards#show', as: 'guest_cards'
|
672
|
-
get '.well-known
|
672
|
+
get '.well-known/assetlinks.json', to: 'spree_cm_commissioner/well_known#assetlinks_json'
|
673
|
+
get '.well-known/apple-app-site-association', to: 'spree_cm_commissioner/well_known#apple_app_site_association'
|
673
674
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_cm_commissioner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.18.
|
4
|
+
version: 1.18.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- You
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-07-
|
11
|
+
date: 2025-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree
|
@@ -1116,6 +1116,7 @@ files:
|
|
1116
1116
|
- app/interactors/spree_cm_commissioner/telegram_web_app_vendor_user_checker.rb
|
1117
1117
|
- app/interactors/spree_cm_commissioner/transactional_email_sender.rb
|
1118
1118
|
- app/interactors/spree_cm_commissioner/unique_device_token_cron_executor.rb
|
1119
|
+
- app/interactors/spree_cm_commissioner/universal_link_fetcher.rb
|
1119
1120
|
- app/interactors/spree_cm_commissioner/update_payment_gateway_status.rb
|
1120
1121
|
- app/interactors/spree_cm_commissioner/user_contact_updater.rb
|
1121
1122
|
- app/interactors/spree_cm_commissioner/user_device_token_deregister.rb
|