NavidromeApp/iOS/Views/Library
Dallas Groot 99e4f3bd3a updates to companion from ios to server
Models.swift — CompanionSong, CompanionAlbum, CompanionArtist,
CompanionLibraryResponse. Each has a toSong()/toAlbum() converter.
Song.id = navidrome_id (streaming still works), Song.coverArt =
"companion:{id}" (routes cover art to Companion), Album.id =
"companion:{name}|{artist}" (detected by AlbumDetailView).
CompanionAPIService.swift — fetchAllSongs, fetchAlbumSongs,
fetchAllAlbums, fetchAllArtists, searchLibrary are all nonisolated
where needed. coverArtURL/artistPhotoURL are nonisolated so views can
call them synchronously. Push handler now fires
companionCoverArtUpdated and companionArtistPhotoUpdated events and
clears ImageCache immediately on receipt.
LibraryCache.swift — cacheCompanionAlbums/loadCompanionAlbums,
cacheCompanionAlbumSongs/loadCompanionAlbumSongs for local persistence
of companion data between launches.
SyncEngine.swift — syncCompanion() runs after every Navidrome sync
(bootstrap and delta) when Companion is enabled. It fetches albums
from /library/albums, converts them to Album objects, and overwrites
"all_albums" cache — so MyMusicView’s album grid immediately shows
Companion-sorted data. companionLibraryChanged notification triggers
reactive UI updates.
AsyncCoverArt.swift — Detects "companion:{id}" prefix and routes to
CompanionAPIService().coverArtURL(companionId:) instead of Navidrome.
All existing non-companion cover art paths are unchanged.
AlbumDetailView.swift — Detects albumId.hasPrefix("companion:"),
parses "companion:{name}|{artist}", calls
/library/songs?album=...&album_artist=... on Companion, and builds a
synthetic AlbumWithSongs locally. Caches results so the next tap is
instant. Falls back to the existing Navidrome path for all
non-companion album IDs.
2026-04-10 11:14:41 -07:00
..
AlbumDetailView.swift updates to companion from ios to server 2026-04-10 11:14:41 -07:00
ArtistDetailView.swift Update from NavidromePlayer.zip (2026-04-04 16:12) 2026-04-04 16:12:28 -07:00
DownloadsSettingsView.swift renamed label 2026-04-10 07:41:31 -07:00
MyMusicView.swift Update from NavidromePlayer.zip (2026-04-04 16:12) 2026-04-04 16:12:28 -07:00
PlaylistsView.swift Update from NavidromePlayer.zip (2026-04-04 16:12) 2026-04-04 16:12:28 -07:00
RadioView.swift radio fixes 2026-04-04 18:25:41 -07:00
SearchView.swift Update from NavidromePlayer.zip (2026-04-04 16:12) 2026-04-04 16:12:28 -07:00