diff --git a/storage.lua b/storage.lua index 54deb29..4f64882 100644 --- a/storage.lua +++ b/storage.lua @@ -263,9 +263,9 @@ end function mail.get_setting(playername, setting_name) local entry = mail.get_storage_entry(playername) local setting = nil - for i, existing_setting in ipairs(entry.settings) do + for _, existing_setting in ipairs(entry.settings) do if existing_setting.name == setting_name then - setting = entry.settings[i].value + setting = existing_setting.value break end end diff --git a/ui/settings.lua b/ui/settings.lua index 13bff88..acaa41f 100644 --- a/ui/settings.lua +++ b/ui/settings.lua @@ -28,10 +28,10 @@ function mail.show_settings(name) label[5,2.6;]] .. S("Default sorting fields") .. [[] dropdown[5.5,3.0;2,0.5;defaultsortfield;]] .. S("From/To") .. "," .. S("Subject") .. "," .. S("Date") .. [[;]] .. - mail.get_setting(name, "defaultsortfield") .. [[;true] + tostring(mail.get_setting(name, "defaultsortfield")) .. [[;true] dropdown[7.5,3.0;2,0.5;defaultsortdirection;]] .. S("Ascending") .. "," .. S("Descending") .. [[;]] .. - mail.get_setting(name, "defaultsortdirection") .. [[;true] + tostring(mail.get_setting(name, "defaultsortdirection")) .. [[;true] button[0,5.5;2.5,0.5;reset;]] .. S("Reset") .. [[] ]] .. mail.theme @@ -46,10 +46,18 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local playername = player:get_player_name() - mail.set_setting(playername, { name = "defaultsortfield", value = tonumber(fields.defaultsortfield) } ) - mail.set_setting(playername, { name = "defaultsortdirection", value = tonumber(fields.defaultsortdirection) } ) - if fields.back then + local defaultsortfield = fields.defaultsortfield or mail.get_setting("defaultsortfield") + 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) return