Rework set_setting()

This commit is contained in:
Athozus 2023-05-04 19:02:03 +02:00
parent f54e4fc435
commit a34921ed5d
No known key found for this signature in database
GPG key ID: B50895022E8484BF
2 changed files with 15 additions and 45 deletions

View file

@ -274,21 +274,18 @@ function mail.get_setting(playername, setting_name)
end end
-- add or update a setting -- add or update a setting
function mail.set_setting(playername, setting) function mail.set_setting(playername, key, value)
local entry = mail.get_storage_entry(playername) local entry = mail.get_storage_entry(playername)
local existing_updated = false for _, existing_setting in ipairs(entry.settings) do
for i, existing_setting in ipairs(entry.settings) do if existing_setting.name == key then
if existing_setting.name == setting.name then
-- update -- update
entry.settings[i] = setting existing_setting.value = value
existing_updated = true mail.set_storage_entry(playername, entry)
break return
end end
end end
if not existing_updated then -- insert
-- insert table.insert(entry.settings, { name = key, value = value })
table.insert(entry.settings, setting)
end
mail.set_storage_entry(playername, entry) mail.set_storage_entry(playername, entry)
end end

View file

@ -42,15 +42,8 @@ end
local function update_sort_settings(playername, default_field, default_direction) local function update_sort_settings(playername, default_field, default_direction)
local defaultsortfield = default_field or mail.get_setting("defaultsortfield") local defaultsortfield = default_field or mail.get_setting("defaultsortfield")
local defaultsortdirection = default_direction or mail.get_setting("defaultsortdirection") local defaultsortdirection = default_direction or mail.get_setting("defaultsortdirection")
mail.set_setting(playername, { mail.set_setting(playername, "defaultsortfield", tonumber(defaultsortfield))
name = "defaultsortfield", mail.set_setting(playername, "defaultsortdirection", tonumber(defaultsortdirection))
value = tonumber(defaultsortfield),
})
mail.set_setting(playername, {
name = "defaultsortdirection",
value = tonumber(defaultsortdirection),
})
end end
minetest.register_on_player_receive_fields(function(player, formname, fields) minetest.register_on_player_receive_fields(function(player, formname, fields)
@ -79,44 +72,24 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
return return
elseif fields.chat_notifications then elseif fields.chat_notifications then
local setting = { mail.set_setting(playername, "chat_notifications", fields.chat_notifications == "true")
name = "chat_notifications",
value = fields.chat_notifications == "true",
}
mail.set_setting(playername, setting)
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection) update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.onjoin_notifications then elseif fields.onjoin_notifications then
local setting = { mail.set_setting(playername, "onjoin_notifications", fields.onjoin_notifications == "true")
name = "onjoin_notifications",
value = fields.onjoin_notifications == "true",
}
mail.set_setting(playername, setting)
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection) update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.hud_notifications then elseif fields.hud_notifications then
local setting = { mail.set_setting(playername, "hud_notifications", fields.hud_notifications == "true")
name = "hud_notifications",
value = fields.hud_notifications == "true",
}
mail.set_setting(playername, setting)
mail.hud_update(playername, mail.get_storage_entry(playername).inbox) mail.hud_update(playername, mail.get_storage_entry(playername).inbox)
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection) update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.unreadcolorenable then elseif fields.unreadcolorenable then
local setting = { mail.set_setting(playername, "unreadcolorenable", fields.unreadcolorenable == "true")
name = "unreadcolorenable",
value = fields.unreadcolorenable == "true",
}
mail.set_setting(playername, setting)
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection) update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.cccolorenable then elseif fields.cccolorenable then
local setting = { mail.set_setting(playername, "cccolorenable", fields.cccolorenable == "true")
name = "cccolorenable",
value = fields.cccolorenable == "true",
}
mail.set_setting(playername, setting)
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection) update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
end end