public static async Task <Uri> GetPreferredQuality(Dictionary <AppConstants.StreamQuality, Uri> qualities)
        {
            AppConstants.NetworkConnectionType connection = await DetermineInternetConnection();

            AppConstants.StreamQuality preferredQuality = AppConstants.StreamQuality.Mobile;
            if (connection == AppConstants.NetworkConnectionType.Cellular)
            {
                preferredQuality = AppConstants.CellStreamQuality;
            }
            else if (connection == AppConstants.NetworkConnectionType.WiFi)
            {
                preferredQuality = AppConstants.WifiStreamQuality;
            }

            if (preferredQuality == AppConstants.StreamQuality.Source)
            {
                if (qualities.ContainsKey(AppConstants.StreamQuality.Source))
                {
                    return(qualities[AppConstants.StreamQuality.Source]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Chunked))
                {
                    return(qualities[AppConstants.StreamQuality.Chunked]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.High))
                {
                    return(qualities[AppConstants.StreamQuality.High]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Medium))
                {
                    return(qualities[AppConstants.StreamQuality.Medium]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Low))
                {
                    return(qualities[AppConstants.StreamQuality.Low]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Mobile))
                {
                    return(qualities[AppConstants.StreamQuality.Mobile]);
                }
            }
            else if (preferredQuality == AppConstants.StreamQuality.High)
            {
                if (qualities.ContainsKey(AppConstants.StreamQuality.High))
                {
                    return(qualities[AppConstants.StreamQuality.High]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Chunked))
                {
                    return(qualities[AppConstants.StreamQuality.Chunked]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Source))
                {
                    return(qualities[AppConstants.StreamQuality.Source]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Medium))
                {
                    return(qualities[AppConstants.StreamQuality.Medium]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Low))
                {
                    return(qualities[AppConstants.StreamQuality.Low]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Mobile))
                {
                    return(qualities[AppConstants.StreamQuality.Mobile]);
                }
            }
            else if (preferredQuality == AppConstants.StreamQuality.Medium)
            {
                if (qualities.ContainsKey(AppConstants.StreamQuality.Medium))
                {
                    return(qualities[AppConstants.StreamQuality.Medium]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.High))
                {
                    return(qualities[AppConstants.StreamQuality.High]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Chunked))
                {
                    return(qualities[AppConstants.StreamQuality.Chunked]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Source))
                {
                    return(qualities[AppConstants.StreamQuality.Source]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Low))
                {
                    return(qualities[AppConstants.StreamQuality.Low]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Mobile))
                {
                    return(qualities[AppConstants.StreamQuality.Mobile]);
                }
            }
            else if (preferredQuality == AppConstants.StreamQuality.Low)
            {
                if (qualities.ContainsKey(AppConstants.StreamQuality.Low))
                {
                    return(qualities[AppConstants.StreamQuality.Low]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Mobile))
                {
                    return(qualities[AppConstants.StreamQuality.Mobile]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Medium))
                {
                    return(qualities[AppConstants.StreamQuality.Medium]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.High))
                {
                    return(qualities[AppConstants.StreamQuality.High]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Chunked))
                {
                    return(qualities[AppConstants.StreamQuality.Chunked]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Source))
                {
                    return(qualities[AppConstants.StreamQuality.Source]);
                }
            }
            else if (preferredQuality == AppConstants.StreamQuality.Mobile)
            {
                if (qualities.ContainsKey(AppConstants.StreamQuality.Mobile))
                {
                    return(qualities[AppConstants.StreamQuality.Mobile]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Low))
                {
                    return(qualities[AppConstants.StreamQuality.Low]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Medium))
                {
                    return(qualities[AppConstants.StreamQuality.Medium]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.High))
                {
                    return(qualities[AppConstants.StreamQuality.High]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Chunked))
                {
                    return(qualities[AppConstants.StreamQuality.Chunked]);
                }
                else if (qualities.ContainsKey(AppConstants.StreamQuality.Source))
                {
                    return(qualities[AppConstants.StreamQuality.Source]);
                }
            }
            return(qualities[AppConstants.StreamQuality.Chunked]);
        }
