Phoenix LiveView Streams and Sorting

I have a liveview page and it is listing things. I want to sort those things using a database query. This works great unless I am listing the things using a stream. When I use a stream, I try and reset the stream and insert the elements in a different sort order but it seems as if the page doesn’t recognize any changes to the stream since the elements are all the same, just in a different sort order. I am on Phoenix 1.7.9, LiveView 0.20.1. Here is the psudeo-code of my call.

stream(socket, :things, Stuff.list_things(sort, dir), reset: true)

Hope someone can off some help or ideas on what I’m doing wrong or how I can do this differently. Thanks.

It’s a known regression that’s been addressed, but there hasn’t been a tagged release since the fix yet so you’ll probably want to hop onto the main branch.

3 Likes

Thanks!

I wanted to mention that I ran into this and upgrading from liveview 0.20.1 to 0.20.3 did not fix it because I had the javascript phoenix_live_view version explicitly declared in package.json. After setting the version in assets to match mix version and running npm install the stream sorting issue was resolved. I am not sure if there is a way to remove it from assets so it is synced up to whatever is in mix.

TLDR: make sure you update the liveview version in package.json as well if it is explicitly declared there.

1 Like