🐛 Bug fixes of libraries

This commit is contained in:
2025-12-18 23:42:19 +08:00
parent 4f6e5883b7
commit a37d762b1b
4 changed files with 202 additions and 172 deletions

View File

@@ -71,16 +71,22 @@ class PlaylistRepository extends _$PlaylistRepository {
Stream<List<AlbumData>> watchAllAlbums() {
final db = ref.watch(databaseProvider);
// Distinct albums by grouping
// Distinct albums by grouping - group by album name only to prevent duplicates
// when the same album has inconsistent artist metadata across tracks
final query = db.selectOnly(db.tracks)
..addColumns([db.tracks.album, db.tracks.artist, db.tracks.artUri])
..groupBy([db.tracks.album, db.tracks.artist]);
..addColumns([
db.tracks.album,
db.tracks.artist.min(), // Get the first non-null artist
db.tracks.artUri.min(), // Get the first non-null art URI
])
..where(db.tracks.album.isNotNull())
..groupBy([db.tracks.album]);
return query.map((row) {
return AlbumData(
album: row.read(db.tracks.album) ?? 'Unknown Album',
artist: row.read(db.tracks.artist) ?? 'Unknown Artist',
artUri: row.read(db.tracks.artUri),
album: row.read(db.tracks.album)!,
artist: row.read(db.tracks.artist.min()) ?? 'Various Artists',
artUri: row.read(db.tracks.artUri.min()),
);
}).watch();
}