diff --git a/gui.lua b/gui.lua index f04f629..874afa6 100644 --- a/gui.lua +++ b/gui.lua @@ -122,8 +122,7 @@ function mail.show_inbox(name) formspec[#formspec + 1] = "," if message.subject ~= "" then if string.len(message.subject) > 30 then - formspec[#formspec + 1] = - minetest.formspec_escape(string.sub(message.subject, 1, 27)) + formspec[#formspec + 1] = minetest.formspec_escape(string.sub(message.subject, 1, 27)) formspec[#formspec + 1] = "..." else formspec[#formspec + 1] = minetest.formspec_escape(message.subject) @@ -145,38 +144,33 @@ end function mail.show_sent(name) local formspec = { mail.sent_formspec } - local messages = mail.getMessages() - local nbMails = 0 + local messages = mail.getPlayerSentMessages(name) + + message_drafts[name] = nil if messages[1] then 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] = minetest.formspec_escape(message.to) - formspec[#formspec + 1] = "," - if message.subject ~= "" then - if string.len(message.subject) > 30 then - formspec[#formspec + 1] = - minetest.formspec_escape(string.sub(message.subject, 1, 27)) - formspec[#formspec + 1] = "..." - else - formspec[#formspec + 1] = minetest.formspec_escape(message.subject) - end + formspec[#formspec + 1] = "," + formspec[#formspec + 1] = "," + formspec[#formspec + 1] = minetest.formspec_escape(message.to) + formspec[#formspec + 1] = "," + if message.subject ~= "" then + if string.len(message.subject) > 30 then + formspec[#formspec + 1] = minetest.formspec_escape(string.sub(message.subject, 1, 27)) + formspec[#formspec + 1] = "..." else - formspec[#formspec + 1] = "(No subject)" + formspec[#formspec + 1] = minetest.formspec_escape(message.subject) end + else + formspec[#formspec + 1] = "(No subject)" end - if selected_idxs.messages[name] then - formspec[#formspec + 1] = ";" - formspec[#formspec + 1] = tostring(selected_idxs.messages[name] + 1) - end - formspec[#formspec + 1] = "]" end - end - if nbMails == 0 then + if selected_idxs.messages[name] then + formspec[#formspec + 1] = ";" + formspec[#formspec + 1] = tostring(selected_idxs.messages[name] + 1) + end + formspec[#formspec + 1] = "]" + else formspec[#formspec + 1] = "]label[2.25,4.5;No mail]" end minetest.show_formspec(name, "mail:sent", table.concat(formspec, "")) diff --git a/storage.lua b/storage.lua index dc419cb..9fa0760 100644 --- a/storage.lua +++ b/storage.lua @@ -39,8 +39,9 @@ function mail.getPlayerMessages(playername) bcc = msg.bcc 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 + receiver = string.gsub(receiver, " ", "") -- avoid blank spaces (ex : " singleplayer" instead of "singleplayer") 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 table.insert(playerMessages, msg) @@ -55,6 +56,22 @@ function mail.getPlayerMessages(playername) return playerMessages 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) if mail.write_json_file(mail.getMailFile(playername), messages) then mail.hud_update(playername, messages)