using Harmonia.Core.Player; using Harmonia.Core.Playlists; using System; using System.Linq; namespace Harmonia.WinUI.Session; public class SessionRestorer( ISessionService sessionService, IPlaylistManager playlistManager, IAudioPlayer audioPlayer) : ISessionRestorer { public void Restore() { RestorePlaylist(); RestoreAudioPlayer(); } private void RestorePlaylist() { PlaylistState playlistState = sessionService.Session.Playlist; if (string.IsNullOrWhiteSpace(playlistState.OpenPlaylistUID)) return; Playlist? playlist = playlistManager.Playlists.FirstOrDefault(p => p.UID == playlistState.OpenPlaylistUID); if (playlist is null) return; playlistManager.CurrentPlaylist = playlist; } private void RestoreAudioPlayer() { AudioPlayerState audioPlayerState = sessionService.Session.Player; if (string.IsNullOrWhiteSpace(audioPlayerState.PlaylistSongUID)) return; Playlist? playlist = playlistManager.FindPlaylistContaining(audioPlayerState.PlaylistSongUID); if (playlist is null) return; PlaylistSong? song = playlist.Songs.FirstOrDefault(s => s.UID == audioPlayerState.PlaylistSongUID); if (song is null) return; //PlaybackMode playbackMode = audioPlayerState.PlaybackState audioPlayer.LoadAsync(song, PlaybackMode.LoadOnly); } }