Fix wrong messages issues

This commit is contained in:
Athozus 2023-04-11 19:33:06 +02:00
parent 4673e71260
commit 5d7271f07b
No known key found for this signature in database
GPG key ID: B50895022E8484BF
5 changed files with 21 additions and 23 deletions

View file

@ -24,6 +24,7 @@ mail = {
boxtab = {},
sortfield = {},
sortdirection = {},
filter = {},
multipleselection = {}
},

View file

@ -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

View file

@ -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]

View file

@ -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

View file

@ -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]