christopherandClaude Sonnet 5 49f941b8b9 Move Downloads out of Settings into a dynamic Library collection
Downloads is no longer a Settings sub-screen - it's now a pinned entry
at the top of Library > Playlists (Settings keeps only the Wi-Fi-only
and default-quality preference toggles, which govern how downloads
behave rather than being downloaded content itself).

The Downloads screen it opens is no longer a flat track list. It now
splits into two sections, both fully reactive to what's actually on
disk:

- Playlists: any playlist with at least one downloaded track. Tapping
  one opens the real PlaylistDetailScreen, not a special-cased view -
  this is a live filter over existing playlists, not a copy of their
  data.
- Tracks: downloaded tracks that aren't a member of any playlist. A
  track belonging to a playlist is never listed twice - that playlist
  already qualifies for the Playlists section by virtue of this same
  track being downloaded, so once it's shown there this list skips it.

New PlaylistDao.observeAllMemberships() (and
PlaylistRepository.observeTrackIdsByPlaylist()) exposes the full
playlist-to-track-id membership map in one reactive query, so working
out which playlists have a downloaded track doesn't require loading
every playlist's full track list. DownloadsViewModel combines that
with the existing downloaded-tracks and playlists flows to derive both
sections - no new database tables, this is a computed view over the
same Room state Phase 5 and Phase 6 already maintain.

Verified on-device: Settings no longer shows a Downloads row; the
Library tab shows the new pinned "Downloads" entry; added a
downloaded track to a test playlist and confirmed it moved from the
flat Tracks list into a Playlists entry with no duplication; confirmed
tapping that entry opens the actual playlist detail screen; deleted
the playlist and confirmed the track reactively reverted to the flat
Tracks list with no manual refresh.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 19:23:03 -04:00
S
Description
Deepwave is a navidrome client for android
322 KiB
Languages
Kotlin 100%