mirror of
https://github.com/mt-mods/mail.git
synced 2025-04-30 08:21:44 -04:00
Rework set_setting()
This commit is contained in:
parent
f54e4fc435
commit
a34921ed5d
2 changed files with 15 additions and 45 deletions
17
storage.lua
17
storage.lua
|
@ -274,21 +274,18 @@ function mail.get_setting(playername, setting_name)
|
|||
end
|
||||
|
||||
-- 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 existing_updated = false
|
||||
for i, existing_setting in ipairs(entry.settings) do
|
||||
if existing_setting.name == setting.name then
|
||||
for _, existing_setting in ipairs(entry.settings) do
|
||||
if existing_setting.name == key then
|
||||
-- update
|
||||
entry.settings[i] = setting
|
||||
existing_updated = true
|
||||
break
|
||||
existing_setting.value = value
|
||||
mail.set_storage_entry(playername, entry)
|
||||
return
|
||||
end
|
||||
end
|
||||
if not existing_updated then
|
||||
-- insert
|
||||
table.insert(entry.settings, setting)
|
||||
end
|
||||
table.insert(entry.settings, { name = key, value = value })
|
||||
mail.set_storage_entry(playername, entry)
|
||||
end
|
||||
|
||||
|
|
|
@ -42,15 +42,8 @@ end
|
|||
local function update_sort_settings(playername, default_field, default_direction)
|
||||
local defaultsortfield = default_field or mail.get_setting("defaultsortfield")
|
||||
local defaultsortdirection = default_direction or mail.get_setting("defaultsortdirection")
|
||||
mail.set_setting(playername, {
|
||||
name = "defaultsortfield",
|
||||
value = tonumber(defaultsortfield),
|
||||
})
|
||||
|
||||
mail.set_setting(playername, {
|
||||
name = "defaultsortdirection",
|
||||
value = tonumber(defaultsortdirection),
|
||||
})
|
||||
mail.set_setting(playername, "defaultsortfield", tonumber(defaultsortfield))
|
||||
mail.set_setting(playername, "defaultsortdirection", tonumber(defaultsortdirection))
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
elseif fields.chat_notifications then
|
||||
local setting = {
|
||||
name = "chat_notifications",
|
||||
value = fields.chat_notifications == "true",
|
||||
}
|
||||
mail.set_setting(playername, setting)
|
||||
mail.set_setting(playername, "chat_notifications", fields.chat_notifications == "true")
|
||||
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
|
||||
|
||||
elseif fields.onjoin_notifications then
|
||||
local setting = {
|
||||
name = "onjoin_notifications",
|
||||
value = fields.onjoin_notifications == "true",
|
||||
}
|
||||
mail.set_setting(playername, setting)
|
||||
mail.set_setting(playername, "onjoin_notifications", fields.onjoin_notifications == "true")
|
||||
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
|
||||
|
||||
elseif fields.hud_notifications then
|
||||
local setting = {
|
||||
name = "hud_notifications",
|
||||
value = fields.hud_notifications == "true",
|
||||
}
|
||||
mail.set_setting(playername, setting)
|
||||
mail.set_setting(playername, "hud_notifications", fields.hud_notifications == "true")
|
||||
mail.hud_update(playername, mail.get_storage_entry(playername).inbox)
|
||||
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
|
||||
|
||||
elseif fields.unreadcolorenable then
|
||||
local setting = {
|
||||
name = "unreadcolorenable",
|
||||
value = fields.unreadcolorenable == "true",
|
||||
}
|
||||
mail.set_setting(playername, setting)
|
||||
mail.set_setting(playername, "unreadcolorenable", fields.unreadcolorenable == "true")
|
||||
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
|
||||
|
||||
elseif fields.cccolorenable then
|
||||
local setting = {
|
||||
name = "cccolorenable",
|
||||
value = fields.cccolorenable == "true",
|
||||
}
|
||||
mail.set_setting(playername, setting)
|
||||
mail.set_setting(playername, "cccolorenable", fields.cccolorenable == "true")
|
||||
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue