Account for search errors in the add record component

This commit is contained in:
Claudio Ortolina
2026-02-25 08:04:20 +00:00
parent 561cd02ec7
commit 0f2ace4920
3 changed files with 49 additions and 16 deletions
+39 -16
View File
@@ -32,6 +32,9 @@ defmodule MusicLibraryWeb.Components.AddRecord do
autofocus autofocus
/> />
</.simple_form> </.simple_form>
<.alert :if={@error_message} color="danger" hide_close class="mx-4 mt-4">
{@error_message}
</.alert>
<ul <ul
id="release-groups" id="release-groups"
phx-update="stream" phx-update="stream"
@@ -127,7 +130,8 @@ defmodule MusicLibraryWeb.Components.AddRecord do
|> assign(:release_groups_count, 0) |> assign(:release_groups_count, 0)
|> assign(:release_groups_total_count, 0) |> assign(:release_groups_total_count, 0)
|> stream(:release_groups, []) |> stream(:release_groups, [])
|> assign(:loaded_all_results?, false)} |> assign(:loaded_all_results?, false)
|> assign(:error_message, nil)}
end end
@impl true @impl true
@@ -138,13 +142,21 @@ defmodule MusicLibraryWeb.Components.AddRecord do
if mb_query == "" do if mb_query == "" do
socket socket
else else
{:ok, result} = case MusicBrainz.search_release_group(mb_query, limit: @batch_size, offset: 0) do
MusicBrainz.search_release_group(mb_query, limit: @batch_size, offset: 0) {:ok, result} ->
socket
|> assign(:error_message, nil)
|> assign(:release_groups_count, Enum.count(result.release_groups))
|> assign(:release_groups_total_count, result.total_count)
|> stream(:release_groups, result.release_groups, reset: true)
socket {:error, _reason} ->
|> assign(:release_groups_count, Enum.count(result.release_groups)) assign(
|> assign(:release_groups_total_count, result.total_count) socket,
|> stream(:release_groups, result.release_groups, reset: true) :error_message,
gettext("Could not search MusicBrainz. Please try again.")
)
end
end end
{:ok, {:ok,
@@ -168,16 +180,27 @@ defmodule MusicLibraryWeb.Components.AddRecord do
end end
def handle_event("search", %{"mb_query" => mb_query}, socket) do def handle_event("search", %{"mb_query" => mb_query}, socket) do
{:ok, result} = case MusicBrainz.search_release_group(mb_query, limit: @batch_size, offset: 0) do
MusicBrainz.search_release_group(mb_query, limit: @batch_size, offset: 0) {:ok, result} ->
{:noreply,
socket
|> assign(:error_message, nil)
|> assign(:offset, 0)
|> assign(:release_groups_count, length(result.release_groups))
|> assign(:release_groups_total_count, result.total_count)
|> stream(:release_groups, result.release_groups, reset: true)
|> assign(:form, to_form(%{"mb_query" => mb_query}))}
{:noreply, {:error, _reason} ->
socket {:noreply,
|> assign(:offset, 0) socket
|> assign(:release_groups_count, length(result.release_groups)) |> assign(:error_message, gettext("Could not search MusicBrainz. Please try again."))
|> assign(:release_groups_total_count, result.total_count) |> assign(:offset, 0)
|> stream(:release_groups, result.release_groups, reset: true) |> assign(:release_groups_count, 0)
|> assign(:form, to_form(%{"mb_query" => mb_query}))} |> assign(:release_groups_total_count, 0)
|> stream(:release_groups, [], reset: true)
|> assign(:form, to_form(%{"mb_query" => mb_query}))}
end
end end
def handle_event("load-more", _params, socket) do def handle_event("load-more", _params, socket) do
+5
View File
@@ -2012,3 +2012,8 @@ msgstr ""
#, elixir-autogen, elixir-format #, elixir-autogen, elixir-format
msgid "Chat about artist" msgid "Chat about artist"
msgstr "" msgstr ""
#: lib/music_library_web/components/add_record.ex
#, elixir-autogen, elixir-format
msgid "Could not search MusicBrainz. Please try again."
msgstr ""
+5
View File
@@ -2012,3 +2012,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy #, elixir-autogen, elixir-format, fuzzy
msgid "Chat about artist" msgid "Chat about artist"
msgstr "" msgstr ""
#: lib/music_library_web/components/add_record.ex
#, elixir-autogen, elixir-format
msgid "Could not search MusicBrainz. Please try again."
msgstr ""