Module: Spree::Admin::JsonPreviewHelper

Defined in:
app/helpers/spree/admin/json_preview_helper.rb

Instance Method Summary collapse

Instance Method Details

#admin_serializer_exists?(record) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
# File 'app/helpers/spree/admin/json_preview_helper.rb', line 28

def admin_serializer_exists?(record)
  admin_serializer_for(record).present?
end

#json_serializers_available?(record) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'app/helpers/spree/admin/json_preview_helper.rb', line 20

def json_serializers_available?(record)
  store_serializer_exists?(record) || admin_serializer_exists?(record)
end


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'app/helpers/spree/admin/json_preview_helper.rb', line 4

def link_to_show_json(record, options = {})
  return unless json_serializers_available?(record)
  return unless can?(:read, record)
  return unless can?(:read, :json_preview)

  options[:class] ||= 'dropdown-item'
  options[:data] ||= { action: 'drawer#open', turbo_frame: :drawer }

  link_to_with_icon(
    'code',
    Spree.t('admin.show_json'),
    spree.admin_json_preview_resource_path(record.to_param, resource_type: record.class.to_s),
    options
  )
end

#serialize_to_json(record, api_type: :store) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'app/helpers/spree/admin/json_preview_helper.rb', line 32

def serialize_to_json(record, api_type: :store)
  return unless record

  serializer = case api_type.to_sym
               when :store
                 store_serializer_for(record)
               when :admin
                 admin_serializer_for(record)
               end

  return nil unless serializer

  # Alba serializers use .new(object, params: {}).to_h
  serialized_hash = serializer.new(
    record,
    params: serializer_params(record, api_type)
  ).to_h

  JSON.pretty_generate(serialized_hash)
end

#store_serializer_exists?(record) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'app/helpers/spree/admin/json_preview_helper.rb', line 24

def store_serializer_exists?(record)
  store_serializer_for(record).present?
end