Show every message received/sent via specific functions

This commit is contained in:
Athozus 2023-03-01 14:39:25 +01:00
parent 3dd820a16b
commit b5285fbff1
No known key found for this signature in database
GPG key ID: B50895022E8484BF
2 changed files with 39 additions and 28 deletions

18
gui.lua
View file

@ -122,8 +122,7 @@ function mail.show_inbox(name)
formspec[#formspec + 1] = "," formspec[#formspec + 1] = ","
if message.subject ~= "" then if message.subject ~= "" then
if string.len(message.subject) > 30 then if string.len(message.subject) > 30 then
formspec[#formspec + 1] = formspec[#formspec + 1] = minetest.formspec_escape(string.sub(message.subject, 1, 27))
minetest.formspec_escape(string.sub(message.subject, 1, 27))
formspec[#formspec + 1] = "..." formspec[#formspec + 1] = "..."
else else
formspec[#formspec + 1] = minetest.formspec_escape(message.subject) formspec[#formspec + 1] = minetest.formspec_escape(message.subject)
@ -145,22 +144,19 @@ end
function mail.show_sent(name) function mail.show_sent(name)
local formspec = { mail.sent_formspec } local formspec = { mail.sent_formspec }
local messages = mail.getMessages() local messages = mail.getPlayerSentMessages(name)
local nbMails = 0
message_drafts[name] = nil
if messages[1] then if messages[1] then
for _, message in ipairs(messages) do for _, message in ipairs(messages) do
mail.ensure_new_format(message, name)
if message.sender == name then
nbMails = nbMails + 1
formspec[#formspec + 1] = "," formspec[#formspec + 1] = ","
formspec[#formspec + 1] = "," formspec[#formspec + 1] = ","
formspec[#formspec + 1] = minetest.formspec_escape(message.to) formspec[#formspec + 1] = minetest.formspec_escape(message.to)
formspec[#formspec + 1] = "," formspec[#formspec + 1] = ","
if message.subject ~= "" then if message.subject ~= "" then
if string.len(message.subject) > 30 then if string.len(message.subject) > 30 then
formspec[#formspec + 1] = formspec[#formspec + 1] = minetest.formspec_escape(string.sub(message.subject, 1, 27))
minetest.formspec_escape(string.sub(message.subject, 1, 27))
formspec[#formspec + 1] = "..." formspec[#formspec + 1] = "..."
else else
formspec[#formspec + 1] = minetest.formspec_escape(message.subject) formspec[#formspec + 1] = minetest.formspec_escape(message.subject)
@ -174,9 +170,7 @@ function mail.show_sent(name)
formspec[#formspec + 1] = tostring(selected_idxs.messages[name] + 1) formspec[#formspec + 1] = tostring(selected_idxs.messages[name] + 1)
end end
formspec[#formspec + 1] = "]" formspec[#formspec + 1] = "]"
end else
end
if nbMails == 0 then
formspec[#formspec + 1] = "]label[2.25,4.5;No mail]" formspec[#formspec + 1] = "]label[2.25,4.5;No mail]"
end end
minetest.show_formspec(name, "mail:sent", table.concat(formspec, "")) minetest.show_formspec(name, "mail:sent", table.concat(formspec, ""))

View file

@ -39,8 +39,9 @@ function mail.getPlayerMessages(playername)
bcc = msg.bcc bcc = msg.bcc
end end
local receivers = mail.split((msg.to .. ", " .. cc .. ", " .. bcc),",") local receivers = mail.split((msg.to .. "," .. cc .. "," .. bcc),",") -- split players into table
for _, receiver in ipairs(receivers) do for _, receiver in ipairs(receivers) do
receiver = string.gsub(receiver, " ", "") -- avoid blank spaces (ex : " singleplayer" instead of "singleplayer")
if receiver == playername then -- check if player is a receiver if receiver == playername then -- check if player is a receiver
if mail.getMessageStatus(receiver, msg.id) ~= "deleted" then -- do not return if the message was deleted from player if mail.getMessageStatus(receiver, msg.id) ~= "deleted" then -- do not return if the message was deleted from player
table.insert(playerMessages, msg) table.insert(playerMessages, msg)
@ -55,6 +56,22 @@ function mail.getPlayerMessages(playername)
return playerMessages return playerMessages
end end
function mail.getPlayerSentMessages(playername)
local messages = mail.getMessages()
local playerSentMessages = {}
if messages[1] then
for _, msg in ipairs(messages) do
if msg.sender == playername then -- check if player is the sender
if mail.getMessageStatus(playername, msg.id) ~= "deleted" then -- do not return if the message was deleted from player
table.insert(playerSentMessages, msg)
end
end
end
end
return playerSentMessages
end
function mail.setMessages(playername, messages) function mail.setMessages(playername, messages)
if mail.write_json_file(mail.getMailFile(playername), messages) then if mail.write_json_file(mail.getMailFile(playername), messages) then
mail.hud_update(playername, messages) mail.hud_update(playername, messages)