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);
            }
        }