diff --git a/lib/music_library_web/components/add_record.ex b/lib/music_library_web/components/add_record.ex
index 182ff9fd..4ca91022 100644
--- a/lib/music_library_web/components/add_record.ex
+++ b/lib/music_library_web/components/add_record.ex
@@ -32,6 +32,9 @@ defmodule MusicLibraryWeb.Components.AddRecord do
autofocus
/>
+ <.alert :if={@error_message} color="danger" hide_close class="mx-4 mt-4">
+ {@error_message}
+
assign(:release_groups_count, 0)
|> assign(:release_groups_total_count, 0)
|> stream(:release_groups, [])
- |> assign(:loaded_all_results?, false)}
+ |> assign(:loaded_all_results?, false)
+ |> assign(:error_message, nil)}
end
@impl true
@@ -138,13 +142,21 @@ defmodule MusicLibraryWeb.Components.AddRecord do
if mb_query == "" do
socket
else
- {:ok, result} =
- MusicBrainz.search_release_group(mb_query, limit: @batch_size, offset: 0)
+ case MusicBrainz.search_release_group(mb_query, limit: @batch_size, offset: 0) do
+ {: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
- |> 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)
+ {:error, _reason} ->
+ assign(
+ socket,
+ :error_message,
+ gettext("Could not search MusicBrainz. Please try again.")
+ )
+ end
end
{:ok,
@@ -168,16 +180,27 @@ defmodule MusicLibraryWeb.Components.AddRecord do
end
def handle_event("search", %{"mb_query" => mb_query}, socket) do
- {:ok, result} =
- MusicBrainz.search_release_group(mb_query, limit: @batch_size, offset: 0)
+ case MusicBrainz.search_release_group(mb_query, limit: @batch_size, offset: 0) do
+ {: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,
- socket
- |> 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}))}
+ {:error, _reason} ->
+ {:noreply,
+ socket
+ |> assign(:error_message, gettext("Could not search MusicBrainz. Please try again."))
+ |> assign(:offset, 0)
+ |> assign(:release_groups_count, 0)
+ |> assign(:release_groups_total_count, 0)
+ |> stream(:release_groups, [], reset: true)
+ |> assign(:form, to_form(%{"mb_query" => mb_query}))}
+ end
end
def handle_event("load-more", _params, socket) do
diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot
index 6030a0b8..e317a572 100644
--- a/priv/gettext/default.pot
+++ b/priv/gettext/default.pot
@@ -2012,3 +2012,8 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "Chat about artist"
msgstr ""
+
+#: lib/music_library_web/components/add_record.ex
+#, elixir-autogen, elixir-format
+msgid "Could not search MusicBrainz. Please try again."
+msgstr ""
diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po
index 82612c57..d359e4fa 100644
--- a/priv/gettext/en/LC_MESSAGES/default.po
+++ b/priv/gettext/en/LC_MESSAGES/default.po
@@ -2012,3 +2012,8 @@ msgstr ""
#, elixir-autogen, elixir-format, fuzzy
msgid "Chat about artist"
msgstr ""
+
+#: lib/music_library_web/components/add_record.ex
+#, elixir-autogen, elixir-format
+msgid "Could not search MusicBrainz. Please try again."
+msgstr ""