From ce07cc256942d46908e7c7874299134ad0e2228a Mon Sep 17 00:00:00 2001 From: shibao Date: Thu, 16 Mar 2023 17:49:45 -0400 Subject: [PATCH] use live navigation to update state --- .../container_live/edit_tags_component.ex | 43 +++++++++++++------ .../live/container_live/index.html.heex | 1 + .../live/container_live/show.html.heex | 1 + priv/gettext/de/LC_MESSAGES/errors.po | 4 +- priv/gettext/de/LC_MESSAGES/prompts.po | 4 +- priv/gettext/en/LC_MESSAGES/errors.po | 4 +- priv/gettext/en/LC_MESSAGES/prompts.po | 4 +- priv/gettext/errors.pot | 4 +- priv/gettext/es/LC_MESSAGES/errors.po | 4 +- priv/gettext/es/LC_MESSAGES/prompts.po | 4 +- priv/gettext/fr/LC_MESSAGES/errors.po | 4 +- priv/gettext/fr/LC_MESSAGES/prompts.po | 4 +- priv/gettext/ga/LC_MESSAGES/errors.po | 4 +- priv/gettext/ga/LC_MESSAGES/prompts.po | 4 +- priv/gettext/prompts.pot | 4 +- 15 files changed, 57 insertions(+), 36 deletions(-) diff --git a/lib/cannery_web/live/container_live/edit_tags_component.ex b/lib/cannery_web/live/container_live/edit_tags_component.ex index 103757b..f00d122 100644 --- a/lib/cannery_web/live/container_live/edit_tags_component.ex +++ b/lib/cannery_web/live/container_live/edit_tags_component.ex @@ -4,25 +4,40 @@ defmodule CanneryWeb.ContainerLive.EditTagsComponent do """ use CanneryWeb, :live_component - alias Cannery.{Accounts.User, Containers, Containers.Container, Repo, Tags, Tags.Tag} + alias Cannery.{Accounts.User, Containers, Containers.Container, Tags, Tags.Tag} alias Phoenix.LiveView.Socket @impl true @spec update( - %{:container => Container.t(), :current_user => User.t(), optional(any) => any}, + %{ + :container => Container.t(), + :current_path => String.t(), + :current_user => User.t(), + optional(any) => any + }, Socket.t() ) :: {:ok, Socket.t()} - def update(%{container: container, current_user: current_user} = assigns, socket) do + def update( + %{container: _container, current_path: _current_path, current_user: current_user} = + assigns, + socket + ) do tags = Tags.list_tags(current_user) - container = container |> Repo.preload(:tags) - {:ok, socket |> assign(assigns) |> assign(tags: tags, container: container)} + {:ok, socket |> assign(assigns) |> assign(:tags, tags)} end @impl true def handle_event( "save", %{"tag" => %{"tag_id" => tag_id}}, - %{assigns: %{tags: tags, container: container, current_user: current_user}} = socket + %{ + assigns: %{ + tags: tags, + container: container, + current_user: current_user, + current_path: current_path + } + } = socket ) do socket = case tags |> Enum.find(fn %{id: id} -> tag_id == id end) do @@ -32,19 +47,24 @@ defmodule CanneryWeb.ContainerLive.EditTagsComponent do %{name: tag_name} = tag -> _container_tag = Containers.add_tag!(container, tag, current_user) - container = container |> Repo.preload(:tags, force: true) prompt = dgettext("prompts", "%{name} added successfully", name: tag_name) - socket |> put_flash(:info, prompt) |> assign(container: container) + socket |> put_flash(:info, prompt) |> push_patch(to: current_path) end {:noreply, socket} end - @impl true def handle_event( "delete", %{"tag-id" => tag_id}, - %{assigns: %{tags: tags, container: container, current_user: current_user}} = socket + %{ + assigns: %{ + tags: tags, + container: container, + current_user: current_user, + current_path: current_path + } + } = socket ) do socket = case tags |> Enum.find(fn %{id: id} -> tag_id == id end) do @@ -54,9 +74,8 @@ defmodule CanneryWeb.ContainerLive.EditTagsComponent do %{name: tag_name} = tag -> _container_tag = Containers.remove_tag!(container, tag, current_user) - container = container |> Repo.preload(:tags, force: true) prompt = dgettext("prompts", "%{name} removed successfully", name: tag_name) - socket |> put_flash(:info, prompt) |> assign(container: container) + socket |> put_flash(:info, prompt) |> push_patch(to: current_path) end {:noreply, socket} diff --git a/lib/cannery_web/live/container_live/index.html.heex b/lib/cannery_web/live/container_live/index.html.heex index 0c26b9f..6f03a8d 100644 --- a/lib/cannery_web/live/container_live/index.html.heex +++ b/lib/cannery_web/live/container_live/index.html.heex @@ -167,6 +167,7 @@ title={@page_title} action={@live_action} container={@container} + current_path={Routes.container_index_path(Endpoint, :edit_tags, @container)} current_user={@current_user} /> diff --git a/lib/cannery_web/live/container_live/show.html.heex b/lib/cannery_web/live/container_live/show.html.heex index e4efe8e..133c340 100644 --- a/lib/cannery_web/live/container_live/show.html.heex +++ b/lib/cannery_web/live/container_live/show.html.heex @@ -161,6 +161,7 @@ action={@live_action} container={@container} return_to={Routes.container_show_path(Endpoint, :show, @container)} + current_path={Routes.container_show_path(Endpoint, :edit_tags, @container)} current_user={@current_user} /> diff --git a/priv/gettext/de/LC_MESSAGES/errors.po b/priv/gettext/de/LC_MESSAGES/errors.po index 5139084..1253ed0 100644 --- a/priv/gettext/de/LC_MESSAGES/errors.po +++ b/priv/gettext/de/LC_MESSAGES/errors.po @@ -147,7 +147,7 @@ msgstr "Muss ein @ Zeichen und keine Leerzeichen haben" msgid "Tag not found" msgstr "Tag nicht gefunden" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:30 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:45 #, elixir-autogen, elixir-format msgid "Tag could not be added" msgstr "Tag konnte nicht hinzugefügt werden" @@ -165,7 +165,7 @@ msgstr "" "Sie müssen ihr Nutzerkonto bestätigen und einloggen, um diese Seite " "anzuzeigen." -#: lib/cannery_web/live/container_live/edit_tags_component.ex:52 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:72 #, elixir-autogen, elixir-format msgid "Tag could not be removed" msgstr "Tag konnte nicht gelöscht werden" diff --git a/priv/gettext/de/LC_MESSAGES/prompts.po b/priv/gettext/de/LC_MESSAGES/prompts.po index 6e83bdd..5ea0b97 100644 --- a/priv/gettext/de/LC_MESSAGES/prompts.po +++ b/priv/gettext/de/LC_MESSAGES/prompts.po @@ -151,7 +151,7 @@ msgstr "" "Sind Sie sicher, dass sie %{tag_name} Tag von %{container_name} entfernen " "wollen?" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:36 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:50 #, elixir-autogen, elixir-format msgid "%{name} added successfully" msgstr "%{name} erfolgreich hinzugefügt" @@ -208,7 +208,7 @@ msgstr "Munition erfolgreich zu %{name} verschoben" msgid "Copied to clipboard" msgstr "Der Zwischenablage hinzugefügt" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:58 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:77 #, elixir-autogen, elixir-format msgid "%{name} removed successfully" msgstr "%{name} erfolgreich entfernt" diff --git a/priv/gettext/en/LC_MESSAGES/errors.po b/priv/gettext/en/LC_MESSAGES/errors.po index bcc2e8f..d8ac746 100644 --- a/priv/gettext/en/LC_MESSAGES/errors.po +++ b/priv/gettext/en/LC_MESSAGES/errors.po @@ -134,7 +134,7 @@ msgstr "" msgid "Tag not found" msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:30 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:45 #, elixir-autogen, elixir-format msgid "Tag could not be added" msgstr "" @@ -150,7 +150,7 @@ msgstr "" msgid "You must confirm your account and log in to access this page." msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:52 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:72 #, elixir-autogen, elixir-format, fuzzy msgid "Tag could not be removed" msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/prompts.po b/priv/gettext/en/LC_MESSAGES/prompts.po index 77c3da8..53f4965 100644 --- a/priv/gettext/en/LC_MESSAGES/prompts.po +++ b/priv/gettext/en/LC_MESSAGES/prompts.po @@ -130,7 +130,7 @@ msgstr "" msgid "Are you sure you want to remove the %{tag_name} tag from %{container_name}?" msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:36 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:50 #, elixir-autogen, elixir-format msgid "%{name} added successfully" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "Copied to clipboard" msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:58 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:77 #, elixir-autogen, elixir-format, fuzzy msgid "%{name} removed successfully" msgstr "" diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot index 8d38671..0439bb9 100644 --- a/priv/gettext/errors.pot +++ b/priv/gettext/errors.pot @@ -133,7 +133,7 @@ msgstr "" msgid "Tag not found" msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:30 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:45 #, elixir-autogen, elixir-format msgid "Tag could not be added" msgstr "" @@ -149,7 +149,7 @@ msgstr "" msgid "You must confirm your account and log in to access this page." msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:52 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:72 #, elixir-autogen, elixir-format msgid "Tag could not be removed" msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index 3e51961..9f1926d 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -149,7 +149,7 @@ msgstr "debe tener el signo @ y no contener espacios" msgid "Tag not found" msgstr "Etiqueta no encontrada" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:30 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:45 #, elixir-autogen, elixir-format msgid "Tag could not be added" msgstr "No se ha podido añadir la etiqueta" @@ -165,7 +165,7 @@ msgstr "El recuento debe dar al menos 1" msgid "You must confirm your account and log in to access this page." msgstr "Debe confirmar su cuenta e iniciar sesión para acceder a esta página." -#: lib/cannery_web/live/container_live/edit_tags_component.ex:52 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:72 #, elixir-autogen, elixir-format msgid "Tag could not be removed" msgstr "La etiqueta no pudo ser eliminada" diff --git a/priv/gettext/es/LC_MESSAGES/prompts.po b/priv/gettext/es/LC_MESSAGES/prompts.po index 40e6715..e2cd34b 100644 --- a/priv/gettext/es/LC_MESSAGES/prompts.po +++ b/priv/gettext/es/LC_MESSAGES/prompts.po @@ -150,7 +150,7 @@ msgid "Are you sure you want to remove the %{tag_name} tag from %{container_name msgstr "" "Está seguro que desea remover la etiqueta %{tag_name} de %{container_name}?" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:36 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:50 #, elixir-autogen, elixir-format msgid "%{name} added successfully" msgstr "%{name} añadido exitosamente" @@ -207,7 +207,7 @@ msgstr "Munición movida a %{name} exitosamente" msgid "Copied to clipboard" msgstr "Copiado al portapapeles" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:58 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:77 #, elixir-autogen, elixir-format msgid "%{name} removed successfully" msgstr "%{name} eliminado exitosamente" diff --git a/priv/gettext/fr/LC_MESSAGES/errors.po b/priv/gettext/fr/LC_MESSAGES/errors.po index e6af93e..6b8007b 100644 --- a/priv/gettext/fr/LC_MESSAGES/errors.po +++ b/priv/gettext/fr/LC_MESSAGES/errors.po @@ -148,7 +148,7 @@ msgstr "doit contenir le symbole @ et aucune espace" msgid "Tag not found" msgstr "Tag pas trouvé" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:30 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:45 #, elixir-autogen, elixir-format msgid "Tag could not be added" msgstr "Le tag n’a pas pu être ajouté" @@ -166,7 +166,7 @@ msgstr "" "Vous devez d’abord confirmer votre compte et vous connecter pour accéder à " "cette page." -#: lib/cannery_web/live/container_live/edit_tags_component.ex:52 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:72 #, elixir-autogen, elixir-format msgid "Tag could not be removed" msgstr "Le tag n’a pas pu être retiré" diff --git a/priv/gettext/fr/LC_MESSAGES/prompts.po b/priv/gettext/fr/LC_MESSAGES/prompts.po index c5b7ede..4b8ed94 100644 --- a/priv/gettext/fr/LC_MESSAGES/prompts.po +++ b/priv/gettext/fr/LC_MESSAGES/prompts.po @@ -152,7 +152,7 @@ msgstr "" "Êtes-vous certain·e de vouloir retirer le tag %{tag_name} de " "%{container_name} ?" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:36 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:50 #, elixir-autogen, elixir-format msgid "%{name} added successfully" msgstr "%{name} a été ajouté avec succès" @@ -209,7 +209,7 @@ msgstr "Munition déplacée à %{name} avec succès" msgid "Copied to clipboard" msgstr "Copié dans le presse-papier" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:58 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:77 #, elixir-autogen, elixir-format msgid "%{name} removed successfully" msgstr "%{name} retiré avec succès" diff --git a/priv/gettext/ga/LC_MESSAGES/errors.po b/priv/gettext/ga/LC_MESSAGES/errors.po index 94fc786..2a2ab90 100644 --- a/priv/gettext/ga/LC_MESSAGES/errors.po +++ b/priv/gettext/ga/LC_MESSAGES/errors.po @@ -149,7 +149,7 @@ msgstr "" msgid "Tag not found" msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:30 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:45 #, elixir-autogen, elixir-format msgid "Tag could not be added" msgstr "" @@ -165,7 +165,7 @@ msgstr "" msgid "You must confirm your account and log in to access this page." msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:52 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:72 #, elixir-autogen, elixir-format msgid "Tag could not be removed" msgstr "" diff --git a/priv/gettext/ga/LC_MESSAGES/prompts.po b/priv/gettext/ga/LC_MESSAGES/prompts.po index 0ac6e89..6069dc1 100644 --- a/priv/gettext/ga/LC_MESSAGES/prompts.po +++ b/priv/gettext/ga/LC_MESSAGES/prompts.po @@ -141,7 +141,7 @@ msgstr "" msgid "Are you sure you want to remove the %{tag_name} tag from %{container_name}?" msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:36 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:50 #, elixir-autogen, elixir-format msgid "%{name} added successfully" msgstr "" @@ -198,7 +198,7 @@ msgstr "" msgid "Copied to clipboard" msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:58 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:77 #, elixir-autogen, elixir-format msgid "%{name} removed successfully" msgstr "" diff --git a/priv/gettext/prompts.pot b/priv/gettext/prompts.pot index 55e3e48..5c65a69 100644 --- a/priv/gettext/prompts.pot +++ b/priv/gettext/prompts.pot @@ -130,7 +130,7 @@ msgstr "" msgid "Are you sure you want to remove the %{tag_name} tag from %{container_name}?" msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:36 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:50 #, elixir-autogen, elixir-format msgid "%{name} added successfully" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "Copied to clipboard" msgstr "" -#: lib/cannery_web/live/container_live/edit_tags_component.ex:58 +#: lib/cannery_web/live/container_live/edit_tags_component.ex:77 #, elixir-autogen, elixir-format msgid "%{name} removed successfully" msgstr ""