Remove custom debouncing
Search is already debounced via phx-debounce, and doesn't need extra handling via `handle_info` (which doesn't really help anyway - Claude added it without thinking it through).
This commit is contained in:
@@ -28,17 +28,28 @@ defmodule MusicLibraryWeb.UniversalSearchLive.Index do
|
|||||||
|
|
||||||
@impl true
|
@impl true
|
||||||
def handle_event("search", %{"query" => query}, socket) do
|
def handle_event("search", %{"query" => query}, socket) do
|
||||||
socket = assign(socket, :search_query, query)
|
|
||||||
|
|
||||||
case String.trim(query) do
|
case String.trim(query) do
|
||||||
"" ->
|
"" ->
|
||||||
{:noreply,
|
{:noreply,
|
||||||
socket
|
socket
|
||||||
|
|> assign(:search_query, "")
|
||||||
|> reset()}
|
|> reset()}
|
||||||
|
|
||||||
_query ->
|
query ->
|
||||||
send(self(), {:perform_search, query})
|
search_results = Search.universal_search(query, limit: 5)
|
||||||
{:noreply, socket}
|
search_counts = Search.search_counts(query)
|
||||||
|
|
||||||
|
total_results =
|
||||||
|
length(search_results.collection) +
|
||||||
|
length(search_results.wishlist) +
|
||||||
|
length(search_results.artists)
|
||||||
|
|
||||||
|
{:noreply,
|
||||||
|
socket
|
||||||
|
|> assign(:search_query, query)
|
||||||
|
|> assign(:search_results, search_results)
|
||||||
|
|> assign(:search_counts, search_counts)
|
||||||
|
|> assign(:total_results, total_results)}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -104,26 +115,4 @@ defmodule MusicLibraryWeb.UniversalSearchLive.Index do
|
|||||||
|> assign(:search_counts, %{collection_count: 0, wishlist_count: 0, artists_count: 0})
|
|> assign(:search_counts, %{collection_count: 0, wishlist_count: 0, artists_count: 0})
|
||||||
|> assign(:total_results, 0)
|
|> assign(:total_results, 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
@impl true
|
|
||||||
def handle_info({:perform_search, query}, socket) do
|
|
||||||
# Only search if the query hasn't changed (debouncing)
|
|
||||||
if query == socket.assigns.search_query do
|
|
||||||
search_results = Search.universal_search(query, limit: 5)
|
|
||||||
search_counts = Search.search_counts(query)
|
|
||||||
|
|
||||||
total_results =
|
|
||||||
length(search_results.collection) +
|
|
||||||
length(search_results.wishlist) +
|
|
||||||
length(search_results.artists)
|
|
||||||
|
|
||||||
{:noreply,
|
|
||||||
socket
|
|
||||||
|> assign(:search_results, search_results)
|
|
||||||
|> assign(:search_counts, search_counts)
|
|
||||||
|> assign(:total_results, total_results)}
|
|
||||||
else
|
|
||||||
{:noreply, socket}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user