diff --git a/lib/music_library_web/live/record_live/barcode_scanner_component.ex b/lib/music_library_web/live/record_live/barcode_scanner_component.ex index 858ba6bd..b503f64b 100644 --- a/lib/music_library_web/live/record_live/barcode_scanner_component.ex +++ b/lib/music_library_web/live/record_live/barcode_scanner_component.ex @@ -30,7 +30,7 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do @@ -92,6 +92,7 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do end attr :release, MusicBrainz.ReleaseSearchResult, required: true + attr :record_id, :string attr :status, :atom, required: true, values: [:collected, :wishlisted, :new] defp release(assigns) do @@ -163,13 +164,18 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do current_time = DateTime.utc_now() # TODO: error handling when a release fails to import :ok = - Enum.each(socket.assigns.releases, fn {status, release} -> + Enum.each(socket.assigns.releases, fn {status, record_id, release} -> if status == :new do Records.import_from_musicbrainz_release(release.id, format: MusicBrainz.ReleaseSearchResult.format(release), purchased_at: current_time ) end + + if status == :wishlisted do + record = Records.get_record!(record_id) + Records.update_record(record, %{"purchased_at" => current_time}) + end end) qs = %{order: :purchase} @@ -187,13 +193,13 @@ defmodule MusicLibraryWeb.RecordLive.BarcodeScannerComponent do release_with_status = case Records.get_release_status(release.id, format) do nil -> - {:new, release} + {:new, nil, release} - %{record_id: _, purchased_at: nil} -> - {:wishlisted, release} + %{record_id: record_id, purchased_at: nil} -> + {:wishlisted, record_id, release} - _collected -> - {:collected, release} + %{record_id: record_id} -> + {:collected, record_id, release} end assign(socket, :releases, [release_with_status | socket.assigns.releases]) diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index d7a43245..6089c34e 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -343,13 +343,13 @@ msgstr "" msgid "Choose which format to import" msgstr "" -#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:115 +#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:116 #: lib/music_library_web/live/stats_live/index.html.heex:141 #, elixir-autogen, elixir-format msgid "Collected" msgstr "" -#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:114 +#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:115 #: lib/music_library_web/live/stats_live/index.html.heex:147 #, elixir-autogen, elixir-format msgid "Wishlisted" @@ -647,12 +647,12 @@ msgstr "" msgid "Import releases" msgstr "" -#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:155 +#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:156 #, elixir-autogen, elixir-format msgid "Failed to search release for barcode %{number}" msgstr "" -#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:146 +#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:147 #, elixir-autogen, elixir-format msgid "No release found for barcode %{number}" msgstr "" @@ -662,12 +662,12 @@ msgstr "" msgid "Importing..." msgstr "" -#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:180 +#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:186 #, elixir-autogen, elixir-format msgid "Records imported successfully" msgstr "" -#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:113 +#: lib/music_library_web/live/record_live/barcode_scanner_component.ex:114 #, elixir-autogen, elixir-format msgid "New" msgstr ""