From a34921ed5de4fbb52a20517b0ba4531e501f1feb Mon Sep 17 00:00:00 2001 From: Athozus Date: Thu, 4 May 2023 19:02:03 +0200 Subject: [PATCH] Rework set_setting() --- storage.lua | 19 ++++++++----------- ui/settings.lua | 41 +++++++---------------------------------- 2 files changed, 15 insertions(+), 45 deletions(-) diff --git a/storage.lua b/storage.lua index 93efbe0..f0953f0 100644 --- a/storage.lua +++ b/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 + -- insert + table.insert(entry.settings, { name = key, value = value }) mail.set_storage_entry(playername, entry) end diff --git a/ui/settings.lua b/ui/settings.lua index 06c6b4b..5549ce6 100644 --- a/ui/settings.lua +++ b/ui/settings.lua @@ -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