Fix reseting/saving settings

This commit is contained in:
Athozus 2023-05-05 11:36:39 +02:00
parent aa6c58de6f
commit 3a56c52ed2
No known key found for this signature in database
GPG key ID: B50895022E8484BF
2 changed files with 33 additions and 28 deletions

View file

@ -26,7 +26,12 @@ mail = {
sortdirection = {}, sortdirection = {},
filter = {}, filter = {},
multipleselection = {}, multipleselection = {},
optionstab = {} optionstab = {},
chat_notifications = {},
onjoin_notifications = {},
hud_notifications = {},
unreadcolorenable = {},
cccolorenable = {}
}, },
message_drafts = {} message_drafts = {}

View file

@ -33,19 +33,13 @@ function mail.show_settings(name)
S("Ascending") .. "," .. S("Descending") .. [[;]] .. S("Ascending") .. "," .. S("Descending") .. [[;]] ..
tostring(mail.get_setting(name, "defaultsortdirection")) .. [[;true] tostring(mail.get_setting(name, "defaultsortdirection")) .. [[;true]
button[0,5.5;2.5,0.5;reset;]] .. S("Reset") .. [[] button[0,5.5;2.5,0.5;save;]] .. S("Save") .. [[]
button[2.7,5.5;2.5,0.5;reset;]] .. S("Reset") .. [[]
]] .. mail.theme ]] .. mail.theme
minetest.show_formspec(name, FORMNAME, formspec) minetest.show_formspec(name, FORMNAME, formspec)
end 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, "defaultsortfield", tonumber(defaultsortfield))
mail.set_setting(playername, "defaultsortdirection", tonumber(defaultsortdirection))
end
minetest.register_on_player_receive_fields(function(player, formname, fields) minetest.register_on_player_receive_fields(function(player, formname, fields)
if formname ~= FORMNAME then if formname ~= FORMNAME then
return return
@ -54,45 +48,51 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
local playername = player:get_player_name() local playername = player:get_player_name()
if fields.back then if fields.back then
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
mail.show_mail_menu(playername) mail.show_mail_menu(playername)
return return
elseif fields.reset then
mail.reset_settings(playername)
elseif fields.optionstab == "1" then elseif fields.optionstab == "1" then
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
mail.selected_idxs.optionstab[playername] = 1 mail.selected_idxs.optionstab[playername] = 1
elseif fields.optionstab == "2" then elseif fields.optionstab == "2" then
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
mail.selected_idxs.optionstab[playername] = 2 mail.selected_idxs.optionstab[playername] = 2
mail.show_about(playername) mail.show_about(playername)
return return
elseif fields.chat_notifications then elseif fields.chat_notifications then
mail.set_setting(playername, "chat_notifications", fields.chat_notifications == "true") mail.selected_idxs.chat_notifications[playername] = fields.chat_notifications == "true"
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.onjoin_notifications then elseif fields.onjoin_notifications then
mail.set_setting(playername, "onjoin_notifications", fields.onjoin_notifications == "true") mail.selected_idxs.onjoin_notifications[playername] = fields.onjoin_notifications == "true"
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.hud_notifications then elseif fields.hud_notifications then
mail.set_setting(playername, "hud_notifications", fields.hud_notifications == "true") mail.selected_idxs.hud_notifications[playername] = 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 elseif fields.unreadcolorenable then
mail.set_setting(playername, "unreadcolorenable", fields.unreadcolorenable == "true") mail.selected_idxs.unreadcolorenable[playername] = fields.unreadcolorenable == "true"
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.cccolorenable then elseif fields.cccolorenable then
mail.set_setting(playername, "cccolorenable", fields.cccolorenable == "true") mail.selected_idxs.cccolorenable[playername] = fields.cccolorenable == "true"
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
end
elseif fields.save then
-- checkboxes
mail.set_setting(playername, "chat_notifications", mail.selected_idxs.chat_notifications[playername])
mail.set_setting(playername, "onjoin_notifications", mail.selected_idxs.onjoin_notifications[playername])
mail.set_setting(playername, "hud_notifications", mail.selected_idxs.hud_notifications[playername])
mail.set_setting(playername, "unreadcolorenable", mail.selected_idxs.unreadcolorenable[playername])
mail.set_setting(playername, "cccolorenable", mail.selected_idxs.cccolorenable[playername])
-- dropdowns
local defaultsortfield = fields.defaultsortfield or mail.get_setting("defaultsortfield")
local defaultsortdirection = fields.defaultsortdirection or mail.get_setting("defaultsortdirection")
mail.set_setting(playername, "defaultsortfield", tonumber(defaultsortfield))
mail.set_setting(playername, "defaultsortdirection", tonumber(defaultsortdirection))
-- update visuals
mail.hud_update(playername, mail.get_storage_entry(playername).inbox)
mail.show_settings(playername) mail.show_settings(playername)
elseif fields.reset then
mail.reset_settings(playername)
mail.show_settings(playername)
end
return return
end) end)