INNER CODE UNIT · Rust
initialize_playback
aome510/spotify-player · spotify_player/src/client/mod.rs:189
pub fn initialize_playback(&self, state: &SharedState, resume: bool) {
tokio::task::spawn({
let client = self.clone();
let state = state.clone();
async move {
// The main playback initialization logic is simple:
// if there is no playback, connect to an available device
//
// However, because it takes time for Spotify server to show up new changes,
// a retry logic is implemented to ensure the application's state is properly initialized
let max_retries = 3;
for i in 0..max_retries {
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
if let Err(err) = client.retrieve_current_playback(&state, false).await {
tracing::error!("Failed to retrieve current playback: {err:#}");
return;
}