status refactoring

This commit is contained in:
BuckarooBanzay 2023-03-28 14:23:48 +02:00 committed by Athozus
parent 706b870b7d
commit b414ace620
No known key found for this signature in database
GPG key ID: B50895022E8484BF
9 changed files with 91 additions and 176 deletions

View file

@ -28,7 +28,7 @@ function mail.show_inbox(name)
if messages[1] then
for _, message in ipairs(messages) do
if mail.getMessageStatus(name, message.id) == "unread" then
if not message.read then
if not mail.player_in_list(name, message.to) then
formspec[#formspec + 1] = ",#FFD788"
else
@ -114,9 +114,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
elseif fields.delete then
if formname == "mail:inbox" and messagesInbox[mail.selected_idxs.inbox[name]] then -- inbox table
mail.setStatus(name, messagesInbox[mail.selected_idxs.inbox[name]].id, "deleted")
mail.delete_mail(name, messagesInbox[mail.selected_idxs.inbox[name]].id)
elseif formname == "mail:sent" and messagesSent[mail.selected_idxs.sent[name]] then -- sent table
mail.setStatus(name, messagesSent[mail.selected_idxs.sent[name]].id, "deleted")
mail.delete_mail(name, messagesSent[mail.selected_idxs.sent[name]].id)
end
mail.show_mail_menu(name)
@ -150,18 +150,18 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
elseif fields.markread then
if formname == "mail:inbox" and messagesInbox[mail.selected_idxs.inbox[name]] then
mail.setStatus(name, messagesInbox[mail.selected_idxs.inbox[name]].id, "read")
mail.mark_read(name, messagesInbox[mail.selected_idxs.inbox[name]].id)
elseif formname == "mail:sent" and messagesSent[mail.selected_idxs.sent[name]] then
mail.setStatus(name, messagesSent[mail.selected_idxs.sent[name]].id, "read")
mail.mark_read(name, messagesSent[mail.selected_idxs.sent[name]].id)
end
mail.show_mail_menu(name)
elseif fields.markunread then
if formname == "mail:inbox" and messagesInbox[mail.selected_idxs.inbox[name]] then
mail.setStatus(name, messagesInbox[mail.selected_idxs.inbox[name]].id, "unread")
mail.mark_unread(name, messagesInbox[mail.selected_idxs.inbox[name]].id)
elseif formname == "mail:sent" and messagesSent[mail.selected_idxs.sent[name]] then
mail.setStatus(name, messagesSent[mail.selected_idxs.sent[name]].id, "unread")
mail.mark_unread(name, messagesSent[mail.selected_idxs.sent[name]].id)
end
mail.show_mail_menu(name)

View file

@ -1,7 +1,8 @@
local FORMNAME = "mail:message"
function mail.show_message(name, msgnumber)
local message = mail.getMessage(msgnumber)
function mail.show_message(name, id)
local message = mail.get_message(name, id)
local formspec = [[
size[8,9]
@ -32,10 +33,9 @@ function mail.show_message(name, msgnumber)
local body = minetest.formspec_escape(message.body) or ""
formspec = string.format(formspec, from, to, cc, date, subject, body)
local message_status = mail.getMessageStatus(name, message.id)
if message_status == "unread" then
mail.setStatus(name, message.id, "read")
if not message.read then
-- mark as read
mail.mark_read(name, id)
end
minetest.show_formspec(name, FORMNAME, formspec)
@ -125,9 +125,9 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
elseif fields.delete then
if messagesInbox[mail.selected_idxs.inbox[name]] then
mail.setStatus(name, messagesInbox[mail.selected_idxs.inbox[name]].id, "deleted")
mail.delete_mail(name, messagesInbox[mail.selected_idxs.inbox[name]].id)
elseif messagesSent[mail.selected_idxs.sent[name]] then
mail.setStatus(name, messagesSent[mail.selected_idxs.sent[name]].id, "deleted")
mail.delete_mail(name, messagesSent[mail.selected_idxs.sent[name]].id)
end
mail.show_mail_menu(name)
end

View file

@ -19,7 +19,8 @@ local sent_formspec = "size[8,10;]" .. mail.theme .. [[
function mail.show_sent(name)
local formspec = { sent_formspec }
local messages = mail.getPlayerSentMessages(name)
local entry = mail.get_storage_entry(name)
local messages = entry.outbox
mail.message_drafts[name] = nil