From 8451ae440fa5b2bca89718079309a0257de2df4a Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Mon, 5 Jun 2023 17:32:26 +0100 Subject: [PATCH] refactor: DRY session name filter logic --- app/helpers/filters_helper.rb | 10 ++++++++-- app/services/filter_manager.rb | 10 +++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/helpers/filters_helper.rb b/app/helpers/filters_helper.rb index 582a6beb3..42a769306 100644 --- a/app/helpers/filters_helper.rb +++ b/app/helpers/filters_helper.rb @@ -2,7 +2,7 @@ module FiltersHelper def filter_selected?(filter, value, filter_type) 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.key?("organisation") && filter == "organisation_select" && value == :all 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) return false unless session["#{filter_type}_filters"] - JSON.parse(session["#{filter_type}_filters"])[filter] || "" + JSON.parse(session[[session_name_for(filter_type)]])[filter] || "" end def organisations_filter_options(user) @@ -33,4 +33,10 @@ module FiltersHelper def collection_year_options { "2023": "2023/24", "2022": "2022/23", "2021": "2021/22" } end + +private + + def session_name_for(filter_type) + "#{filter_type}_filters" + end end diff --git a/app/services/filter_manager.rb b/app/services/filter_manager.rb index ce5859e81..af54a7f02 100644 --- a/app/services/filter_manager.rb +++ b/app/services/filter_manager.rb @@ -38,7 +38,7 @@ class FilterManager end 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 def session_filters(specific_org: false) @@ -46,7 +46,7 @@ class FilterManager end 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) : {} if @filter_type.include?("logs") current_user.logs_filters(specific_org:).each do |filter| @@ -69,6 +69,10 @@ class FilterManager private 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