diff --git a/init.lua b/init.lua index 354da71..283e7c6 100644 --- a/init.lua +++ b/init.lua @@ -24,6 +24,7 @@ mail = { boxtab = {}, sortfield = {}, sortdirection = {}, + filter = {}, multipleselection = {} }, diff --git a/ui/events.lua b/ui/events.lua index 75058d9..1262690 100644 --- a/ui/events.lua +++ b/ui/events.lua @@ -17,7 +17,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) -- Get player name and handle / convert common input fields local name = player:get_player_name() - local filter = fields.filter or "" + local filter = fields.filter or mail.selected_idxs.filter[name] or "" local sortfieldindex = tonumber(fields.sortfield or mail.selected_idxs.sortfield[name]) or 3 local sortdirection = fields.sortdirection or mail.selected_idxs.sortdirection[name] or "1" local inboxsortfield = ({"from","subject","time"})[sortfieldindex] @@ -26,6 +26,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) -- Store common player configuration for reuse mail.selected_idxs.sortfield[name] = sortfieldindex mail.selected_idxs.sortdirection[name] = sortdirection + mail.selected_idxs.filter[name] = filter if fields.multipleselection then mail.selected_idxs.multipleselection[name] = fields.multipleselection == "true" end diff --git a/ui/inbox.lua b/ui/inbox.lua index 566ad86..1e49422 100644 --- a/ui/inbox.lua +++ b/ui/inbox.lua @@ -5,7 +5,7 @@ local S = minetest.get_translator("mail") function mail.show_inbox(name, sortfieldindex, sortdirection, filter) sortfieldindex = tonumber(sortfieldindex or mail.selected_idxs.sortfield[name]) or 3 sortdirection = sortdirection or mail.selected_idxs.sortdirection[name] or "1" - filter = filter or "" + filter = mail.selected_idxs.filter[name] or filter or "" local inbox_formspec = "size[8.5,10;]" .. mail.theme .. [[ tabheader[0.3,1;boxtab;]] .. S("Inbox") .. "," .. S("Sent messages").. "," .. S("Drafts") .. [[;1;false;false] diff --git a/ui/message.lua b/ui/message.lua index 8e9bec4..2d96618 100644 --- a/ui/message.lua +++ b/ui/message.lua @@ -90,10 +90,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end local name = player:get_player_name() - local entry = mail.get_storage_entry(name) - - local messagesInbox = entry.inbox - local messagesSent = entry.outbox if fields.back then mail.show_mail_menu(name) @@ -101,36 +97,36 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) elseif fields.reply then local message = "" - if messagesInbox[mail.selected_idxs.inbox[name]] then - message = messagesInbox[mail.selected_idxs.inbox[name]] - elseif messagesSent[mail.selected_idxs.sent[name]] then - message = messagesSent[mail.selected_idxs.sent[name]] + if mail.selected_idxs.inbox[name] then + message = mail.get_message(name, mail.selected_idxs.inbox[name][#mail.selected_idxs.inbox[name]]) + elseif mail.selected_idxs.sent[name] then + message = mail.get_message(name, mail.selected_idxs.sent[name][#mail.selected_idxs.sent[name]]) end mail.reply(name, message) elseif fields.replyall then local message = "" - if messagesInbox[mail.selected_idxs.inbox[name]] then - message = messagesInbox[mail.selected_idxs.inbox[name]] - elseif messagesSent[mail.selected_idxs.sent[name]] then - message = messagesSent[mail.selected_idxs.sent[name]] + if mail.selected_idxs.inbox[name] then + message = mail.get_message(name, mail.selected_idxs.inbox[name][#mail.selected_idxs.inbox[name]]) + elseif mail.selected_idxs.sent[name] then + message = mail.get_message(name, mail.selected_idxs.sent[name][#mail.selected_idxs.sent[name]]) end mail.replyall(name, message) elseif fields.forward then local message = "" - if messagesInbox[mail.selected_idxs.inbox[name]] then - message = messagesInbox[mail.selected_idxs.inbox[name]] - elseif messagesSent[mail.selected_idxs.sent[name]] then - message = messagesSent[mail.selected_idxs.sent[name]] + if mail.selected_idxs.inbox[name] then + message = mail.get_message(name, mail.selected_idxs.inbox[name][#mail.selected_idxs.inbox[name]]) + elseif mail.selected_idxs.sent[name] then + message = mail.get_message(name, mail.selected_idxs.sent[name][#mail.selected_idxs.sent[name]]) end mail.forward(name, message) elseif fields.delete then - if messagesInbox[mail.selected_idxs.inbox[name]] then - mail.delete_mail(name, messagesInbox[mail.selected_idxs.inbox[name]].id) - elseif messagesSent[mail.selected_idxs.sent[name]] then - mail.delete_mail(name, messagesSent[mail.selected_idxs.sent[name]].id) + if mail.selected_idxs.inbox[name] then + mail.delete_mail(name, mail.selected_idxs.inbox[name][#mail.selected_idxs.inbox[name]]) + elseif mail.selected_idxs.sent[name] then + mail.delete_mail(name, mail.selected_idxs.sent[name][#mail.selected_idxs.sent[name]]) end mail.show_mail_menu(name) end diff --git a/ui/outbox.lua b/ui/outbox.lua index d4665cc..b33c1fc 100644 --- a/ui/outbox.lua +++ b/ui/outbox.lua @@ -5,7 +5,7 @@ local S = minetest.get_translator("mail") function mail.show_sent(name, sortfieldindex, sortdirection, filter) sortfieldindex = tonumber(sortfieldindex or mail.selected_idxs.sortfield[name]) or 3 sortdirection = sortdirection or mail.selected_idxs.sortdirection[name] or "1" - filter = filter or "" + filter = mail.selected_idxs.filter[name] or filter or "" local sent_formspec = "size[8.5,10;]" .. mail.theme .. [[ tabheader[0.3,1;boxtab;]] .. S("Inbox") .. "," .. S("Sent messages").. "," .. S("Drafts") .. [[;2;false;false]