# Customization
Within spree_gladly
gem we distinguish response for guest
and registerd
customer. For customize those, i.e detailed lookup response, to do that you have do following steps:
- replace
Customer::DetailedLookupPresenter
inconfig/initializers/spree_gladly.rb
initializer file with your own. - override methods
registerd_presenter
( default presenter (opens new window) ) orguest_presenter
( default presenter (opens new window) ) with your own.
Please consider below example:
class GladlyCustomersPresenter
include Spree::Core::Engine.routes.url_helpers # this is important if you want to use Spree routes
def initialize(resource:)
@resource = resource
end
def to_h
return [] unless resource.customer.present?
resource.guest ? guest_presenter : registered_presenter
end
private
attr_reader :resource
def registered_presenter
YourOwn::DetailedPresenter.new(resource: resource).to_h
end
def guest_presenter
Customer::Guest::DetailedPresenter.new(resource: resource).to_h
end
...
end
config/initializers/spree_gladly.rb
SpreeGladly.setup do |config|
# ...
config.basic_lookup_presenter = Customer::BasicLookupPresenter
config.detailed_lookup_presenter = GladlyCustomersPresenter
# ...
end
!!! Important !!!
If you would like to resign from to_h
or change initialize(resource:)
method, you have to override Spree::Api::V1::CustomersController#serialize_collection
to do that, please follow by this guide (opens new window)
app/controllers/spree/api/v1/customers_controller.rb
def serialize_collection(type:, collection:)
presenter = {
detailed: SpreeGladly::Config.detailed_lookup_presenter.new(resource: collection),
basic: SpreeGladly::Config.basic_lookup_presenter.new(resource: collection)
}[type]
{ results: presenter.to_h }
end