public static void UpdateMSHealthToken(MSHealthToken token) { SetVersion(); // Ensure settings are on last version ApplicationDataContainer loRoamingSettings = ApplicationData.Current.RoamingSettings; if (token != null) { // Token provided, persist values loRoamingSettings.Values["MSHealthToken"] = token.ToComposite(); } else { // Token not provided, reset values if (loRoamingSettings.Values["MSHealthToken"] != null) { loRoamingSettings.Values.Remove("MSHealthToken"); } } }
/// <summary> /// Ensures settings version is up to date. /// </summary> private static void SetVersion() { ApplicationData loAppData = ApplicationData.Current; if (loAppData.Version < 1) { Task.Run(async() => { await loAppData.SetVersionAsync(1, new ApplicationDataSetVersionHandler((request) => { SetVersionDeferral loDeferral = request.GetDeferral(); if (request.CurrentVersion < 1) { ApplicationDataContainer loLocalSettings = ApplicationData.Current.LocalSettings; ApplicationDataContainer loRoamingSettings = ApplicationData.Current.RoamingSettings; ApplicationDataCompositeValue loComposite = null; // MSHealthToken if (loLocalSettings.Values["MSHealthTokenCreationTime"] != null || loLocalSettings.Values["MSHealthExpiresIn"] != null || loLocalSettings.Values["MSHealthAccessToken"] != null || loLocalSettings.Values["MSHealthRefreshToken"] != null) { MSHealthToken loToken = new MSHealthToken(); if (loLocalSettings.Values["MSHealthTokenCreationTime"] != null) { loToken.CreationTime = new DateTime((long)loLocalSettings.Values["MSHealthTokenCreationTime"]); } if (loLocalSettings.Values["MSHealthExpiresIn"] != null) { loToken.ExpiresIn = (long)loLocalSettings.Values["MSHealthExpiresIn"]; } if (loLocalSettings.Values["MSHealthAccessToken"] != null) { loToken.AccessToken = (string)loLocalSettings.Values["MSHealthAccessToken"]; } if (loLocalSettings.Values["MSHealthRefreshToken"] != null) { loToken.RefreshToken = (string)loLocalSettings.Values["MSHealthRefreshToken"]; } loRoamingSettings.Values["MSHealthToken"] = loToken.ToComposite(); } // Activity Filters if (loLocalSettings.Values["MSHealthFilterActivityExercise"] != null || loLocalSettings.Values["MSHealthFilterActivityRun"] != null || loLocalSettings.Values["MSHealthFilterActivityBike"] != null || loLocalSettings.Values["MSHealthFilterActivityGolf"] != null || loLocalSettings.Values["MSHealthFilterActivitySleep"] != null || loLocalSettings.Values["MSHealthFilterActivityGuided"] != null || loLocalSettings.Values["MSHealthFilterPeriod"] != null || loLocalSettings.Values["MSHealthFilterDistance"] != null) { loComposite = new ApplicationDataCompositeValue(); // Activity Type: Exercise if (loLocalSettings.Values["MSHealthFilterActivityExercise"] != null) { loComposite["exercise"] = loLocalSettings.Values["MSHealthFilterActivityExercise"]; } // Activity Type: Run if (loLocalSettings.Values["MSHealthFilterActivityRun"] != null) { loComposite["run"] = loLocalSettings.Values["MSHealthFilterActivityRun"]; } // Activity Type: Bike if (loLocalSettings.Values["MSHealthFilterActivityBike"] != null) { loComposite["bike"] = loLocalSettings.Values["MSHealthFilterActivityBike"]; } // Activity Type: Golf if (loLocalSettings.Values["MSHealthFilterActivityGolf"] != null) { loComposite["golf"] = loLocalSettings.Values["MSHealthFilterActivityGolf"]; } // Activity Type: Sleep if (loLocalSettings.Values["MSHealthFilterActivitySleep"] != null) { loComposite["sleep"] = loLocalSettings.Values["MSHealthFilterActivitySleep"]; } // Activity Type: Guided Workout if (loLocalSettings.Values["MSHealthFilterActivityGuided"] != null) { loComposite["guided"] = loLocalSettings.Values["MSHealthFilterActivityGuided"]; } // Period if (loLocalSettings.Values["MSHealthFilterPeriod"] != null) { loComposite["period"] = loLocalSettings.Values["MSHealthFilterPeriod"]; } // Distance Unit if (loLocalSettings.Values["MSHealthFilterDistance"] != null) { loComposite["distance"] = loLocalSettings.Values["MSHealthFilterDistance"]; } loRoamingSettings.Values["MSHealthActivityFilters"] = loComposite; } } loDeferral.Complete(); })); }).Wait(); } }
/// <summary> /// Writes value to settings. /// </summary> /// <typeparam name="T"><see cref="System.Type"/> parameter to write.</typeparam> /// <param name="key">Setting key.</param> /// <param name="value">Setting value.</param> /// <param name="composite">Setting composite.</param> private static void WriteSettingValue <T>(string key, T value, string composite = null) { SetVersion(); // Ensure settings are on last version #if WINDOWS_UWP ApplicationDataContainer loRoamingSettings = ApplicationData.Current.RoamingSettings; ApplicationDataCompositeValue loComposite = null; MSHealthToken loMSHealthToken = null; if (!string.IsNullOrEmpty(composite)) { loComposite = loRoamingSettings.Values[composite] as ApplicationDataCompositeValue; if (loComposite != null && !string.IsNullOrEmpty(key)) { if (value != null) { loComposite[key] = value; } else { loComposite.Values.Remove(key); } loRoamingSettings.Values[composite] = loComposite; } else { if (value != null) { if (typeof(T) == typeof(MSHealthToken)) { loMSHealthToken = value as MSHealthToken; if (loMSHealthToken != null) { loRoamingSettings.Values[composite] = loMSHealthToken.ToComposite(); } } else { loComposite = new ApplicationDataCompositeValue(); loComposite[key] = value; loRoamingSettings.Values[composite] = loComposite; } } else { loRoamingSettings.Values.Remove(composite); } } } else { if (value != null) { loRoamingSettings.Values[key] = value; } else { loRoamingSettings.Values.Remove(key); } } #elif DESKTOP_APP if (value != null) { ConfigurationManager.AppSettings[key] = value.ToString(); } else { ConfigurationManager.AppSettings[key] = null; } #endif }