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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user