Better sort settings behaviour

This commit is contained in:
Athozus 2023-05-04 18:45:35 +02:00
parent 61f3eb6222
commit f54e4fc435
No known key found for this signature in database
GPG key ID: B50895022E8484BF

View file

@ -39,6 +39,20 @@ function mail.show_settings(name)
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, {
name = "defaultsortfield",
value = tonumber(defaultsortfield),
})
mail.set_setting(playername, {
name = "defaultsortdirection",
value = 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
@ -47,17 +61,7 @@ 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
local defaultsortfield = fields.defaultsortfield or mail.get_setting("defaultsortfield") update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
local defaultsortdirection = fields.defaultsortdirection or mail.get_setting("defaultsortdirection")
mail.set_setting(playername, {
name = "defaultsortfield",
value = tonumber(defaultsortfield),
})
mail.set_setting(playername, {
name = "defaultsortdirection",
value = tonumber(defaultsortdirection),
})
mail.show_mail_menu(playername) mail.show_mail_menu(playername)
return return
@ -65,9 +69,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
mail.reset_settings(playername) 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
@ -78,6 +84,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
value = fields.chat_notifications == "true", value = fields.chat_notifications == "true",
} }
mail.set_setting(playername, setting) mail.set_setting(playername, setting)
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.onjoin_notifications then elseif fields.onjoin_notifications then
local setting = { local setting = {
@ -85,6 +92,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
value = fields.onjoin_notifications == "true", value = fields.onjoin_notifications == "true",
} }
mail.set_setting(playername, setting) mail.set_setting(playername, setting)
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.hud_notifications then elseif fields.hud_notifications then
local setting = { local setting = {
@ -93,6 +101,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
} }
mail.set_setting(playername, setting) 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)
elseif fields.unreadcolorenable then elseif fields.unreadcolorenable then
local setting = { local setting = {
@ -100,6 +109,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
value = fields.unreadcolorenable == "true", value = fields.unreadcolorenable == "true",
} }
mail.set_setting(playername, setting) mail.set_setting(playername, setting)
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
elseif fields.cccolorenable then elseif fields.cccolorenable then
local setting = { local setting = {
@ -107,6 +117,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
value = fields.cccolorenable == "true", value = fields.cccolorenable == "true",
} }
mail.set_setting(playername, setting) mail.set_setting(playername, setting)
update_sort_settings(playername, fields.defaultsortfield, fields.defaultsortdirection)
end end
mail.show_settings(playername) mail.show_settings(playername)