Forráskód Böngészése

Adding CommitChanges() when loading configuration settings

Kenric Nugteren 1 éve
szülő
commit
0d85f7ce81

+ 4 - 0
InABox.Core/Configuration/ConfigurationCache.cs

@@ -50,6 +50,10 @@ namespace InABox.Configuration
                     {
                         Log(LogType.Information, $"- Checking: Found {typeof(T)}({type},{section}) -> {subcache[section]}");
                         var result = Serialization.Deserialize<T>(subcache[section]);
+                        if(result is BaseObject obj)
+                        {
+                            obj.CommitChanges();
+                        }
                         return result;
                     }
                 }

+ 14 - 1
InABox.Core/Configuration/GlobalConfiguration.cs

@@ -69,7 +69,13 @@ namespace InABox.Configuration
             var setting = GetSettings();
 
             if (!string.IsNullOrEmpty(setting.Contents))
+            {
                 result = Serialization.Deserialize<T>(setting.Contents);
+                if(result is BaseObject obj)
+                {
+                    obj.CommitChanges();
+                }
+            }
 
             ConfigurationCache.Add(ConfigurationCacheType.Global, Section, result);
             return result;
@@ -89,7 +95,14 @@ namespace InABox.Configuration
                 new SortOrder<GlobalSettings>(x => x.Key)
             );
             foreach (var row in data.Rows)
-                result[row.Get<GlobalSettings, string>(c => c.Key)] = Serialization.Deserialize<T>(row.Get<GlobalSettings, string>(c => c.Contents));
+            {
+                var tObj = Serialization.Deserialize<T>(row.Get<GlobalSettings, string>(c => c.Contents));
+                if(tObj is BaseObject obj)
+                {
+                    obj.CommitChanges();
+                }
+                result[row.Get<GlobalSettings, string>(c => c.Key)] = tObj;
+            }
             return result;
         }
 

+ 12 - 1
InABox.Core/Configuration/LocalConfiguration.cs

@@ -50,7 +50,18 @@ namespace InABox.Configuration
         }
         protected virtual Dictionary<string, T>? DeserializeConfiguration(string text)
         {
-            return Serialization.Deserialize<Dictionary<string, T>>(text);
+            var results = Serialization.Deserialize<Dictionary<string, T>>(text);
+            if(results != null)
+            {
+                foreach(var (k, v) in results)
+                {
+                    if(v is BaseObject obj)
+                    {
+                        obj.CommitChanges();
+                    }
+                }
+            }
+            return results;
         }
 
         private Dictionary<string, T> LoadCurrentConfig(string filename)

+ 14 - 1
InABox.Core/Configuration/UserConfiguration.cs

@@ -80,7 +80,13 @@ namespace InABox.Configuration
             var setting = GetSettings();
 
             if (!string.IsNullOrEmpty(setting.Contents))
+            {
                 result = Serialization.Deserialize<T>(setting.Contents);
+                if(result is BaseObject obj)
+                {
+                    obj.CommitChanges();
+                }
+            }
 
             ConfigurationCache.Add(ConfigurationCacheType.User, GetKey(), result);
 
@@ -102,7 +108,14 @@ namespace InABox.Configuration
                 new SortOrder<UserSettings>(x => x.Key)
             );
             foreach (var row in data.Rows)
-                result[row.Get<UserSettings, string>(c => c.Key)] = Serialization.Deserialize<T>(row.Get<UserSettings, string>(c => c.Contents));
+            {
+                var v = Serialization.Deserialize<T>(row.Get<UserSettings, string>(c => c.Contents));
+                if(v is BaseObject obj)
+                {
+                    obj.CommitChanges();
+                }
+                result[row.Get<UserSettings, string>(c => c.Key)] = v;
+            }
             return result;
         }