about summary refs log tree commit diff
path: root/app/helpers/admin/filter_helper.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/helpers/admin/filter_helper.rb')
-rw-r--r--app/helpers/admin/filter_helper.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/app/helpers/admin/filter_helper.rb b/app/helpers/admin/filter_helper.rb
new file mode 100644
index 000000000..591056dd7
--- /dev/null
+++ b/app/helpers/admin/filter_helper.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module Admin::FilterHelper
+  ACCOUNT_FILTERS = %i[local remote by_domain silenced suspended recent].freeze
+  REPORT_FILTERS = %i[resolved].freeze
+
+  FILTERS = ACCOUNT_FILTERS + REPORT_FILTERS
+
+  def filter_link_to(text, more_params)
+    new_url = filtered_url_for(more_params)
+    link_to text, new_url, class: filter_link_class(new_url)
+  end
+
+  def table_link_to(icon, text, path, options = {})
+    link_to safe_join([fa_icon(icon), text]), path, options.merge(class: 'table-action-link')
+  end
+
+  private
+
+  def filter_params(more_params)
+    params.permit(FILTERS).merge(more_params)
+  end
+
+  def filter_link_class(new_url)
+    filtered_url_for(params) == new_url ? 'selected' : ''
+  end
+
+  def filtered_url_for(params)
+    url_for filter_params(params)
+  end
+end