Connected Devices: fixed rplaylist sync

This commit is contained in:
Ultradesu
2026-07-24 03:35:42 +03:00
parent be58933e8d
commit a737456daf
4 changed files with 269 additions and 23 deletions
+12
View File
@@ -792,15 +792,27 @@ pub(crate) fn spawn_add_target(
let devices = Arc::clone(&runtime.devices);
let tx = runtime.event_tx.clone();
let ids: Vec<i64> = tracks.iter().map(|t| t.id).filter(|id| *id >= 0).collect();
let fed_tracks: Vec<crate::federation::FedTrack> = tracks
.iter()
.filter(|track| track.is_fed_pending())
.filter_map(|track| track.fed.clone())
.collect();
tokio::task::spawn_blocking(move || {
let result = library
.add_tracks_to_playlist(playlist_id, &ids)
.and_then(|()| library.add_fed_tracks_to_playlist(playlist_id, &fed_tracks))
.map_err(|err| format!("{err:#}"));
if result.is_ok()
&& let Err(err) = devices.record_playlist_tracks_added(playlist_id, &ids)
{
tracing::warn!(%err, playlist_id, "recording synced playlist add failed");
}
if result.is_ok()
&& let Err(err) =
devices.record_playlist_fed_tracks_added(playlist_id, &fed_tracks)
{
tracing::warn!(%err, playlist_id, "recording synced federated playlist add failed");
}
let _ = tx.send(AppEvent::PlaylistTracksAdded {
playlist_id,
playlist_title,
+3 -2
View File
@@ -457,8 +457,9 @@ impl EditField {
}
}
/// What an add-to-playlist flow adds: local library tracks directly, or
/// federated tracks that are downloaded into the library first.
/// What an add-to-playlist flow adds: local library tracks directly (including
/// already-materialized federation placeholders), or federated search/card
/// tracks that are downloaded into the library first.
#[derive(Debug, Clone)]
pub enum PlaylistAddTarget {
Local(Vec<TrackItem>),