From fd9b579c5f331da4f3081603a1ecdd67a7f0f250 Mon Sep 17 00:00:00 2001 From: Athozus Date: Wed, 1 Mar 2023 16:07:01 +0100 Subject: [PATCH] Add deleting contact --- gui.lua | 4 +--- storage.lua | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/gui.lua b/gui.lua index 9c66742..b4d6f49 100644 --- a/gui.lua +++ b/gui.lua @@ -739,7 +739,7 @@ function mail.handle_receivefields(player, formname, fields) selected_idxs.contacts[name] = k break elseif k == selected_idxs.contacts[name] then - contacts[selected_idxs.contacts[name]] = nil + mail.deleteContact(name, contacts[selected_idxs.contacts[name]].name) selected_idxs.contacts[name] = nil found = true else @@ -750,8 +750,6 @@ function mail.handle_receivefields(player, formname, fields) -- was the last in the list, so take the previous (new last) selected_idxs.contacts[name] = last end - - mail.setContacts(name, contacts) end mail.show_contacts(name) diff --git a/storage.lua b/storage.lua index 17a1b49..01ec6bb 100644 --- a/storage.lua +++ b/storage.lua @@ -226,6 +226,24 @@ function mail.setContact(playername, updated_contact) end end +function mail.deleteContact(owner, name) + local contacts = mail.getContacts() + local newContacts = {} + for _, contact in ipairs(contacts) do + if contact.owner == owner and contact.name == name then + table.remove(contacts, _) + else + table.insert(newContacts, contact) + end + end + if mail.write_json_file(mail.maildir .. "/mail.contacts.json", newContacts) then + return true + else + minetest.log("error","[mail] Save failed - messages may be lost!") + return false + end +end + function mail.read_json_file(path) local file = io.open(path, "r") local content = {}