From 8113e8bdc01629b2d3c5e08a009559505061a514 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Wed, 6 Aug 2025 15:46:08 +0300 Subject: [PATCH] Make scrobble rules create/update actions play nicely with list ordering --- .../live/scrobble_rules_live/form_component.ex | 4 ++-- .../live/scrobble_rules_live/index.ex | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/music_library_web/live/scrobble_rules_live/form_component.ex b/lib/music_library_web/live/scrobble_rules_live/form_component.ex index 0919d89b..0fed89e8 100644 --- a/lib/music_library_web/live/scrobble_rules_live/form_component.ex +++ b/lib/music_library_web/live/scrobble_rules_live/form_component.ex @@ -88,7 +88,7 @@ defmodule MusicLibraryWeb.ScrobbleRulesLive.FormComponent do defp save_scrobble_rule(socket, :edit, scrobble_rule_params) do case ScrobbleRules.update_scrobble_rule(socket.assigns.scrobble_rule, scrobble_rule_params) do {:ok, scrobble_rule} -> - notify_parent({:saved, scrobble_rule}) + notify_parent({:updated, scrobble_rule}) {:noreply, socket @@ -103,7 +103,7 @@ defmodule MusicLibraryWeb.ScrobbleRulesLive.FormComponent do defp save_scrobble_rule(socket, :new, scrobble_rule_params) do case ScrobbleRules.create_scrobble_rule(scrobble_rule_params) do {:ok, scrobble_rule} -> - notify_parent({:saved, scrobble_rule}) + notify_parent({:created, scrobble_rule}) {:noreply, socket diff --git a/lib/music_library_web/live/scrobble_rules_live/index.ex b/lib/music_library_web/live/scrobble_rules_live/index.ex index b6b8e720..17b00a25 100644 --- a/lib/music_library_web/live/scrobble_rules_live/index.ex +++ b/lib/music_library_web/live/scrobble_rules_live/index.ex @@ -32,7 +32,7 @@ defmodule MusicLibraryWeb.ScrobbleRulesLive.Index do socket |> assign(:page_title, gettext("Scrobble Rules")) |> assign(:scrobble_rule, nil) - |> stream(:scrobble_rules, ScrobbleRules.list_scrobble_rules()) + |> stream(:scrobble_rules, ScrobbleRules.list_scrobble_rules(), reset: true) end def apply_fallback_index(socket, params) do @@ -46,12 +46,19 @@ defmodule MusicLibraryWeb.ScrobbleRulesLive.Index do @impl true def handle_info( - {MusicLibraryWeb.ScrobbleRulesLive.FormComponent, {:saved, scrobble_rule}}, + {MusicLibraryWeb.ScrobbleRulesLive.FormComponent, {:created, scrobble_rule}}, socket ) do {:noreply, stream_insert(socket, :scrobble_rules, scrobble_rule, at: 0)} end + def handle_info( + {MusicLibraryWeb.ScrobbleRulesLive.FormComponent, {:updated, scrobble_rule}}, + socket + ) do + {:noreply, stream_insert(socket, :scrobble_rules, scrobble_rule)} + end + @impl true def handle_event("delete", %{"id" => id}, socket) do scrobble_rule = ScrobbleRules.get_scrobble_rule!(id)