protected override void AddBindable <TBindable>(TLookup lookup, Bindable <TBindable> bindable) { base.AddBindable(lookup, bindable); var setting = databasedSettings.Find(s => s.Key == lookup.ToString()); if (setting != null) { bindable.Parse(setting.Value); } else { setting = new RealmRulesetSetting { Key = lookup.ToString(), Value = bindable.Value.ToString(), RulesetID = rulesetId, Variant = variant, }; realmFactory?.Context.Write(() => realmFactory.Context.Add(setting)); databasedSettings.Add(setting); } bindable.ValueChanged += b => { realmFactory?.Context.Write(() => setting.Value = b.NewValue.ToString()); }; }
protected override void AddBindable <TBindable>(TLookup lookup, Bindable <TBindable> bindable) { base.AddBindable(lookup, bindable); var setting = databasedSettings.Find(s => s.Key == lookup.ToString()); if (setting != null) { bindable.Parse(setting.Value); } else { setting = new RealmRulesetSetting { Key = lookup.ToString(), Value = bindable.Value.ToString(), RulesetName = rulesetName, Variant = variant, }; realm?.Realm.Write(() => realm.Realm.Add(setting)); databasedSettings.Add(setting); } bindable.ValueChanged += b => { lock (pendingWrites) pendingWrites.Add(lookup); }; }