metadata: show the cross-library search screenshot

Render the dedicated SearchScreen with results across playlists, artists and
albums instead of the album tab's in-list search.
This commit is contained in:
austinried
2026-10-04 00:30:08 +00:00
parent 8e6c1593dc
commit e34363c1ac
2 changed files with 24 additions and 31 deletions
@@ -38,6 +38,7 @@ import com.subtracks.data.model.Song
import com.subtracks.data.model.Source import com.subtracks.data.model.Source
import com.subtracks.data.model.coverArtKey import com.subtracks.data.model.coverArtKey
import com.subtracks.data.prefs.ListQuery import com.subtracks.data.prefs.ListQuery
import com.subtracks.data.repo.SEARCH_RESULT_LIMIT
import com.subtracks.data.source.subsonic.SubsonicSource import com.subtracks.data.source.subsonic.SubsonicSource
import com.subtracks.data.source.subsonic.TestServer import com.subtracks.data.source.subsonic.TestServer
import com.subtracks.data.source.subsonic.TestServers import com.subtracks.data.source.subsonic.TestServers
@@ -53,6 +54,8 @@ import com.subtracks.ui.library.LibraryTab
import com.subtracks.ui.library.sortOptionsFor import com.subtracks.ui.library.sortOptionsFor
import com.subtracks.ui.playback.MiniPlayer import com.subtracks.ui.playback.MiniPlayer
import com.subtracks.ui.playback.NowPlayingScreen import com.subtracks.ui.playback.NowPlayingScreen
import com.subtracks.ui.search.SearchResults
import com.subtracks.ui.search.SearchScreen
import com.subtracks.ui.theme.ArtworkColors import com.subtracks.ui.theme.ArtworkColors
import com.subtracks.ui.theme.ArtworkTheme import com.subtracks.ui.theme.ArtworkTheme
import com.subtracks.ui.theme.SubtracksTheme import com.subtracks.ui.theme.SubtracksTheme
@@ -203,29 +206,14 @@ class DemoScreenshotTest {
} }
Screen.Search -> { Screen.Search -> {
Column(Modifier.fillMaxSize()) { SearchScreen(
LibraryScreen( query = DEMO_SEARCH,
selectedTab = LibraryTab.Albums, onQueryChange = {},
onTabSelected = {}, results = demo.search,
albums = remember { flowOf(PagingData.from(demo.searchAlbums)) },
artists = remember { flowOf(PagingData.empty<Artist>()) },
playlists = remember { flowOf(PagingData.empty<Playlist>()) },
coverArt = demo.coverArt, coverArt = demo.coverArt,
onAlbumClick = {}, playingSongId = demo.nowPlayingSong.id,
onArtistClick = {}, modifier = Modifier.fillMaxSize(),
onPlaylistClick = {},
onSync = {},
onOpenSettings = {},
listQuery = ListQuery("Name"),
sortOptions = sortOptionsFor(LibraryTab.Albums),
starredSupported = true,
search = DEMO_SEARCH,
onSearchChange = {},
artwork = demo.artwork(demo.nowPlayingAlbum.coverArt),
modifier = Modifier.weight(1f),
) )
demo.MiniPlayerOverlay(demo.nowPlayingSong, demo.nowPlayingAlbum)
}
} }
} }
} }
@@ -314,7 +302,7 @@ class DemoScreenshotTest {
val homePlayingSong: Song, val homePlayingSong: Song,
val artist: Artist, val artist: Artist,
val artistAlbums: List<Album>, val artistAlbums: List<Album>,
val searchAlbums: List<Album>, val search: SearchResults,
val coverArt: (String?, Boolean) -> CoverArtRef?, val coverArt: (String?, Boolean) -> CoverArtRef?,
val engine: FakeImageLoaderEngine, val engine: FakeImageLoaderEngine,
private val bitmaps: Map<String, Bitmap>, private val bitmaps: Map<String, Bitmap>,
@@ -452,12 +440,17 @@ class DemoScreenshotTest {
rediscoverAlbums = coveredAlbums(dao.rediscoverAlbums(1, System.currentTimeMillis() / 1000, 10).first()), rediscoverAlbums = coveredAlbums(dao.rediscoverAlbums(1, System.currentTimeMillis() / 1000, 10).first()),
) )
val searchAlbums = val search =
albums SearchResults(
.filter { playlists =
it.name.contains(DEMO_SEARCH, ignoreCase = true) || dao.searchPlaylists(1, DEMO_SEARCH, SEARCH_RESULT_LIMIT).first().filter { it.coverArt != null },
(it.albumArtist ?: "").contains(DEMO_SEARCH, ignoreCase = true) artists =
}.ifEmpty { albums.take(4) } dao.searchArtists(1, DEMO_SEARCH, SEARCH_RESULT_LIMIT).first().filter { it.coverArt != null },
albums =
dao.searchAlbums(1, DEMO_SEARCH, SEARCH_RESULT_LIMIT).first().filter { it.coverArt != null },
songs =
dao.searchSongs(1, DEMO_SEARCH, SEARCH_RESULT_LIMIT).first().filter { it.coverArt != null },
)
val fallback = val fallback =
Bitmap Bitmap
.createBitmap(1, 1, Bitmap.Config.ARGB_8888) .createBitmap(1, 1, Bitmap.Config.ARGB_8888)
@@ -486,7 +479,7 @@ class DemoScreenshotTest {
homePlayingSong = homePlayingSong, homePlayingSong = homePlayingSong,
artist = artist, artist = artist,
artistAlbums = artistAlbums.filter { it.coverArt != null }, artistAlbums = artistAlbums.filter { it.coverArt != null },
searchAlbums = searchAlbums, search = search,
coverArt = coverArt, coverArt = coverArt,
engine = engine, engine = engine,
bitmaps = bitmaps, bitmaps = bitmaps,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 KiB

After

Width:  |  Height:  |  Size: 147 KiB