Add insertion of messages into global storage mail.messages.json

This commit is contained in:
Athozus 2023-03-01 11:36:13 +01:00
parent 17b5f94fed
commit 0d69f0242b
No known key found for this signature in database
GPG key ID: B50895022E8484BF
4 changed files with 36 additions and 15 deletions

View file

@ -1,4 +1,3 @@
function mail.getMailFile(playername)
local saneplayername = string.gsub(playername, "[.|/]", "")
return mail.maildir .. "/" .. saneplayername .. ".json"
@ -9,8 +8,24 @@ function mail.getContactsFile(playername)
return mail.maildir .. "/contacts/" .. saneplayername .. ".json"
end
function mail.getMessages()
local messages = mail.read_json_file(mail.maildir .. "/mail.messages.json")
if messages then
for _, msg in ipairs(messages) do
if not msg.time then
-- add missing time field if not available (happens with old data)
msg.time = 0
end
end
function mail.getMessages(playername)
-- sort by received date descending
table.sort(messages, function(a,b) return a.time > b.time end)
end
return messages
end
function mail.getPlayerMessages(playername)
local messages = mail.read_json_file(mail.getMailFile(playername))
if messages then
for _, msg in ipairs(messages) do
@ -39,6 +54,16 @@ function mail.setMessages(playername, messages)
end
end
function mail.addMessage(message)
local messages = mail.getMessages()
table.insert(messages, 1, message)
if mail.write_json_file(mail.maildir .. "/mail.messages.json", messages) then
return true
else
minetest.log("error","[mail] Save failed - messages may be lost!")
return false
end
end
function mail.getContacts(playername)
return mail.read_json_file(mail.getContactsFile(playername))