async void AddToPlaylist(PlaylistFile playlist) { try { if (playlist.TracksFiles.Any(t => t == Track)) { return; } Track.PlaylistId = playlist.Id; playlist.TracksFiles.Add(Track); await Services.PlaylistsService.SavePlaylist(playlist); var index = StaticContent.Music.IndexOf(Track); var track = StaticContent.Music[index]; track.PlaylistId = playlist.Id; await MusicFilesService.UpdateMusicCollection(); }catch (Exception e) { await ContentDialogService.Show(new ExceptionDialog("Невозможно добавить трек в плейлист", "Возможно, плейлиста не существует или трек был удален", e)); } }
public TrackControl() { this.InitializeComponent(); PlayCommand = new RelayCommand(async() => { if (Track.IsLocal) { await PlayMusicService.PlayMusicForLibrary(Track, 1); } else { await MusicService.PlayMusic(Track, 1); } }); DeleteCommand = new RelayCommand(async() => { try { if (Track.IsLocal) { StaticContent.Music.Remove(Track); AudioFile trackByPlaylist = null; if (Track.PlaylistId != 0) { var playlist = await Services.PlaylistsService.GetById(Track.PlaylistId); trackByPlaylist = playlist.TracksFiles.Single(t => t.SourceString == Track.SourceString); playlist.TracksFiles.Remove(trackByPlaylist); await Services.PlaylistsService.SavePlaylist(playlist); } if (trackByPlaylist != null) { if (trackByPlaylist.Source == null) { trackByPlaylist.Source = await StorageFile.GetFileFromPathAsync(Track.SourceString); } await trackByPlaylist.Source.DeleteAsync(); } else { if (Track.Source == null) { Track.Source = await StorageFile.GetFileFromPathAsync(Track.SourceString); } await Track.Source.DeleteAsync(); } await MusicFilesService.UpdateMusicCollection(); } else { //TODO: удаление трека ебаный врот } }catch (Exception e) { await ContentDialogService.Show(new ExceptionDialog("Невозможно удалить этот трек", "Возможно, этот трек был уже удален.", e)); } }); AddToFavoriteCommand = new RelayCommand(async() => { try { if (Track.IsLocal) { var playlist = await Services.PlaylistsService.GetById(2); if (playlist.TracksFiles.Any(t => t.SourceString == Track.SourceString)) { var dialog = new MessageDialog("Данный трек уже добавлен в избранное", "Ошибка при добавлении в избранное"); await dialog.ShowAsync(); } else { Like.Visibility = Visibility.Collapsed; LikeAdd.Visibility = Visibility.Visible; Track.IsFavorite = true; playlist.TracksFiles.Add(Track); await Services.PlaylistsService.SavePlaylist(playlist); } } else { } }catch (Exception e) { await ContentDialogService.Show(new ExceptionDialog("Невозможно добавить трек в избранное", "Возможно, этот трек поврежден или не существует плейлиста, если ошибка будет повторяться, переустановите приложение.", e)); } }); RemoveFavoriteCommand = new RelayCommand(() => { }); AddOnLibraryCommand = new RelayCommand(async() => { try { await Fooxboy.MusicX.Core.VKontakte.Music.Add.ToLibrary(Track.Id, Track.AccessKey); await new MessageDialog("Трек добавлен в Вашу библиотеку").ShowAsync(); }catch (Flurl.Http.FlurlHttpException) { InternetService.GoToOfflineMode(); } catch (Exception e) { await ContentDialogService.Show(new ExceptionDialog("Ошибка при добавлении трека", "Возникла ошибка при добавлении трека в Вашу библиотеку", e)); } }); GetPropertyCommand = new RelayCommand(async() => { await ContentDialogService.Show(new PropertiesTrackContentDialog(Track)); }); GoToArtistCommand = new RelayCommand(() => { StaticContent.NavigationContentService.Go(typeof(ArtistView), new ArtistParameter() { Id = Track.ArtistId, Name = Track.Artist }); }); }