From 3bb44ccbc0888047854f2e4be4b8d3c86e400b91 Mon Sep 17 00:00:00 2001
From: Linventif <linventif@gmail.com>
Date: Wed, 13 Mar 2024 20:30:23 +0100
Subject: [PATCH] fix: send public config on modif

---
 lua/gmod_integration/client/cl_net.lua      | 2 +-
 lua/gmod_integration/server/sv_settings.lua | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/lua/gmod_integration/client/cl_net.lua b/lua/gmod_integration/client/cl_net.lua
index 261594b..ddf4fe1 100644
--- a/lua/gmod_integration/client/cl_net.lua
+++ b/lua/gmod_integration/client/cl_net.lua
@@ -35,7 +35,7 @@ local netReceive = {
         gmInte.showTestConnection(data)
     end,
     [5] = function(data)
-        gmInte.config = data
+        gmInte.config = table.Merge(gmInte.config, data)
     end,
     [6] = function(data)
         gmInte.chatAddText(data)
diff --git a/lua/gmod_integration/server/sv_settings.lua b/lua/gmod_integration/server/sv_settings.lua
index 1d4b09d..baa0850 100644
--- a/lua/gmod_integration/server/sv_settings.lua
+++ b/lua/gmod_integration/server/sv_settings.lua
@@ -14,6 +14,14 @@ function gmInte.saveSetting(setting, value)
     gmInte.config[setting] = value
     file.Write("gm_integration/config.json", util.TableToJSON(gmInte.config, true))
     gmInte.log("Setting Saved")
+
+    // send to all players if it's a public setting
+    for _, ply in pairs(player.GetAll()) do
+        if (ply:IsValid() && ply:IsPlayer(ply)) then
+            gmInte.log("Sending new Public Config to " .. ply:Nick())
+            gmInte.publicGetConfig(ply)
+        end
+    end
 end
 
 function gmInte.tryConfig()