From 76438360d7ba38c62f50024001d8355db5b8f2b7 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Mon, 13 Apr 2026 13:11:15 +0100 Subject: [PATCH] Load collection summary asynchronously on mount --- .../live/collection_live/index.ex | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/music_library_web/live/collection_live/index.ex b/lib/music_library_web/live/collection_live/index.ex index 02b1a640..41718951 100644 --- a/lib/music_library_web/live/collection_live/index.ex +++ b/lib/music_library_web/live/collection_live/index.ex @@ -237,8 +237,9 @@ defmodule MusicLibraryWeb.CollectionLive.Index do |> assign(:import_query, "") |> assign(:display, :grid) |> assign(:open_chat, false) - |> assign(:collection_summary, Collection.collection_summary()) - |> assign(:chat_count, Chats.count_chats(:collection, Chats.collection_musicbrainz_id()))} + |> assign(:collection_summary, {"", 0}) + |> assign(:chat_count, Chats.count_chats(:collection, Chats.collection_musicbrainz_id())) + |> start_async(:collection_summary, &Collection.collection_summary/0)} end @impl true @@ -298,6 +299,15 @@ defmodule MusicLibraryWeb.CollectionLive.Index do {:noreply, assign(socket, :chat_count, chat_count)} end + @impl true + def handle_async(:collection_summary, {:ok, summary}, socket) do + {:noreply, assign(socket, :collection_summary, summary)} + end + + def handle_async(:collection_summary, {:exit, _reason}, socket) do + {:noreply, socket} + end + @impl true def handle_event("delete", %{"id" => id}, socket) do record = Records.get_record!(id)