Esempio n. 2
0
        private async void page_Loaded(object sender, RoutedEventArgs e)
        {
            HelperMethods.HideSplitView();
            try
            {
                AppConstants.NetworkConnectionType connection = await HelperMethods.DetermineInternetConnection();
            }
            catch (Exception)
            {
                loadingText.Text = "no internet connection found";
                return;
            }
            ApplicationDataContainer roamingSettings = ApplicationData.Current.RoamingSettings;
            StorageFolder            roamingFolder   = ApplicationData.Current.RoamingFolder;
            StorageFolder            localFolder     = ApplicationData.Current.LocalFolder;

            await DoEmotesStuff(localFolder);

            loadingText.Text = "loading settings";
            if (!roamingSettings.Values.ContainsKey("wifiStreamQuality"))
            {
                roamingSettings.Values["wifiStreamQuality"] = "Medium";
            }
            if (!roamingSettings.Values.ContainsKey("cellStreamQuality"))
            {
                roamingSettings.Values["cellStreamQuality"] = "Mobile";
            }
            AppConstants.WifiStreamQuality = HelperMethods.GetStreamQuality((string)roamingSettings.Values["wifiStreamQuality"]);
            AppConstants.CellStreamQuality = HelperMethods.GetStreamQuality((string)roamingSettings.Values["cellStreamQuality"]);
            StorageFile usersFile = await roamingFolder.CreateFileAsync("Users.json", CreationCollisionOption.OpenIfExists);

            string usersData = await FileIO.ReadTextAsync(usersFile);

            if (string.IsNullOrEmpty(usersData))
            {
                roamingSettings.Values["activeUser"] = string.Empty;
                AppConstants.activeUser = null;
                HelperMethods.ShowSplitView();
                Frame.Navigate(typeof(HomePage));
            }
            else
            {
                JArray usersA = JArray.Parse(usersData);
                Dictionary <string, User> tmpUsers = new Dictionary <string, User>();
                foreach (JObject userO in usersA)
                {
                    User   tmpUser     = null;
                    string name        = (string)userO["name"];
                    string accessToken = (string)userO["access_token"];
                    loadingText.Text = "loading " + name;
                    try
                    {
                        tmpUser = await AppConstants.Twixel.RetrieveUserWithAccessToken(accessToken);
                    }
                    catch (TwixelException ex)
                    {
                        if (ex.Message == $"{accessToken} is not a valid access token")
                        {
                            await HelperMethods.ShowMessageDialog($"The access token for {name} isn't currently valid.\nYou can fix this later in the settings menu.");
                        }
                        else
                        {
                            await HelperMethods.ShowMessageDialog($"Something went wrong when trying to talk to Twitch. You should probably try again later. Here's the error:\n{ex.Message}");
                        }
                    }
                    if (tmpUser == null)
                    {
                        AppConstants.users.Add(name, string.Empty);
                    }
                    else
                    {
                        tmpUsers.Add(name, tmpUser);
                        AppConstants.users.Add(name, accessToken);
                    }
                }
                if (!roamingSettings.Values.ContainsKey("activeUser"))
                {
                    roamingSettings.Values["activeUser"] = string.Empty;
                }
                string activeUser = (string)roamingSettings.Values["activeUser"];
                if (!string.IsNullOrEmpty(activeUser))
                {
                    if (AppConstants.users.ContainsKey(activeUser))
                    {
                        if (!string.IsNullOrEmpty(AppConstants.users[activeUser]))
                        {
                            AppConstants.activeUser = tmpUsers[activeUser];
                            Frame.Navigate(typeof(HomePage));
                        }
                        else
                        {
                            // need to choose a new active user
                            roamingSettings.Values["activeUser"] = string.Empty;
                            Frame.Navigate(typeof(HomePage));
                        }
                    }
                    else
                    {
                        // need to choose a new active user
                        roamingSettings.Values["activeUser"] = string.Empty;
                        Frame.Navigate(typeof(HomePage));
                    }
                }
                else
                {
                    // need to choose a new active user
                    roamingSettings.Values["activeUser"] = string.Empty;
                    Frame.Navigate(typeof(HomePage));
                }
            }
        }