33 lines
830 B
Lua
33 lines
830 B
Lua
|
|
||
|
-- TODO: maybe local cache?
|
||
|
|
||
|
function getMailFile(playername)
|
||
|
local saneplayername = string.gsub(playername, "[.|/]", "")
|
||
|
return mail.maildir .. "/" .. saneplayername .. ".json"
|
||
|
end
|
||
|
|
||
|
mail.getMessages = function(playername)
|
||
|
local file = io.open(getMailFile(playername), "r")
|
||
|
local messages = {}
|
||
|
if file then
|
||
|
local json = file:read("*a")
|
||
|
messages = minetest.parse_json(json or "[]") or {}
|
||
|
mail.hud_update(playername, messages)
|
||
|
file:close()
|
||
|
end
|
||
|
|
||
|
return messages
|
||
|
end
|
||
|
|
||
|
mail.setMessages = function(playername, messages)
|
||
|
local file = io.open(getMailFile(playername),"w")
|
||
|
local json = minetest.write_json(messages)
|
||
|
if file and file:write(json) and file:close() then
|
||
|
mail.hud_update(playername, messages)
|
||
|
return true
|
||
|
else
|
||
|
minetest.log("error","[mail] Save failed - messages may be lost!")
|
||
|
return false
|
||
|
end
|
||
|
end
|