* Implement non-player recipients
* Add API callback specifically for players receiving mail
* Exclude sender from (mailing list) recipients
* Complement test
* Fixup typos in complemented test
* Expand aliases at toplevel if the current expansion is at toplevel
This should allow players to send mail to their own aliases
* Also test on_(player_)receive callbacks
* Fix oversight in test case
* Add colors utilities
Local function get_base_color(), conversions hex <=> rgb, rgb color mixer, and global function get_color()
* Round numbers to avoid eventual float in string.format
* Simplify inbox/outbox mixing of color
Use a single if statement for each property and concatenate to displayed_color then execute mail.get_color(displayed_color) instead of making many combined if statements
* Convert 3-chars hex colors to 6-chars hex colors
Could break the code, the hex convert to rgb always run on 6-chars
* Rework color utility using tables
Instead of one-letter symbols, it now supports tables of identifiers or single strings
* Add tabheader & sent formspec
* Add show_sent function and show sent messages
* Remove comment on selected_idxs test (show_sent)
* Add variable to keep the previous tab instead of going back to the first one
* Remove index variable verification on mark read/unread buttons since they are necessarily clicked on inbox view
* Resize messages table to be aligned with close button at the bottom
* Show date time (#27)
* Show date in message reading
* Fix wrong registered dates
Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>
* Rework header layout to add better space for date
---------
Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>
* Add insertion of messages into global storage mail.messages.json
* Receive player messages from global storage
* Add automatic generation of status for a new message (unread)
* Mark read/unread/delete a message
* Fix messages loading
* Show every message received/sent via specific functions
* Use global contacts functions and reconfigure add/remove functions
* Create mail lists formspec based on contacts
* Add deleting contact
* Add ability to create mail lists
* Fix inability to edit contact
* Rework on editing/deletion of contacts/maillists
* Add at symbol as prefix on maillists view
* Add ability to choose default status (to/cc/bcc)
Signed-off-by: Athozus <athozus@gmail.com>
* Add ability to add multiples players and choose their default status (to/cc/bcc)
* Add ability to use maillist in messages and receive messages from them
* Fix repetition of code causing a crash
* Avoid multiples occurences of the same messages due to player both in maillist and receivers
* Fix selected indexes for inbox/sent
Now separated, fixed show_message() func selection of id from table dcl/read btn
* Fix many issues related to maillists
Notably : edit, delete, selection, creation, registration of players
* Set up database version v3 and its migration from v2
+ Check versions to choose v1->v2 or v2->v3
* Fix mtt.lua
Due to old function getMessages(), replaced by getPlayerInboxMessages()
* Add 10 seconds security to mtt.lua
* Fix migrate.lua non-declared variable
* Send msg table with string keys in mtt
* Better log messages
* Add message check
* Fix mtt crash
* Better syntax in storage.lua
* Fix bcc forgotten in mail.send()
* Fix mtt issue
* Better compatibility for messages storage
Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>
* Replace mail.split by builtin func
Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>
* Use builtin split func
Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>
* Use builtin split func in storage.lua
* re-add mtt if
* luacheck on PR
* add check for an ancient issue with missing `to` field
* Fix luacheck on storage.lua
* Fix luacheck warnings in migrate.lua
* Fix luacheck warnings in gui.lua
* Fix luacheck (too long lines) in storage.lua
* Unused loop values in migrate.lua
* Whitespace line in gui.lua
* Whitespace line (init.lua)
* Whitespace line (api.lua)
* Significantly improve maillist behaviour
Replace maillist by its players when sending a message
List of players separated by ,
Avoid doublons when editing more than 2 times a maillist
* Fix luacheck
* Fix table insertions at first index when no needed
* Use funcs
* Do not add maillist as a new contact when sending a mail
* Fix removing elements from tables
* Check maillists not added in contacts
* storage rewrite wip
* storage format docs
* refactor ui components
* show_compose cleanup
* remove unused channel.lua
* error -> err
* status refactoring
* contacts refactoring
* maillist refactoring
* docs
* tests
* fix some issues
* re-enable migrations
* contributors
* prefix mail entries in the mod storage
* internalize old mail-paths to migration module
* add v1 and v2 player db examples and migration test
* Ui improvements & fixes
Move events code (if fields.x then) to events.lua (instead of inbox.lua), fix tab selection when going backward
* Show most recent messages at first (outbox)
* unified-inv fix
---------
Signed-off-by: Athozus <athozus@gmail.com>
Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>
Co-authored-by: BuckarooBanzay <BuckarooBanzay@users.noreply.github.com>
- messages are now actually sent (bug in parse player list)
- no more crashes on sending mail (forgot to make variables local)
- actually handle CC and BCC fields instead of leaving them empty, duh
- make new functions be under the mail namespace
- add util functions to ensure the new format, parse and player list as well as checking whether a player is in that list or not
- rearrange some GUI elements (tighter spacing, grouping, increase window height to be consistent)
- convert mails to new format only as needed (old mails stay intact in case someone reverts to old version)
- mails are shaded differently in inbox, depending on whether the player is in the TO field
- FROM, TO and CC fields are all displayed when reading a mail
- add "Reply All" button (TO includes all original recipients plus the sender, but excluding the player himself, while adopting the CC field. To contrast: "Reply" just sets the original sender as TO and leaves the rest empty)
- move reply, replyall and forward to their own functions in GUI (was duplicated for inbox and show mail)
- don't needlessly set messages table when we do nothing but go back