spree_cm_commissioner 1.17.0.pre.pre7 → 1.18.0.pre.pre1
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 +1 -5
- data/app/controllers/concerns/spree_cm_commissioner/content_cachable.rb +2 -1
- data/app/controllers/spree/api/v2/storefront/guests_controller.rb +21 -14
- data/app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb +1 -1
- 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/app/models/spree_cm_commissioner/invite_team.rb +2 -0
- data/app/overrides/spree/admin/variants/_form/kyc_field.html.erb.deface +2 -2
- 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: 7c6c8c2151ba24667cc1e9b85cd4977c6f3745e3c74149039e62fc1c890c769f
|
4
|
+
data.tar.gz: de557da12a035a1bd7aca057b643212e3032947076b347fda2607ab5c610a77e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 640db753337cbeb97197940d575c5fea9ecccf4d64bf96fbf59b18ec2135b89a1165afe91a28d2f6a4270c2041cc4c4f14a4a42397f08c6c51433a585bc78062
|
7
|
+
data.tar.gz: dc0e18a7417112fdf20350f12d7558da7f8fc1002e6059c3595316d8da82a50a2dbcde94c07cef49282de7950c98ff16d2e703069166eb4e5a314c25ce0e8d4b
|
data/Gemfile.lock
CHANGED
@@ -34,7 +34,7 @@ GIT
|
|
34
34
|
PATH
|
35
35
|
remote: .
|
36
36
|
specs:
|
37
|
-
spree_cm_commissioner (1.
|
37
|
+
spree_cm_commissioner (1.18.0.pre.pre1)
|
38
38
|
activerecord-multi-tenant
|
39
39
|
activerecord_json_validator (~> 2.1, >= 2.1.3)
|
40
40
|
aws-sdk-cloudfront
|
@@ -572,10 +572,6 @@ 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)
|
579
575
|
noticed (1.6.3)
|
580
576
|
http (>= 4.0.0)
|
581
577
|
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,20 +38,7 @@ module Spree
|
|
38
38
|
def update
|
39
39
|
spree_authorize! :update, spree_current_order, order_token
|
40
40
|
|
41
|
-
if guest_params[:guest_dynamic_fields_attributes]
|
42
|
-
resource.guest_dynamic_fields.destroy_all
|
43
|
-
|
44
|
-
guest_params[:guest_dynamic_fields_attributes].each do |attr|
|
45
|
-
field = resource.guest_dynamic_fields.build(attr.except(:id))
|
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
|
50
|
-
end
|
51
|
-
|
52
|
-
field.save!
|
53
|
-
end
|
54
|
-
end
|
41
|
+
update_dynamic_fields if guest_params[:guest_dynamic_fields_attributes]
|
55
42
|
|
56
43
|
resource.assign_attributes(guest_params.except(:guest_dynamic_fields_attributes))
|
57
44
|
|
@@ -96,6 +83,26 @@ module Spree
|
|
96
83
|
guest_dynamic_fields_attributes: %i[id dynamic_field_id dynamic_field_option_id value _destroy]
|
97
84
|
)
|
98
85
|
end
|
86
|
+
|
87
|
+
def update_dynamic_fields
|
88
|
+
resource.guest_dynamic_fields.destroy_all
|
89
|
+
|
90
|
+
dynamic_fields_attrs = guest_params[:guest_dynamic_fields_attributes]
|
91
|
+
|
92
|
+
resource.guest_dynamic_fields = dynamic_fields_attrs.map do |attr|
|
93
|
+
build_dynamic_field(attr)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def build_dynamic_field(attr)
|
98
|
+
field = resource.guest_dynamic_fields.build(attr.except(:id))
|
99
|
+
|
100
|
+
if field.dynamic_field.requires_dynamic_field_options?
|
101
|
+
field.dynamic_field_option = field.dynamic_field.dynamic_field_options.find_by(id: field.value)
|
102
|
+
end
|
103
|
+
|
104
|
+
field
|
105
|
+
end
|
99
106
|
end
|
100
107
|
end
|
101
108
|
end
|
@@ -37,7 +37,7 @@ module SpreeCmCommissioner
|
|
37
37
|
bit_fields = SpreeCmCommissioner::KycBitwise::BIT_FIELDS.keys
|
38
38
|
|
39
39
|
if permitted_resource_params[:use_product_kyc] == '1'
|
40
|
-
permitted_resource_params[:kyc] =
|
40
|
+
permitted_resource_params[:kyc] = nil
|
41
41
|
else
|
42
42
|
@kyc_result = calculate_kyc_value(params[:variant])
|
43
43
|
permitted_resource_params[:kyc] = @kyc_result
|
@@ -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
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module SpreeCmCommissioner
|
2
2
|
class InviteTeam < SpreeCmCommissioner::Base
|
3
|
+
validates :email, presence: true, uniqueness: { scope: :vendor_id, message: I18n.t('invite.already_invited') }
|
4
|
+
|
3
5
|
belongs_to :user, class_name: 'Spree::User', optional: true
|
4
6
|
belongs_to :inviter, class_name: 'Spree::User'
|
5
7
|
belongs_to :vendor, class_name: 'Spree::Vendor'
|
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
<p>Guest Information Fields</p>
|
4
4
|
<div class="form-check mb-3">
|
5
|
-
<%= f.check_box :use_product_kyc, id: "toggleGuestInfo", class: 'form-check-input mr-2', checked:
|
5
|
+
<%= f.check_box :use_product_kyc, id: "toggleGuestInfo", class: 'form-check-input mr-2', checked: @variant.kyc.nil? %>
|
6
6
|
<label for="toggleGuestInfo" class="form-check-label">
|
7
7
|
Use Product Guest Information
|
8
8
|
</label>
|
9
9
|
</div>
|
10
10
|
|
11
|
-
<div id="guestInfoForm" <% if @variant.kyc
|
11
|
+
<div id="guestInfoForm" <% if @variant.kyc.nil? %>style="display: none;"<% end %>">
|
12
12
|
<small class="form-text text-muted mb-4">
|
13
13
|
<%= raw I18n.t('kyc.variant_note') %>
|
14
14
|
</small>
|
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.
|
4
|
+
version: 1.18.0.pre.pre1
|
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-08 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
|