[frontend] Accept tl_track in track_playback_started
All checks were successful
Deploy to mopidy1 / deploy (push) Successful in 26s

Mopidy's CoreListener calls track_playback_started(tl_track=...), but the
method took a positional `track`, so every playback start raised
TypeError and the smart queue never refilled on track changes. Add a
regression test.
This commit is contained in:
2026-09-24 00:00:59 -04:00
parent 0d1757d80a
commit 9f28664f68
2 changed files with 17 additions and 1 deletions

View File

@ -14,6 +14,8 @@ from mopidy_smartplaylists.generators import (
)
if TYPE_CHECKING:
from mopidy.models import TlTrack
from mopidy_smartplaylists.compat import Config, CoreProxy, Uri
logger = logging.getLogger(__name__)
@ -63,7 +65,8 @@ class SmartPlaylistsFrontend(pykka.ThreadingActor, CoreListener):
logger.info("Smart playlists loaded, running refresh...")
refresh_smart_playlists(self.core, section)
def track_playback_started(self, track) -> None:
def track_playback_started(self, tl_track: TlTrack | None = None) -> None:
logger.debug("Track playback started: %s", tl_track)
self._refill_queue()
def tracklist_changed(self) -> None:

View File

@ -74,3 +74,16 @@ class TestSmartPlaylistsFrontend:
frontend.playlists_loaded()
core.library.search.assert_not_called()
def test_track_playback_started_accepts_tl_track(self):
config = mock.Mock()
config.get.return_value = {
"playlist_prefix": "[Smart]",
"smart_queue_enabled": "false",
}
core = mock.Mock()
frontend = SmartPlaylistsFrontend(config, core)
frontend.track_playback_started(tl_track=mock.Mock())
core.tracklist.add.assert_not_called()