spree_cm_commissioner 1.18.0.pre.pre2 → 1.18.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: 4397cedd70ecbd2c2b1055e1781ab2cec5e102fc49a026235bc4b343e339e175
4
- data.tar.gz: 030cd051f193e3e8f4b235a56bf42a7bfedcb003ecae825224352e79aa72655c
3
+ metadata.gz: 2c10fd2782b1a1ac7ecab5d27e02a49212f8e816f8f2325fadbcd717fe9882e9
4
+ data.tar.gz: 3b1b296e3403e5dd040063c19a3ac4952afafb617af17cd2ca924ea8df25de23
5
5
  SHA512:
6
- metadata.gz: 52d53b06702b30dcf5883997f8414d19f014cde234e3a5800e1590023354778c5b81f55ed3354ce30f922ef6607975dede7d17618432888c51d31d973f464971
7
- data.tar.gz: '036259fac1ae8b68277c951da23474ad9332ffee963670149f74789bd6750707f3561b219e802bef0631befc86de3fcfbc9da66ee56b5412c5846277284dee26'
6
+ metadata.gz: 1f31cf8a9073664246d505c0494b2da2dc6565ec14c57fae06f34320039a478af4d8a1e0ee5eb1e68c42a5de37baf393bee0e791f7d9dfb8fd2b66356f143566
7
+ data.tar.gz: e29ba3d6d3e2d8343209260edd69117fe67c14ea1c20c13891b6cd9930f044467daa7b2fffaff51ab27db42e98eb7f43a85254e33a4644927e3eb61a1e9d742f
data/Gemfile.lock CHANGED
@@ -34,7 +34,7 @@ GIT
34
34
  PATH
35
35
  remote: .
36
36
  specs:
37
- spree_cm_commissioner (1.18.0.pre.pre2)
37
+ spree_cm_commissioner (1.18.0)
38
38
  activerecord-multi-tenant
39
39
  activerecord_json_validator (~> 2.1, >= 2.1.3)
40
40
  aws-sdk-cloudfront
@@ -6,9 +6,8 @@ module SpreeCmCommissioner
6
6
  after_action :set_cache_control_for_cdn
7
7
  end
8
8
 
9
- # Override This Method based on your UseCase
10
9
  def max_age
11
- ENV.fetch('CONTENT_CACHE_MAX_AGE', 1.day.to_i).to_i
10
+ ENV.fetch('CONTENT_CACHE_MAX_AGE', '180')
12
11
  end
13
12
 
14
13
  def set_cache_control_for_cdn
@@ -38,7 +38,20 @@ module Spree
38
38
  def update
39
39
  spree_authorize! :update, spree_current_order, order_token
40
40
 
41
- update_dynamic_fields if guest_params[:guest_dynamic_fields_attributes]
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
42
55
 
43
56
  resource.assign_attributes(guest_params.except(:guest_dynamic_fields_attributes))
44
57
 
@@ -83,26 +96,6 @@ module Spree
83
96
  guest_dynamic_fields_attributes: %i[id dynamic_field_id dynamic_field_option_id value _destroy]
84
97
  )
85
98
  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
106
99
  end
107
100
  end
108
101
  end
@@ -48,7 +48,7 @@ module Spree
48
48
  quantity: add_item_params[:quantity],
49
49
  public_metadata: add_item_params[:public_metadata],
50
50
  private_metadata: add_item_params[:private_metadata],
51
- options: add_item_params[:options]&.to_h
51
+ options: add_item_params[:options]
52
52
  )
53
53
 
54
54
  render_order(result)
@@ -3,31 +3,19 @@ module SpreeCmCommissioner
3
3
  before_action :identify_request_source
4
4
  rescue_from StandardError, with: :handle_error
5
5
 
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]
6
+ def show
7
+ case params[:id]
8
+ when 'assetlinks.json'
9
+ render_preference(:preferred_assetlinks)
10
+ when 'apple-app-site-association'
11
+ render_preference(:preferred_apple_app_site_association)
26
12
  else
27
13
  render_not_found
28
14
  end
29
15
  end
30
16
 
17
+ private
18
+
31
19
  def identify_request_source
32
20
  host = params[:original_host].presence || request.host.downcase
33
21
 
@@ -37,6 +25,16 @@ module SpreeCmCommissioner
37
25
  @tenant = result.tenant
38
26
  end
39
27
 
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
+
40
38
  def render_not_found
41
39
  render json: { error: 'Not found' }, status: :not_found
42
40
  end
data/config/routes.rb CHANGED
@@ -669,6 +669,5 @@ 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/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'
672
+ get '.well-known/:id', to: 'spree_cm_commissioner/well_known#show', constraints: { id: /(assetlinks\.json|apple-app-site-association)/ }
674
673
  end
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '1.18.0-pre2'.freeze
2
+ VERSION = '1.18.0'.freeze
3
3
 
4
4
  module_function
5
5
 
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.0.pre.pre2
4
+ version: 1.18.0
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-09 00:00:00.000000000 Z
11
+ date: 2025-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree
@@ -1116,7 +1116,6 @@ 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
1120
1119
  - app/interactors/spree_cm_commissioner/update_payment_gateway_status.rb
1121
1120
  - app/interactors/spree_cm_commissioner/user_contact_updater.rb
1122
1121
  - app/interactors/spree_cm_commissioner/user_device_token_deregister.rb
@@ -2673,9 +2672,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
2673
2672
  version: '2.7'
2674
2673
  required_rubygems_version: !ruby/object:Gem::Requirement
2675
2674
  requirements:
2676
- - - ">"
2675
+ - - ">="
2677
2676
  - !ruby/object:Gem::Version
2678
- version: 1.3.1
2677
+ version: '0'
2679
2678
  requirements:
2680
2679
  - none
2681
2680
  rubygems_version: 3.4.1
@@ -1,54 +0,0 @@
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