Dynamically change Live Layout

Is there some way to update a Layout dynamically?
I have a Layout that has my app sidebar, inside this sidebar is a LiveCompenent that lists a collection, I’m using streams. There’s a LiveView inside this layout where I create new entities of this collection, my objective is that when I create a new entity, my sidebar updates automatically(like using a stream_insert).

My initial idea was broadcast a message, but the LiveComponent of my SideBarLayout cant have a handle_info, so now I’m stuck.

If somebody has some idea how to workaround this or has already passed through some similar, I would be really grateful for any tip or solution.

One workaround that I thought is: Instead of using stream, use assigns and subscribe into a pub/sub globally and update my assign with the new entity, like in this article Respond to global broadcasts in layout

Hi and welcome to the forum!

One thing you can do is in stead of a live component, use a function component along with on_mount and attach_hook. You would do the initial logic to populate the list in on_mount as well as attach a handle_info hook to your LiveViews. The problem with this solution is that it won’t work in dead views if you have any of those, although it doesn’t sound like your current implementation would either so this might work for you.

You can use on_mount in your router to avoid having to do it in every LiveView.