Browse Source

refactor: DRY session name filter logic

pull/1675/head
natdeanlewissoftwire 3 years ago
parent
commit
8451ae440f
  1. 10
      app/helpers/filters_helper.rb
  2. 10
      app/services/filter_manager.rb

10
app/helpers/filters_helper.rb

@ -2,7 +2,7 @@ module FiltersHelper
def filter_selected?(filter, value, filter_type) def filter_selected?(filter, value, filter_type)
return false unless session["#{filter_type}_filters"] return false unless session["#{filter_type}_filters"]
selected_filters = JSON.parse(session["#{filter_type}_filters"]) selected_filters = JSON.parse(session[session_name_for(filter_type)])
return true if selected_filters.blank? && filter == "user" && value == :all return true if selected_filters.blank? && filter == "user" && value == :all
return true if !selected_filters.key?("organisation") && filter == "organisation_select" && value == :all return true if !selected_filters.key?("organisation") && filter == "organisation_select" && value == :all
return true if selected_filters["organisation"].present? && filter == "organisation_select" && value == :specific_org return true if selected_filters["organisation"].present? && filter == "organisation_select" && value == :specific_org
@ -22,7 +22,7 @@ module FiltersHelper
def selected_option(filter, filter_type) def selected_option(filter, filter_type)
return false unless session["#{filter_type}_filters"] return false unless session["#{filter_type}_filters"]
JSON.parse(session["#{filter_type}_filters"])[filter] || "" JSON.parse(session[[session_name_for(filter_type)]])[filter] || ""
end end
def organisations_filter_options(user) def organisations_filter_options(user)
@ -33,4 +33,10 @@ module FiltersHelper
def collection_year_options def collection_year_options
{ "2023": "2023/24", "2022": "2022/23", "2021": "2021/22" } { "2023": "2023/24", "2022": "2022/23", "2021": "2021/22" }
end end
private
def session_name_for(filter_type)
"#{filter_type}_filters"
end
end end

10
app/services/filter_manager.rb

@ -38,7 +38,7 @@ class FilterManager
end end
def serialize_filters_to_session(specific_org: false) def serialize_filters_to_session(specific_org: false)
session["#{@filter_type}_filters"] = session_filters(specific_org:).to_json session[session_name_for(filter_type)] = session_filters(specific_org:).to_json
end end
def session_filters(specific_org: false) def session_filters(specific_org: false)
@ -46,7 +46,7 @@ class FilterManager
end end
def deserialize_filters_from_session(specific_org) def deserialize_filters_from_session(specific_org)
current_filters = session["#{@filter_type}_filters"] current_filters = session[session_name_for(filter_type)]
new_filters = current_filters.present? ? JSON.parse(current_filters) : {} new_filters = current_filters.present? ? JSON.parse(current_filters) : {}
if @filter_type.include?("logs") if @filter_type.include?("logs")
current_user.logs_filters(specific_org:).each do |filter| current_user.logs_filters(specific_org:).each do |filter|
@ -69,6 +69,10 @@ class FilterManager
private private
def logs_filters def logs_filters
JSON.parse(session["#{@filter_type}_filters"] || "{}") || {} JSON.parse(session[session_name_for(filter_type)] || "{}") || {}
end
def session_name_for(filter_type)
"#{filter_type}_filters"
end end
end end

Loading…
Cancel
Save