Link to wishlisted albums in scrobble activity
This commit is contained in:
@@ -21,14 +21,14 @@ defmodule MusicLibrary.Wishlist do
|
||||
Repo.aggregate(base_search(), :count)
|
||||
end
|
||||
|
||||
def wishlisted_release_ids(release_ids) do
|
||||
def wishlisted_releases(release_ids) do
|
||||
q =
|
||||
from r in fragment("records, json_each(records.release_ids)"),
|
||||
where: r.value in ^release_ids,
|
||||
where: fragment("records.purchased_at IS NULL"),
|
||||
select: r.value
|
||||
select: %{record_id: fragment("records.id"), release_id: r.value}
|
||||
|
||||
q |> Repo.all() |> MapSet.new()
|
||||
q |> Repo.all()
|
||||
end
|
||||
|
||||
defp base_search do
|
||||
|
||||
@@ -89,7 +89,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do
|
||||
recent_release_ids = recent_release_ids(recent_tracks)
|
||||
|
||||
collected_releases = Collection.collected_releases(recent_release_ids)
|
||||
wishlisted_release_ids = Wishlist.wishlisted_release_ids(recent_release_ids)
|
||||
wishlisted_releases = Wishlist.wishlisted_releases(recent_release_ids)
|
||||
|
||||
all_artist_ids = Artists.get_all_artist_ids()
|
||||
recent_artist_ids = recent_artist_ids(recent_tracks)
|
||||
@@ -97,7 +97,7 @@ defmodule MusicLibraryWeb.StatsLive.Index do
|
||||
|
||||
assign(socket,
|
||||
collected_releases: collected_releases,
|
||||
wishlisted_release_ids: wishlisted_release_ids,
|
||||
wishlisted_releases: wishlisted_releases,
|
||||
artist_ids: artist_ids
|
||||
)
|
||||
end
|
||||
@@ -117,8 +117,8 @@ defmodule MusicLibraryWeb.StatsLive.Index do
|
||||
|> MapSet.new()
|
||||
end
|
||||
|
||||
defp collected_record?(collected_releases, r_id) do
|
||||
Enum.find_value(collected_releases, fn %{record_id: record_id, release_id: release_id} ->
|
||||
defp tracked_record?(releases, r_id) do
|
||||
Enum.find_value(releases, fn %{record_id: record_id, release_id: release_id} ->
|
||||
if release_id == r_id, do: record_id
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -143,7 +143,7 @@
|
||||
{gettext("No MB ID")}
|
||||
</span>
|
||||
<.link
|
||||
:if={record_id = collected_record?(@collected_releases, track.album.musicbrainz_id)}
|
||||
:if={record_id = tracked_record?(@collected_releases, track.album.musicbrainz_id)}
|
||||
navigate={~p"/collection/#{record_id}"}
|
||||
>
|
||||
<span class={[
|
||||
@@ -157,26 +157,28 @@
|
||||
{gettext("Collected")}
|
||||
</span>
|
||||
</.link>
|
||||
<span
|
||||
:if={track.album.musicbrainz_id in @wishlisted_release_ids}
|
||||
class={[
|
||||
<.link
|
||||
:if={record_id = tracked_record?(@wishlisted_releases, track.album.musicbrainz_id)}
|
||||
navigate={~p"/wishlist/#{record_id}"}
|
||||
>
|
||||
<span class={[
|
||||
"inline-flex items-center rounded-md",
|
||||
"px-2 py-1 text-xs font-medium",
|
||||
"ring-1 ring-inset",
|
||||
"bg-yellow-50 dark:bg-yellow-400/10",
|
||||
"text-yellow-800 dark:text-yellow-500",
|
||||
"ring-yellow-600/20 dark:ring-yellow-400/20"
|
||||
]}
|
||||
>
|
||||
{gettext("Wishlisted")}
|
||||
</span>
|
||||
]}>
|
||||
{gettext("Wishlisted")}
|
||||
</span>
|
||||
</.link>
|
||||
</div>
|
||||
|
||||
<div
|
||||
:if={
|
||||
track.album.musicbrainz_id !== "" and
|
||||
!collected_record?(@collected_releases, track.album.musicbrainz_id) and
|
||||
track.album.musicbrainz_id not in @wishlisted_release_ids
|
||||
!tracked_record?(@collected_releases, track.album.musicbrainz_id) and
|
||||
!tracked_record?(@wishlisted_releases, track.album.musicbrainz_id)
|
||||
}
|
||||
class="relative flex-none"
|
||||
>
|
||||
|
||||
@@ -340,7 +340,7 @@ msgid "Scrobble activity"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/record_live/import_component.ex:80
|
||||
#: lib/music_library_web/live/stats_live/index.html.heex:191
|
||||
#: lib/music_library_web/live/stats_live/index.html.heex:193
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Choose which format to import"
|
||||
msgstr ""
|
||||
@@ -350,7 +350,7 @@ msgstr ""
|
||||
msgid "Collected"
|
||||
msgstr ""
|
||||
|
||||
#: lib/music_library_web/live/stats_live/index.html.heex:171
|
||||
#: lib/music_library_web/live/stats_live/index.html.heex:172
|
||||
#, elixir-autogen, elixir-format
|
||||
msgid "Wishlisted"
|
||||
msgstr ""
|
||||
|
||||
Reference in New Issue
Block a user