diff --git a/sharedconfig.lua b/sharedconfig.lua index b791875..4bc3f88 100644 --- a/sharedconfig.lua +++ b/sharedconfig.lua @@ -10,12 +10,13 @@ local defaults_table --none is stored ---@param key string Key ---@param value any Value -local function add_default_value(key, value) +---@param callback? function Callback on value change +local function add_default_value(key, value, callback) defaults_table=defaults_table or {} defaults_table[key]=value local stored_value=config:load(key) - sharedstate.init(key, value) + sharedstate.init(key, value, callback) if stored_value ~= nil then sharedstate.queue(key, stored_value) @@ -24,11 +25,14 @@ end --- Initialize sharedconfig -- Initialize shared config with default configuration ----@param defaults table -function sharedconfig.load_defaults(defaults) +---@param defaults table Table containing default values +---@param callbacks? table Table containing callbacks to run on value change +function sharedconfig.load_defaults(defaults, callbacks) logging.trace("sharedconfig.load_defaults", defaults) for k, v in pairs(defaults) do - add_default_value(k, v) + local callback=nil + if callbacks ~= nil and callbacks[k] ~= nil then callback=callbacks[k] end + add_default_value(k, v, callback) end sharedstate.commit() end