ML-168: broadcast index_changed event after background import

Import workers now broadcast :records_index_changed on
"records:index_changed" after successful import via
Records.broadcast_index_changed/0.

CollectionLive.Index and WishlistLive.Index subscribe to the
topic in mount/3 and reload their record streams on receipt,
with a live_action guard to skip reloads when the grid is
hidden behind a modal (:import, :barcode_scan).

IndexActions.handle_index_changed/1 refreshes total_entries
before reloading to keep the pagination bar accurate.
This commit is contained in:
Claudio Ortolina
2026-05-14 16:53:28 +01:00
parent d878364423
commit a59dd22a18
13 changed files with 252 additions and 16 deletions
+17
View File
@@ -126,4 +126,21 @@ defmodule MusicLibrary.Records do
{:update, record}
)
end
@doc """
Broadcasts that the records index has changed (new record imported, deleted, etc.).
Index LiveViews subscribe to this topic to auto-refresh.
"""
@spec broadcast_index_changed() :: :ok
def broadcast_index_changed do
Phoenix.PubSub.broadcast(MusicLibrary.PubSub, "records:index_changed", :records_index_changed)
end
@doc """
Subscribes the calling process to records index change notifications.
"""
@spec subscribe_to_index() :: :ok | {:error, term()}
def subscribe_to_index do
Phoenix.PubSub.subscribe(MusicLibrary.PubSub, "records:index_changed")
end
end