tduccuong
Flash messages don't disappear after phx.gen.auth injected code
I created a new app from scratch using mix phx.new <app> --live , then successfully added the auth layer using mix phx.gen.auth.
After I log in or log out, the flash message does not disappear nor can I click the small X button of the message to clear it. Attached is the picture after I logged in:
I did not do any customization. Just out of the box a LiveView app creation with authentication added. Here are the deps in mix.exs file:
defp deps do
[
{:bcrypt_elixir, "~> 3.0"},
{:phoenix, "~> 1.7.9"},
{:phoenix_ecto, "~> 4.4"},
{:ecto_sql, "~> 3.10"},
{:postgrex, ">= 0.0.0"},
{:phoenix_html, "~> 3.3"},
{:phoenix_live_reload, "~> 1.2", only: :dev},
{:phoenix_live_view, "~> 0.20.1"},
{:floki, ">= 0.30.0", only: :test},
{:phoenix_live_dashboard, "~> 0.8.2"},
{:esbuild, "~> 0.7", runtime: Mix.env() == :dev},
{:tailwind, "~> 0.2.0", runtime: Mix.env() == :dev},
{:swoosh, "~> 1.3"},
{:finch, "~> 0.13"},
{:telemetry_metrics, "~> 0.6"},
{:telemetry_poller, "~> 1.0"},
{:gettext, "~> 0.20"},
{:jason, "~> 1.2"},
{:dns_cluster, "~> 0.1.1"},
{:plug_cowboy, "~> 2.5"}
]
end
Can someone please help? Thanks a lot!
Marked As Solved
beepbeepbopbop
I think there’s an issue with flash/1 in core_components.ex that was introduced by an update in 1.7.7..1.7.8. Specifically this part:
attr :id, :string, default: nil, doc: "the optional id of flash container"
attr :flash, :map, default: %{}, doc: "the map of flash messages to display"
attr :title, :string, default: nil
attr :kind, :atom, values: [:info, :error], doc: "used for styling and flash lookup"
slot :inner_block, doc: "the optional inner block that renders the flash message"
def flash(assigns) do assigns = assign_new(assigns, :id, fn -> "flash-#{assigns.kind}" end)
The assign_new callback never be invoked as :id would be nil due to the attr macro specifying the default: nil. This would mean that it’s effectively given an empty string as its id attribute and breaks the closing behaviour.
One thing you can do to fix this problem in core_components.ex is to update the attr definition for :id by removing default: nil.
Also Liked
ken-kost
Yea, think it’s meant that way. Somebody asked this I just found, and the answer was the same I was preparing. ![]()
bartonhammond
josevalim
This is the correct answer. Remove the default.
it was fixed in main and we shall have a new release soon. ![]()
Last Post!
tjb_dev
Popular in Questions
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
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #hex










