private async void ValidateUser(Uri redirectUri) { var flyout = new FlyoutControl(); flyout.FlyoutContent = new WebValidationView(redirectUri); var token = await flyout.ShowAsync() as AccessToken; if (token != null) { AccountManager.SetLoginVk(token); var p = ViewModelLocator.Vkontakte.LoginParams ?? new Dictionary <string, string>() { ["version"] = "4.11.1", ["func_v"] = "5" }; p.Add("userId", token.UserId.ToString()); await ViewModelLocator.Vkontakte.Execute.GetBaseData(p); MessengerInstance.Send(new NavigateToPageMessage() { Page = "/Main.MusicView" }); } }
private async void AddNewAlbum() { var album = new VkPlaylist() { Title = "New album" }; var flyout = new FlyoutControl(); flyout.FlyoutContent = new EditAlbumView(album); var result = await flyout.ShowAsync(); if ((bool)result) { try { var newAlbumId = await ViewModelLocator.Vkontakte.Audio.AddAlbum(album.Title); if (newAlbumId != 0) { album.Id = newAlbumId; album.OwnerId = ViewModelLocator.Vkontakte.AccessToken.UserId; Albums.Insert(5, album); } } catch (Exception ex) { LoggingService.Log(ex); } } }
private async void Refresh() { await ServiceLocator.LocalMusicService.Clear(); if (Tracks != null) { Tracks.Clear(); } if (Artists != null) { Artists.Clear(); } if (Albums != null) { Albums.Clear(); } if (AlbumGroups != null) { AlbumGroups.Clear(); } if (SelectedArtistAlbums != null) { SelectedArtistAlbums.Clear(); } var flyout = new FlyoutControl(); flyout.FlyoutContent = new MusicScanView(); await flyout.ShowAsync(); switch (SelectedTabIndex) { case 0: LoadTracks(); break; case 1: LoadAlbums(); break; case 2: LoadArtists(); break; } }
public async void Save() { try { var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver(), Formatting = Formatting.Indented }; var json = JsonConvert.SerializeObject(this, settings); File.WriteAllText(SettingsFile, json); } catch (UnauthorizedAccessException ex) { var flyout = new FlyoutControl { FlyoutContent = new CommonErrorView(ErrorResources.AccessDeniedErrorTitle, ErrorResources.AccessDeniedErrorDescription) }; await flyout.ShowAsync().ContinueWith(t => { if ((bool)t.Result) { var info = new ProcessStartInfo { UseShellExecute = true, FileName = Application.ResourceAssembly.Location, WorkingDirectory = Environment.CurrentDirectory, Verb = "runas" }; Process.Start(info); } Application.Current.Shutdown(); LoggingService.Log(ex); }); } catch (Exception ex) { LoggingService.Log(ex); } }
private async void ValidateUser(Uri redirectUri) { var flyout = new FlyoutControl(); flyout.FlyoutContent = new WebValidationView(redirectUri); var token = await flyout.ShowAsync() as AccessToken; if (token != null) { AccountManager.SetLoginVk(token); MessengerInstance.Send(new NavigateToPageMessage() { Page = "/Main.MusicView" }); } }
private void App_OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { LoggingService.Log(e.Exception); Dispatcher.Invoke(async() => { e.Handled = true; var flyout = new FlyoutControl(); flyout.FlyoutContent = new CommonErrorView(); var restart = (bool)await flyout.ShowAsync(); if (restart) { Process.Start(Application.ResourceAssembly.Location); } Shutdown(); }); }
private async void EditAlbum(VkPlaylist album) { var flyout = new FlyoutControl(); flyout.FlyoutContent = new EditAlbumView(album); var result = await flyout.ShowAsync(); if (result != null && (bool)result) { try { if (await ViewModelLocator.Vkontakte.Audio.EditAlbum(album.Id.ToString(), album.Title)) { Albums[Albums.IndexOf(album)].Title = album.Title; } } catch (Exception ex) { LoggingService.Log(ex); } } }
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; }
private async void Save() { var album = new VkPlaylist() { Title = _album.Artist + " - " + _album.Name }; var flyout = new FlyoutControl(); flyout.FlyoutContent = new EditAlbumView(album); var result = await flyout.ShowAsync(); if ((bool)result) { try { Debug.WriteLine("Creating new album..."); NotificationService.NotifyProgressStarted(MainResources.NotificationSaving); var newAlbumId = await ViewModelLocator.Vkontakte.Audio.AddAlbum(album.Title); Debug.WriteLine("Album created. Id: " + newAlbumId); Debug.WriteLine("Gettings audios..."); var progress = new Progress <int>(p => NotificationService.NotifyProgressChanged((int)(p / 2.0f))); var audios = await GetAudioList(progress); Debug.WriteLine("Got audios. Count: " + audios.Count); Debug.WriteLine("Saving audios."); int requestsCount = 0; var audioIds = new List <long>(); bool captchaNeeded = false; string captchaImg = string.Empty; string captchaSid = string.Empty; string captchaKey = string.Empty; int progressStep = (int)(100.0f / (audios.Count + 1)); for (var i = audios.Count - 1; i > 0; i--) { var vkAudio = audios[i]; try { var newAudioId = await ViewModelLocator.Vkontakte.Audio.Add(long.Parse(vkAudio.Id), vkAudio.OwnerId, captchaSid : captchaSid, captchaKey : captchaKey); if (newAudioId != 0) { audioIds.Add(newAudioId); captchaNeeded = false; captchaKey = null; captchaSid = null; } } catch (VkCaptchaNeededException ex) { captchaNeeded = true; captchaImg = ex.CaptchaImg; captchaSid = ex.CaptchaSid; } if (captchaNeeded) { flyout = new FlyoutControl(); flyout.FlyoutContent = new CaptchaRequestView(captchaSid, captchaImg); result = await flyout.ShowAsync(); if (!string.IsNullOrEmpty((string)result)) { captchaKey = (string)result; i = i - 1; continue; } else { NotificationService.NotifyProgressFinished(); return; } } NotificationService.NotifyProgressChanged((int)(progressStep / 2.0f)); requestsCount++; if (requestsCount >= 2) //не больше 2-х запросов в секунду { requestsCount = 0; await Task.Delay(1000); } } Debug.WriteLine("Audios saved. Moving to album..."); if (audioIds.Count > 0) { if (await ViewModelLocator.Vkontakte.Audio.MoveToAlbum(newAlbumId, audioIds)) { Debug.WriteLine("Album saved!"); NotificationService.NotifyProgressFinished(MainResources.NotificationSaved); } } } catch (Exception ex) { LoggingService.Log(ex); } } }
public static async Task CopyAlbum(string title, long albumId, long ownerId) { var newAlbumId = await ViewModelLocator.Vkontakte.Audio.AddAlbum(title); var audio = await GetUserTracks(albumId : albumId, ownerId : ownerId); if (audio.Items != null && audio.Items.Count > 0) { NotificationService.NotifyProgressStarted(MainResources.NotificationSaving); int progressStep = (int)(100.0f / audio.Items.Count); bool captchaNeeded = false; string captchaImg = string.Empty; string captchaSid = string.Empty; string captchaKey = string.Empty; var audioIds = new List <long>(); int count = 0; audio.Items.Reverse(); for (int i = 0; i < audio.Items.Count; i++) { var track = audio.Items[i]; if (count > 1) { count = 0; await Task.Delay(1000); //не больше 2-х запросов в секунду } try { var newAudioId = await ViewModelLocator.Vkontakte.Audio.Add(long.Parse(track.Id), track.OwnerId, captchaSid : captchaSid, captchaKey : captchaKey); audioIds.Add(newAudioId); captchaNeeded = false; captchaKey = null; captchaSid = null; } catch (VkCaptchaNeededException ex) { captchaNeeded = true; captchaImg = ex.CaptchaImg; captchaSid = ex.CaptchaSid; } if (captchaNeeded) { var flyout = new FlyoutControl(); flyout.FlyoutContent = new CaptchaRequestView(captchaSid, captchaImg); var result = await flyout.ShowAsync(); if (!string.IsNullOrEmpty((string)result)) { captchaKey = (string)result; i = i - 1; continue; } else { NotificationService.NotifyProgressFinished(); return; } } count++; NotificationService.NotifyProgressChanged(progressStep); } await ViewModelLocator.Vkontakte.Audio.MoveToAlbum(newAlbumId, audioIds); NotificationService.NotifyProgressFinished(MainResources.NotificationSaved); } }
private void InitializeCommands() { AddSocietyCommand = new RelayCommand(async() => { var flyout = new FlyoutControl(); flyout.FlyoutContent = new AddSocietyFlyout(); var result = await flyout.ShowAsync(); if (result != null) { CancelAsync(); if (Societies.Count == 0) { _societies.Add(new VkGroup() { Name = MainResources.AllSocieties }); } Societies.Add((VkGroup)result); SaveSocieties(); if (SelectedSociety == null) { SelectedSociety = _societies.First(); } else if (SelectedSociety.Id == 0) { LoadFeed(_cancellationToken.Token); } } }); RemoveSocietyCommand = new RelayCommand <VkGroup>(society => { bool isActiveSociety = false; if (society == SelectedSociety) { isActiveSociety = true; } CancelAsync(); Societies.Remove(society); if (Societies.Count == 1) { Societies.Clear(); } SaveSocieties(); if (!isActiveSociety && (SelectedSociety != null && SelectedSociety.Id != 0)) { return; } if (isActiveSociety) { if (Societies.Any()) { SelectedSociety = Societies.First(); } } //if (SelectedSociety != null && SelectedSociety.Id == 0) //{ CancelAsync(); LoadFeed(_cancellationToken.Token); //} //if (isActiveSociety && Societies.Any()) // SelectedSociety = Societies.First(); //else if (isActiveSociety) // LoadFeed(_cancellationToken.Token); }); PlayAudioCommand = new RelayCommand <Audio>(audio => { AudioService.Play(audio); AudioService.SetCurrentPlaylist(Tracks); }); }
private void InitializeCommands() { CreateStationCommand = new RelayCommand(async() => { var flyout = new FlyoutControl(); flyout.FlyoutContent = new CreateRadioStationView(); var artists = await flyout.ShowAsync() as IList <EchoArtist>; if (artists != null) { AddStation(artists); } }); PlayStationCommand = new RelayCommand <RadioStation>(station => { RadioService.PlayRadio(station); MessengerInstance.Send(new NavigateToPageMessage() { Page = "/Main.NowPlayingView" }); }); RemoveStationCommand = new RelayCommand <RadioStation>(station => { Stations.Remove(station); RadioService.SaveStations(Stations); }); EditStationCommand = new RelayCommand <RadioStation>(async station => { var createRadioStationView = new CreateRadioStationView(); createRadioStationView.Artists = new ObservableCollection <EchoArtist>(station.Artists); var flyout = new FlyoutControl(); flyout.FlyoutContent = createRadioStationView; var artists = await flyout.ShowAsync() as IList <EchoArtist>; if (artists != null) { var titleArtist = station.Artists.First(); station.Artists = artists.ToList(); //update image and title station.Title = string.Join(", ", station.Artists.Select(s => s.Name)); if (station.Artists.First().Name != titleArtist.Name) { station.ImageUrl = null; try { var artistImage = await DataService.GetArtistImage(station.Artists.First().Name, false); if (artistImage != null) { station.ImageUrl = artistImage.OriginalString; } } catch (Exception ex) { LoggingService.Log(ex); } } RadioService.SaveStations(Stations); } }); }