Module: Spree::Admin::AssetsHelper

Included in:
AssetsController, ProductsController
Defined in:
app/helpers/spree/admin/assets_helper.rb

Instance Method Summary collapse

Instance Method Details

#clear_session_for_uploaded_assets(viewable_type) ⇒ Object



29
30
31
# File 'app/helpers/spree/admin/assets_helper.rb', line 29

def clear_session_for_uploaded_assets(viewable_type)
  session.delete(session_uploaded_assets_uuid_key(viewable_type))
end

#ensure_session_uploaded_assets_uuid(viewable_type) ⇒ Object



14
15
16
# File 'app/helpers/spree/admin/assets_helper.rb', line 14

def ensure_session_uploaded_assets_uuid(viewable_type)
  session[session_uploaded_assets_uuid_key(viewable_type)] ||= SecureRandom.uuid
end

#media_form_assets(viewable, viewable_type) ⇒ Object



4
5
6
7
8
9
10
11
12
# File 'app/helpers/spree/admin/assets_helper.rb', line 4

def media_form_assets(viewable, viewable_type)
  if viewable&.persisted?
    viewable.images
  elsif session_uploaded_assets(viewable_type).any?
    Spree::Asset.accessible_by(current_ability, :manage).where(id: session_uploaded_assets(viewable_type))
  else
    []
  end
end

#session_uploaded_assets(viewable_type) ⇒ Object



23
24
25
26
27
# File 'app/helpers/spree/admin/assets_helper.rb', line 23

def session_uploaded_assets(viewable_type)
  return Spree::Asset.none if session[session_uploaded_assets_uuid_key(viewable_type)].blank?

  Spree::Asset.with_session_uploaded_assets_uuid(session[session_uploaded_assets_uuid_key(viewable_type)]).where(viewable_id: nil)
end

#session_uploaded_assets_uuid_key(viewable_type) ⇒ Object



33
34
35
36
37
38
39
# File 'app/helpers/spree/admin/assets_helper.rb', line 33

def session_uploaded_assets_uuid_key(viewable_type)
  [
    'spree.admin.uploaded_assets',
    viewable_type&.underscore,
    'uuid'
  ].compact_blank.join('.')
end

#store_uploaded_asset_in_session(asset, viewable_type) ⇒ Object



18
19
20
21
# File 'app/helpers/spree/admin/assets_helper.rb', line 18

def store_uploaded_asset_in_session(asset, viewable_type)
  ensure_session_uploaded_assets_uuid(viewable_type)
  asset.update(session_id: session[session_uploaded_assets_uuid_key(viewable_type)])
end