private async void AddButtonClick(object sender, RoutedEventArgs e) { var album = AlbumsComboBox.SelectedValue as VkAudioAlbum; if (album == null && !string.IsNullOrEmpty(AlbumsComboBox.Text)) { album = await AddNewAlbum(AlbumsComboBox.Text); } if (album == null) { return; } if (!_track.IsAddedByCurrentUser) { var result = await DataService.AddAudio(_track); if (!result) { LoggingService.Log("Unable to add audio " + _track.Id + " to current user."); return; } } try { var result = await ViewModelLocator.Vkontakte.Audio.MoveToAlbum(album.Id, new List <long>() { long.Parse(_track.Id) }); if (!result) { LoggingService.Log("Unable to move audio " + _track.Id + " to album " + album.Id + "."); return; } } catch (Exception ex) { LoggingService.Log(ex); } Close(); }
private async Task LikeDislikeAudio(VkAudio audio, bool captchaNeeded = false, string captchaSid = null, string captchaImg = null) { if (audio == null) { return; } IsWorking = true; string captchaKey = null; if (captchaNeeded) { var flyout = new FlyoutControl(); flyout.FlyoutContent = new CaptchaRequestView(captchaSid, captchaImg); var result = await flyout.ShowAsync(); if (string.IsNullOrEmpty((string)result)) { IsWorking = false; return; } else { captchaKey = (string)result; } } try { bool result; if (!audio.IsAddedByCurrentUser) { result = await DataService.RemoveAudio(audio); } else { result = await DataService.AddAudio(audio, captchaSid, captchaKey); } if (result) { //нужно, чтобы обновить список треков пользователя, если он открыт в данный момент MessengerInstance.Send(new UserTracksChangedMessage()); } else { audio.IsAddedByCurrentUser = !audio.IsAddedByCurrentUser; LoggingService.Log("Can't add/remove audio " + audio.Id + " owner: " + audio.OwnerId + "."); } } catch (VkCaptchaNeededException ex) { LikeDislikeAudio(audio, true, ex.CaptchaSid, ex.CaptchaImg); } catch (Exception ex) { audio.IsAddedByCurrentUser = !audio.IsAddedByCurrentUser; LoggingService.Log(ex); } IsWorking = false; }