private async void AppNavigation_AppNavigate(object sender, AppNavigationArgs e) { if (!accountViewModel.SignedIn) { accountViewModel.OnSignInComplete += async(s, arg) => { await performNavigation(e); }; return; } await performNavigation(e); }
private async Task performNavigation(AppNavigationArgs e) { if ((e == null) || !accountViewModel.SignedIn) { return; } try { switch (e.Page) { case CloudItem.Content: SelectedItem = CloudItem.Content; if (!mediaContentViewModel.Initialized) { await mediaContentViewModel.Init(); } await mediaContentViewModel.TaskQueue.WaitAllTasks(); if (mediaContentViewModel.Channels != null) { var channels = mediaContentViewModel.Channels.ToList(); var provider = channels.FirstOrDefault(c => c.ID == e.ProviderID); if (provider != null) { await mediaContentViewModel.NavigateToDeepLink(provider, e.Token); } if ((mediaContentViewModel.SelectedFolder != null) && (mediaContentViewModel.SelectedFolder.Children != null) && (mediaContentViewModel.SelectedFolder.Children.Count == 1) && !mediaContentViewModel.SelectedFolder.Children[0].IsRoot && !mediaContentViewModel.SelectedFolder.Children[0].IsChannel && !mediaContentViewModel.SelectedFolder.Children[0].IsFolder) { mediaContentViewModel.SelectedItem = mediaContentViewModel.SelectedFolder.Children[0]; mediaContentViewModel.ListViewItemSelected.Execute(mediaContentViewModel.SelectedItem); } } break; case CloudItem.Library: libraryViewModel.SelectedView = (int)LibraryViewMode.Cloud; await libraryViewModel.Poll(true); if (libraryViewModel.CloudItems == null) { return; } SelectedItem = CloudItem.Library; libraryViewModel.SelectedCloudItem = libraryViewModel.CloudItems.FirstOrDefault(n => n.ID == e.ItemID); if (libraryViewModel.SelectedCloudItem != null) { libraryViewModel.ListViewItemSelected.Execute(libraryViewModel.SelectedCloudItem); } else { LoggerService.Instance.Log("Cloud.performNavigation: LibraryItem is null"); } break; case CloudItem.Notifications: await notificationsViewModel.Poll(true); if (notificationsViewModel.NotificationItems == null) { return; } SelectedItem = CloudItem.Notifications; notificationsViewModel.SelectedItem = notificationsViewModel.NotificationItems.FirstOrDefault(n => n.ID == e.ItemID); if (notificationsViewModel.SelectedItem != null) { notificationsViewModel.ListViewItemSelected.Execute(notificationsViewModel.SelectedItem); } else { LoggerService.Instance.Log("Cloud.performNavigation: Notification item is null"); } break; case CloudItem.Queue: await queueViewModel.Poll(true); if (queueViewModel.Items == null) { return; } SelectedItem = CloudItem.Queue; queueViewModel.SelectedItem = queueViewModel.Items.FirstOrDefault(n => n.ID == e.ItemID); if (queueViewModel.SelectedItem != null) { queueViewModel.ListViewItemSelected.Execute(queueViewModel.SelectedItem); } else { LoggerService.Instance.Log("Cloud.performNavigation: Queue item is null"); } break; } } catch (Exception ex) { LoggerService.Instance.Log("ERROR: Cloud.performNavigation: " + ex); } }