Compare commits

...

2 Commits

Author SHA1 Message Date
Anna Schumaker 57dd2c280e db: Don't notify if the active-playlist doesn't change
This lets us skip a handful of database calls if we detect that we're
setting the active playlist to the same value.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2023-06-06 09:29:16 -04:00
Anna Schumaker 59fb7d12f3 db: Set the Queued Tracks playlist as active when adding tracks
I do this unconditionally, so even if the track is already on the
playlist we set it as active. I think this is what the user would
expect, but I'm open to revising this approach later.

Fixes: #62 ("Queueing tracks doesn't activate the Queued Tracks playlist")
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2023-06-06 09:22:22 -04:00
4 changed files with 15 additions and 0 deletions

View File

@ -82,6 +82,8 @@ class Connection(connection.Connection):
def set_active_playlist(self, plist: playlist.Playlist) -> None:
"""Set the currently active playlist."""
if self.active_playlist == plist:
return
if self.active_playlist is not None:
self.active_playlist.active = False

View File

@ -113,6 +113,9 @@ class Table(playlist.Table):
case self.previous:
self.add_system_track(playlist, track)
return True
case self.queued:
self.sql.set_active_playlist(playlist)
return self.add_user_track(playlist, track)
case self.unplayed: return track.playcount == 0
case _: return self.add_user_track(playlist, track)

View File

@ -114,6 +114,11 @@ class TestConnection(tests.util.TestCase):
self.assertFalse(plist1.active)
self.assertTrue(plist2.active)
notify = unittest.mock.Mock()
self.sql.connect("notify::active-playlist", notify)
self.sql.set_active_playlist(plist2)
notify.assert_not_called()
self.sql.set_active_playlist(None)
self.assertIsNone(self.sql.active_playlist)
self.assertFalse(plist2.active)

View File

@ -615,6 +615,11 @@ class TestSystemPlaylists(tests.util.TestCase):
self.table.queued.propertyid).fetchall()
self.assertEqual(len(rows), 1)
self.assertEqual(rows[0]["trackid"], self.track.trackid)
self.assertEqual(self.sql.active_playlist, self.table.queued)
self.sql.set_active_playlist(self.table.collection)
self.table.queued.add_track(self.track)
self.assertEqual(self.sql.active_playlist, self.table.queued)
self.library.deleting = True
self.table.queued.reload_tracks()