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
-
- <.release status={status} release={release} />
+ <.release status={status} record_id={record_id} release={release} />
@@ -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 ""