/!\ database schema has been modified, do a backup before updating
message have been refactored, here are the main changes:
- languages are now handled
- all messages have an uid (internal to SàT)
- message updating is anticipated
- subject is now first class
- new naming scheme is used newMessage => messageNew, getHistory => historyGet, sendMessage => messageSend
- minimal compatibility refactoring in quick_frontend/Primitivus, better refactoring should follow
- threads handling
- delayed messages are saved into history
- info messages may also be saved in history (e.g. to keep track of people joining/leaving a room)
- duplicate messages should be avoided
- historyGet return messages in right order, no need to sort again
- plugins have been updated to follow new features, some of them need to be reworked (e.g. OTR)
- XEP-0203 (Delayed Delivery) is now fully handled in core, the plugin just handle disco and creation of a delay element
- /!\ jp and Libervia are currently broken, as some features of Primitivus
It has been put in one huge commit to avoid breaking messaging between changes.
This is the main part of message refactoring, other commits will follow to take profit of the new features/behaviour.
- "comments_node" and "comments_service" are not needed when "comments" is already here
- to set "allow_comments" to True when updating a main item was enough
- avoid duplicate one2one message (before the history + as a part of it)
- do not display "=> <nick> has joined the room" for each occupant when we have just joined a MUC
- factorize some treatments that were done both in Primitivus and Libervia
- the way it was done, especially with QuickChat.printMessage returning a tuple, was quite disturbing
- FIXME: we can probably remove some arguments and do a deeper factorization e.g with QuickChatText
- widget to remove can now be specified in removePopUp: if it is not the current one, it will be removed from queue
- Primitivus.Alert method is a shortcut to display an Alert which will be removed on "OK" press
- showDialog is now obsolete and removed, if generic dialog creation is needed, XMLUI can be used
- actionManager is used by default (no callback provided)
- in XMLUI, the dialog is closed before calling actionManager
- if keys are not managed in resuling data, an exceptions is raised
- adaptation to backend modifications
- moved common blogging parts from Libervia to quick frontend
- QuickApp use a MB_HANDLE class variable to indicated if blogging is managed by the frontend (and avoid waste of resources if not)
- comments are now managed inside parent entry, as a result a tree of comments is now possible
- Entry.level indicate where in the tree we are (-1 mean parent QuickBlog, 0 mean main item, more means comment)
- items + comments are requested in 1 shot, and RTDeferred are used to avoid blocking while waiting for them
- in QuickBlog, id2entries allow to get Entry from it's item id, and node2entries allow to get Entry(ies) hosting a comments node
- QuickBlog.new_message_target tell where a new message will be sent by default
- remove parameter "online" (can be guess from "presence" value)
- process "statuses" dict in quick_frontend, so this method can get a simple unicode "status"
- add C.PRESENCE_STATUSES_DEFAULT to define the key to use for fallback status
- chat: notification was raising an error when you just entered the room and self.nick is None
- quick_widget: deleting a widget was modifying a dict while looping on it + unselect widget when it's being deleted