Module: Avo::Concerns::FiltersSessionHandler

Included in:
BaseController
Defined in:
lib/avo/concerns/filters_session_handler.rb

Instance Method Summary collapse

Instance Method Details

#cache_resource_filters?Boolean

Returns:

  • (Boolean)


36
37
38
39
40
# File 'lib/avo/concerns/filters_session_handler.rb', line 36

def cache_resource_filters?
  return Avo.configuration.cache_resource_filters unless Avo.configuration.cache_resource_filters.is_a?(Proc)

  Avo.configuration.cache_resource_filters.call(current_user: current_user, resource: @resource)
end

#fetch_filtersObject



11
12
13
14
15
# File 'lib/avo/concerns/filters_session_handler.rb', line 11

def fetch_filters
  return filters_from_params unless cache_resource_filters?

  (filters_from_params && save_filters_to_session) || filters_from_session
end

#filters_from_paramsObject



17
18
19
# File 'lib/avo/concerns/filters_session_handler.rb', line 17

def filters_from_params
  params[Avo::Filters::BaseFilter::PARAM_KEY].presence
end

#filters_from_sessionObject



25
26
27
# File 'lib/avo/concerns/filters_session_handler.rb', line 25

def filters_from_session
  session[filters_session_key]
end

#filters_session_keyObject



29
30
31
32
33
34
# File 'lib/avo/concerns/filters_session_handler.rb', line 29

def filters_session_key
  @filters_session_key ||= '/filters/' << %w[
    turbo_frame controller resource_name related_name
    action id
  ].map { |key| params[key] }.compact.join('/')
end

#reset_filtersObject



5
6
7
8
9
# File 'lib/avo/concerns/filters_session_handler.rb', line 5

def reset_filters
  return unless cache_resource_filters?

  session.delete(filters_session_key)
end

#save_filters_to_sessionObject



21
22
23
# File 'lib/avo/concerns/filters_session_handler.rb', line 21

def save_filters_to_session
  session[filters_session_key] = params[Avo::Filters::BaseFilter::PARAM_KEY]
end