[Closes #5] Scrobble plays to server when playing cached versions
This commit is contained in:
@@ -283,7 +283,7 @@ class LibremsonicApp(Gtk.Application):
|
|||||||
def reset_cache_manager(self):
|
def reset_cache_manager(self):
|
||||||
CacheManager.reset(
|
CacheManager.reset(
|
||||||
self.state.config,
|
self.state.config,
|
||||||
self.state.config.servers[self.state.config.current_server]
|
self.current_server
|
||||||
if self.state.config.current_server >= 0 else None,
|
if self.state.config.current_server >= 0 else None,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -387,6 +387,11 @@ class LibremsonicApp(Gtk.Application):
|
|||||||
self.save_play_queue()
|
self.save_play_queue()
|
||||||
CacheManager.shutdown()
|
CacheManager.shutdown()
|
||||||
|
|
||||||
|
# ########## PROPERTIES ########## #
|
||||||
|
@property
|
||||||
|
def current_server(self):
|
||||||
|
return self.state.config.servers[self.state.config.current_server]
|
||||||
|
|
||||||
# ########## HELPER METHODS ########## #
|
# ########## HELPER METHODS ########## #
|
||||||
def show_configure_servers_dialog(self):
|
def show_configure_servers_dialog(self):
|
||||||
"""Show the Connect to Server dialog."""
|
"""Show the Connect to Server dialog."""
|
||||||
@@ -501,6 +506,9 @@ class LibremsonicApp(Gtk.Application):
|
|||||||
self.update_window),
|
self.update_window),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if self.current_server.sync_enabled:
|
||||||
|
CacheManager.scrobble(song.id)
|
||||||
|
|
||||||
song_details_future = CacheManager.get_song_details(song)
|
song_details_future = CacheManager.get_song_details(song)
|
||||||
song_details_future.add_done_callback(
|
song_details_future.add_done_callback(
|
||||||
lambda f: GLib.idle_add(do_play_song, f.result()), )
|
lambda f: GLib.idle_add(do_play_song, f.result()), )
|
||||||
@@ -509,10 +517,7 @@ class LibremsonicApp(Gtk.Application):
|
|||||||
position = self.state.song_progress
|
position = self.state.song_progress
|
||||||
self.last_play_queue_update = position
|
self.last_play_queue_update = position
|
||||||
|
|
||||||
current_server = self.state.config.current_server
|
if self.current_server.sync_enabled:
|
||||||
current_server = self.state.config.servers[current_server]
|
|
||||||
|
|
||||||
if current_server.sync_enabled:
|
|
||||||
CacheManager.executor.submit(
|
CacheManager.executor.submit(
|
||||||
CacheManager.save_play_queue,
|
CacheManager.save_play_queue,
|
||||||
id=self.state.play_queue,
|
id=self.state.play_queue,
|
||||||
|
@@ -570,6 +570,12 @@ class CacheManager(metaclass=Singleton):
|
|||||||
def get_play_queue(self) -> Future:
|
def get_play_queue(self) -> Future:
|
||||||
return CacheManager.executor.submit(self.server.get_play_queue)
|
return CacheManager.executor.submit(self.server.get_play_queue)
|
||||||
|
|
||||||
|
def scrobble(self, song_id: int) -> Future:
|
||||||
|
def do_scrobble():
|
||||||
|
self.server.scrobble(song_id)
|
||||||
|
|
||||||
|
return CacheManager.executor.submit(do_scrobble)
|
||||||
|
|
||||||
def get_song_filename_or_stream(
|
def get_song_filename_or_stream(
|
||||||
self,
|
self,
|
||||||
song: Child,
|
song: Child,
|
||||||
|
@@ -66,7 +66,7 @@ class EditServerDialog(EditFormDialog):
|
|||||||
)
|
)
|
||||||
dialog.format_secondary_markup(
|
dialog.format_secondary_markup(
|
||||||
f'Connection to {server_address} resulted in the following '
|
f'Connection to {server_address} resulted in the following '
|
||||||
'error:\n\n{err}')
|
f'error:\n\n{err}')
|
||||||
|
|
||||||
dialog.run()
|
dialog.run()
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
Reference in New Issue
Block a user