melors 0.2.2

Keyboard-first terminal MP3 player with queue, search, and tag editing
use super::*;

impl App {
    pub(super) fn reload_session_state(&mut self) -> Result<()> {
        self.session.tracks = self.storage.load_tracks()?;
        self.session.track_index_by_id = Self::build_track_index(&self.session.tracks);
        self.session.tracks_version = self.session.tracks_version.saturating_add(1);
        self.session.queue = self.storage.load_queue()?;
        self.session.queue_version = self.session.queue_version.saturating_add(1);
        self.normalize_queue()?;

        let current_track_missing = self
            .session
            .playback_state
            .current_track_id
            .is_some_and(|track_id| !self.session.tracks.iter().any(|track| track.id == track_id));

        if current_track_missing {
            self.player.stop();
            self.session.playback_state.current_track_id = None;
            self.session.playback_state.position_secs = 0;
            self.persist_playback_state()?;
        }

        Ok(())
    }
}