Fix duplicating of maillist while changing its name

This commit is contained in:
Athozus 2023-04-02 10:27:36 +02:00
parent 8f59abdd11
commit 7fb292556c
No known key found for this signature in database
GPG key ID: B50895022E8484BF
2 changed files with 9 additions and 11 deletions

View file

@ -148,21 +148,17 @@ function mail.get_maillist_by_name(playername, listname)
end end
-- updates or creates a maillist -- 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 entry = mail.get_storage_entry(playername)
local existing_updated = false
for i, existing_list in ipairs(entry.lists) do for i, existing_list in ipairs(entry.lists) do
if existing_list.name == list.name then if existing_list.name == old_list_name then
-- update -- delete
entry.lists[i] = list table.remove(entry.lists, i)
existing_updated = true
break break
end end
end end
if not existing_updated then
-- insert -- insert
table.insert(entry.lists, list) table.insert(entry.lists, list)
end
mail.set_storage_entry(playername, entry) mail.set_storage_entry(playername, entry)
end end

View file

@ -1,9 +1,11 @@
-- translation -- translation
local S = minetest.get_translator("mail") local S = minetest.get_translator("mail")
local old_lists_names = {}
local FORMNAME = "mail:editmaillist" local FORMNAME = "mail:editmaillist"
function mail.show_edit_maillist(playername, maillist_name, desc, players, illegal_name_hint) function mail.show_edit_maillist(playername, maillist_name, desc, players, illegal_name_hint)
old_lists_names[playername] = maillist_name
local formspec = [[ local formspec = [[
size[6,7] size[6,7]
button[4,6.25;2,0.5;back;]] .. S("Back") .. [[] 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, name = fields.name,
desc = fields.desc, desc = fields.desc,
players = mail.parse_player_list(fields.players) players = mail.parse_player_list(fields.players)
}) }, old_lists_names[name])
mail.show_maillists(name) mail.show_maillists(name)
elseif fields.back then elseif fields.back then