private void SaveSettingsInternal(string newCollectionPath, GroupedRemoteSettings groupedSettings) { foreach (KeyValuePair <string, RemoteSettingPossibilities> groupedSetting in groupedSettings) { string text = Path.Combine(newCollectionPath, groupedSetting.Key); foreach (KeyValuePair <string, List <RemoteSetting> > item in groupedSetting.Value) { bool flag = false; string text2 = text; if (item.Value.Count > 1 || item.Value[0].HasScope) { flag = true; text2 = Path.Combine(text2, item.Key + "*"); } for (int i = 0; i < item.Value.Count; i++) { RemoteSetting remoteSetting = item.Value[i]; string text3 = remoteSetting.Name; if (flag) { text3 = i.ToString() + ":" + text3; } if (remoteSetting.HasScope) { text3 = text3 + ":" + remoteSetting.ScopeString; } remoteSettingsStorage.SetValue(text2, text3, remoteSetting.Value); } } } }
/// <summary> /// Merges the passed in GroupedRemoteSettings from buckets into this instance. /// Identical settings in this instance will be overwritten by those in buckets. /// </summary> /// <param name="buckets"></param> /// <param name="logger"></param> public void Merge(GroupedRemoteSettings buckets, IRemoteSettingsLogger logger) { foreach (string key in buckets.Keys) { RemoteSettingPossibilities remoteSettingPossibilities = buckets[key]; if (!TryGetValue(key, out RemoteSettingPossibilities value)) { value = (base[key] = new RemoteSettingPossibilities()); } foreach (string key2 in remoteSettingPossibilities.Keys) { List <RemoteSetting> list = remoteSettingPossibilities[key2]; if (!value.TryGetValue(key2, out List <RemoteSetting> value2)) { value2 = (value[key2] = new List <RemoteSetting>()); } for (int num = list.Count - 1; num >= 0; num--) { RemoteSetting remoteSetting = list[num]; int num2 = value2.FindIndex((RemoteSetting s) => s.Name == remoteSetting.Name && s.ScopeString == remoteSetting.ScopeString); if (num2 != -1) { logger.LogVerbose($"Overwriting RemoteSetting during merge: Old value from {value2[num2]}"); logger.LogVerbose($"Overwriting RemoteSetting during merge: New value from {remoteSetting}"); value2[num2] = remoteSetting; } else { value2.Insert(0, remoteSetting); } } } } }
public void SaveNonScopedSetting(RemoteSetting setting) { if (setting.HasScope) { throw new InvalidOperationException("Cannot save setting that has scope"); } remoteSettingsStorage.SetValue(setting.Path, setting.Name, setting.Value); }