hide system events by default on activity page
All checks were successful
deploy / deploy (push) Successful in 1h1m58s
All checks were successful
deploy / deploy (push) Successful in 1h1m58s
Adds a toggle to show/hide internal system events (syncs, job failures, abandoned cart creation) on the activity feed. Hidden by default so shop owners only see actionable items. Toggle is ephemeral — resets on page load. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,11 @@ defmodule Berrypod.ActivityLog do
|
||||
alias Berrypod.Repo
|
||||
alias Berrypod.ActivityLog.Entry
|
||||
|
||||
@system_event_types ~w(sync.started sync.completed sync.failed job.exhausted abandoned_cart.created)
|
||||
|
||||
@doc "Returns true if the event type is internal system noise."
|
||||
def system_event_type?(event_type), do: event_type in @system_event_types
|
||||
|
||||
# ── Write ──
|
||||
|
||||
@doc """
|
||||
@@ -71,6 +76,7 @@ defmodule Berrypod.ActivityLog do
|
||||
* `:tab` - "all" (default) or "attention" (unresolved warnings/errors)
|
||||
* `:category` - "orders", "syncs", "emails", "carts", or nil for all
|
||||
* `:search` - order number substring search
|
||||
* `:hide_system` - exclude system event types (default false)
|
||||
|
||||
"""
|
||||
def list_recent(opts \\ []) do
|
||||
@@ -78,6 +84,7 @@ defmodule Berrypod.ActivityLog do
|
||||
|> order_by([a], desc: a.occurred_at)
|
||||
|> maybe_filter_tab(opts[:tab])
|
||||
|> maybe_filter_category(opts[:category])
|
||||
|> maybe_hide_system(opts[:hide_system])
|
||||
|> maybe_search_order_number(opts[:search])
|
||||
|> Berrypod.Pagination.paginate(page: opts[:page], per_page: 50)
|
||||
end
|
||||
@@ -165,6 +172,12 @@ defmodule Berrypod.ActivityLog do
|
||||
|
||||
defp maybe_filter_category(query, _), do: query
|
||||
|
||||
defp maybe_hide_system(query, true) do
|
||||
where(query, [a], a.event_type not in ^@system_event_types)
|
||||
end
|
||||
|
||||
defp maybe_hide_system(query, _), do: query
|
||||
|
||||
defp maybe_search_order_number(query, search) when is_binary(search) and search != "" do
|
||||
query
|
||||
|> join(:inner, [a], o in "orders", on: a.order_id == o.id)
|
||||
|
||||
Reference in New Issue
Block a user