jmshrv / finamp

A Jellyfin music client for mobile
Mozilla Public License 2.0
1.67k stars 117 forks source link

Beta 0.9.7 - Favourites/Playlists fail to sync if they contain non-music media (reproducible) #748

Closed othyn closed 2 weeks ago

othyn commented 1 month ago

I think this issue is related and expands on to #746. If a playlist contains any other media, e.g. a TV Episode, Finamp will break saying it cannot sync. The Playlist UI will also break, not displaying anything after the broken list entry. It will turn grey and not display any other tracks post the broken list entry.

You can reproduce the issue by adding a non-music media type to the playlist and sync'ing it with Finamp, e.g. a TV episode or movie/film.

I don't use mixed media playlists, actually it was a nice flag that I'd accidentally put an episode of The Simpsons in a music playlist, however I feel Finamp shouldn't break, it should just ignore media types that it cannot/should not handle instead of throwing an exception.

I have a feeling this is why the favourites sync is breaking on Beta 0.9.7, as outlined in #746. As I also have a lot of media favourited that aren't just songs, and it would make sense given the issues with playlists, favourites may be experiencing the same bug if the sync mechanism is the same implementation. Just a gut feeling, I could and are probably wrong on that!

The main error log lines (in isolation, full contextual logs attached) being:

[SyncBuffer/INFO] 2024-05-24 16:43:12.674035: Error downloading children for finampCollection Favorites: Null check operator used on a null value

and

[Flutter/SEVERE] 2024-05-24 16:54:35.872718: Unknown baseItemDto type Episode

I've attached the relevant parts of the log in text form (finamp_log.txt) and the location in the app logs, and here is a screenshot showing the UI breaking:

IMG_13E954565FF1-1 IMG_3247

Chaphasilor commented 1 month ago

Thanks for the detailed report! We're already working on a fix, it will be included in the next update.
We will probably resort to mostly ignoring "unknown" types, although basic audio playback might be possible for video files :)