mirror of
https://github.com/mt-mods/mail.git
synced 2025-04-30 16:31:43 -04:00
Rework set_setting()
This commit is contained in:
parent
f54e4fc435
commit
a34921ed5d
2 changed files with 15 additions and 45 deletions
19
storage.lua
19
storage.lua
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue