f0rest8
Consideration: would it be worth it to expand lv:clear-flash to handle more than one key?
I’m currently using two separate flash keys to display dynamic message content in a flash message (one key for part of the flash message and another key for the “body”).
I noticed that it works doing it that way, but then I have to either remove the phx-value-key in order to clear all the flash messages using the lv:clear-flash. This then removes other flash messages that may be present but perhaps I don’t want them to also be cleared.
(apologies I’m very tired and writing this before crashing)
So, I noticed this in channel.ex:
defp view_handle_event(%Socket{} = socket, "lv:clear-flash", val) do
case val do
%{"key" => key} -> {:noreply, Utils.clear_flash(socket, key)}
_ -> {:noreply, Utils.clear_flash(socket)}
end
end
So, would it be worthwhile to handle a list of keys in, say, the Utils.clear_flash/2?
def clear_flash(%Socket{} = socket, key) do
key = flash_key(key)
new_flash = Map.delete(socket.assigns.flash, key)
socket = assign(socket, :flash, new_flash)
update_in(socket.private.__changed__[:flash], &Map.delete(&1 || %{}, key))
end
# Add this function to handle keys map (%{"key" => "info", "key2" => "info-body"})
def clear_flash(%Socket{} = socket, keys) do
keys = Enum.into(keys, [], fn {_key, val}-> flash_key(val) end)
new_flash = Map.drop(socket.assigns.flash, key) end)
socket = assign(socket, :flash, new_flash)
update_in(socket.private.__changed__[:flash], &Map.delete(&1 || %{}, key))
end
And be passing in the key map in channel.ex:
# Update to pass the keys map (%{"key" => "info, "key2" => "info-body"})
defp view_handle_event(%Socket{} = socket, "lv:clear-flash", val) do
case val do
%{"key" => key} -> {:noreply, Utils.clear_flash(socket, key)
keys -> {:noreply, Utils.clear_flash(socket, keys)}
end
end
Anyway, what do people think about being able to handle multiple keys in the lv:clear-flash? There’s probably a better way. ![]()
Popular in Discussions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









