diff --git a/storage.lua b/storage.lua index 0f7b138..d495b70 100644 --- a/storage.lua +++ b/storage.lua @@ -148,21 +148,17 @@ function mail.get_maillist_by_name(playername, listname) end -- updates or creates a maillist -function mail.update_maillist(playername, list) +function mail.update_maillist(playername, list, old_list_name) local entry = mail.get_storage_entry(playername) - local existing_updated = false for i, existing_list in ipairs(entry.lists) do - if existing_list.name == list.name then - -- update - entry.lists[i] = list - existing_updated = true + if existing_list.name == old_list_name then + -- delete + table.remove(entry.lists, i) break end end - if not existing_updated then - -- insert - table.insert(entry.lists, list) - end + -- insert + table.insert(entry.lists, list) mail.set_storage_entry(playername, entry) end diff --git a/ui/edit_maillists.lua b/ui/edit_maillists.lua index 416856d..847a860 100644 --- a/ui/edit_maillists.lua +++ b/ui/edit_maillists.lua @@ -1,9 +1,11 @@ -- translation local S = minetest.get_translator("mail") +local old_lists_names = {} local FORMNAME = "mail:editmaillist" function mail.show_edit_maillist(playername, maillist_name, desc, players, illegal_name_hint) + old_lists_names[playername] = maillist_name local formspec = [[ size[6,7] button[4,6.25;2,0.5;back;]] .. S("Back") .. [[] @@ -45,7 +47,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) name = fields.name, desc = fields.desc, players = mail.parse_player_list(fields.players) - }) + }, old_lists_names[name]) mail.show_maillists(name) elseif fields.back then