From 128b20906755719d49e105c467b4993f55949e8b Mon Sep 17 00:00:00 2001 From: Athozus Date: Wed, 1 Mar 2023 11:50:58 +0100 Subject: [PATCH] Receive player messages from global storage --- api.lua | 16 +++++++++++++++- storage.lua | 18 +++++++++--------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/api.lua b/api.lua index 5a7a634..dedb9e2 100644 --- a/api.lua +++ b/api.lua @@ -85,7 +85,6 @@ function mail.send(...) -- form the actual mail local msg = { - unread = true, sender = m.from, to = m.to, cc = m.cc, @@ -112,3 +111,18 @@ function mail.send(...) end end end + +function mail.split(str, delimiter) -- flux split function + local rv = {} + local i, j = str:find(delimiter, nil, true) + + while i do + table.insert(rv, str:sub(1, i - 1)) + str = str:sub(j + 1) + i, j = str:find(delimiter, nil, true) + end + + table.insert(rv, str) + + return rv +end diff --git a/storage.lua b/storage.lua index 19f68f5..477d68c 100644 --- a/storage.lua +++ b/storage.lua @@ -26,22 +26,22 @@ function mail.getMessages() end function mail.getPlayerMessages(playername) - local messages = mail.read_json_file(mail.getMailFile(playername)) + local messages = mail.getMessages() + local playerMessages = {} if messages then for _, msg in ipairs(messages) do - if not msg.time then - -- add missing time field if not available (happens with old data) - msg.time = 0 + local receivers = mail.split((msg.to .. ", " .. (msg.cc or "") .. ", " .. (msg.bcc or "")),",") + for _, receiver in ipairs(receivers) do + if receiver == playername then + table.insert(playerMessages, msg) + end end end - - -- sort by received date descending - table.sort(messages, function(a,b) return a.time > b.time end) -- show hud notification - mail.hud_update(playername, messages) + mail.hud_update(playername, playerMessages) end - return messages + return playerMessages end function mail.setMessages(playername, messages)