summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js/window_manager.js
AgeCommit message (Collapse)Author
2018-02-01[REF][IMP] *: mail js refactoringAaron Bohy
This commit improves the JS code of the mail module, which comes maily from the new coding guidelines and the addition of "JS services". JS services are important objects that do not fit well in the component tree, such as chat_manager or ajax. The benefits of JS services are improved readability of the code, reduced coupling, and more testable modules. In particular, discuss was hard to Summary of the changes: - ClientAction has been renamed into Discuss - Clear instantiation of chatManager - New coding guidelines in most mail modules - JS Services can interact with each other - Chat Manager and Window Manager are services - Window Manager renamed to Chat Window Manager - bus.bus is now encapsulated in Bus Service (a service) - The test infrastructure has been tweaked with JS Services - Chat Mixin has been removed A future improvement would be to translate some 'trigger' into 'trigger_up'.
2018-01-26[IMP] web,*: config: add XXS size to config.deviceAaron Bohy
In Less, the size_class XXS is defined and used in media queries. This rev. adds it in JS for sake of consistency. Code in addons comparing the size_class needed to be adapted due to the new XXS size_class. Moreover, we now use the helper 'config.device.isMobile' everywhere we should, instead of manually comparing the size_class. Finally, we changed the way the config.device has to be specified in the test environment. From now on, only the size_class should be set, and the isMobile flag is computed automatically.
2017-09-29[FIX] web, mail, base: config's `isMobile` definitionqsm-odoo
The `isMobile` variable was defined at the right place (`config.device`) but was set at the wrong place (`config`). Thank you for making me author of all the `isMobile` lines by the way... :)
2017-09-15[IMP] im_livechat, mail: Discuss UI in mobileAaron Bohy
- Extract mobile specific code for the client action to a specific file - Massive clean of less rules - Unify channels preview of the systray dropdown and the mobile UI of Discuss - Ensure to only load the last message of each channel in mobile, as this is not used in desktop (unless the user opens the systray menu) - Make livechat available in Discuss mobile UI
2017-09-05[REF] mail: introduce new chatter/discuss designstefanorigano
- Improve overall design - Better use of UI colours - Replace planned activities icon - Vertically align kanban icons - Remove the 'bell shtcut' and followers caret - Use a mixin to style the chatter (inline, not inline, compact)
2016-05-03[IMP] im_livechat,mail: mention in backend chat windowsAaron Bohy
The BasicComposer widget is now used in chat windows, which enables the mention feature. This is only for the backend, as for the livechat windows in the frontend, the composer is still a simple input. Classname 'o_chat_input' has been renamed into 'o_chat_composer' (the root classname of the basic composer) for uniformity in the JS and LESS code of chat windows.
2016-03-02[REF] mail: code refactoringAaron Bohy
- extended_chat_window feature in its own files: as it is only available in the backend, we don't want it in the frontend assets (which contain the 'basic' chat_window) - move followers feature in its own files - creation of the 'mail.utils' module in utils.js - creation of systray.less to define the style of the mail item and dropdown in the navbar - use of chat_manager's search_partner function in PartnerInviteDialog - some code linting
2016-02-08[FIX] mail: automatically open DM and livechat on new messageAaron Bohy
When a new message arrives in a DM or a livechat, the channel is automatically open in a chat window if we aren't currently in Discuss. Don't apply this behavior in mobile and we probably don't want to see a full screen chat window everytime someone sends us a message.
2016-02-08[FIX] mail: hide chat windows in discussAaron Bohy
Thus also remove the 'Detach' button in Discuss's control panel as we can now directly detach channels with the messaging menu. Also removed unused handler on 'messages_read' since rev. 30c26d7.
2016-02-08[FIX] mail: display user status in chat windowsAaron Bohy
2016-02-05[FIX] mail: discuss notifications small fixesGéry Debongnie
- discuss notifications are always sent natively if possible - clicking on native notifications focus the tab - clicking on native notifications closes them - granting notification permissions will display a confirmation notification
2016-02-01[FIX] mail: systray: move Inbox counter to its own itemAaron Bohy
Clicking on that item redirects to the Inbox in Discuss. The messaging menu's counter is now the number of conversations (public or private channels, dm and livechat) in which there is at least one unread message. Moreover, it is emphasized when one of those conversations is a chat. Also make mass-mailing channels available through the messaging menu (for consistency as its counter takes those channels into account) and allow to open them in chat windows without input.
2016-01-25[FIX] mail: various ui fixesAaron Bohy
- limit partner search to 10 in new message's chat window to prevent overflow - prevent negative needaction counters (may occur in multi-tab, with needactions received during an inactivity period) - remove <pre> tag when computing messages' preview for the messaging dropdown as they break the layout and add 'overflow: hidden' on o_mail_channel_preview just in case - rename 'New message' button in Inbox into 'Send mail' as it was confusing, and adapt .pot file accordingly - focus on composer when opening a chat window - break lines in threads to avoid horizontal scrollbar (credit goes to qsm) - correctly apply rules on <p> in threads opw-667235
2016-01-14[IMP] mail: various UI improvementsGéry Debongnie
- don't add 'New message from' in the title of notifications when an author name is defined - use a simple O icon instead of the full Odoo logo when a notification is natively displayed - don't scroll to bottom if the thread is not already at bottom - don't mark a channel read if thread is not at the bottom - add # in front of channel name in chat windows and in invite dialog - accept anonymous names in channel (for ex, livechat channels) - always go to the next line with shift+enter - always send message with ctrl+enter - pressing enter sends message or go to next line depending of context - don't allow to detach mass mailing channels
2016-01-14[IMP] mail: make chat windows somehow usable in mobileAaron Bohy
2016-01-14[IMP] mail: open dm shortcut from in navbar dropdownAaron Bohy
Allows to directly open a dm channel from a chat window, without coming back to Discuss.
2016-01-14[IMP] mail: navbar: messaging menuAaron Bohy
The navbar notification is now a dropdown containing a preview of all pinned channels (except Inbox and Starred), channels with unread messages being on the top. It allows to quickly detach a channel without going back to Discuss. The channels preview fetching is performed only once, and it is done in background without blocking the whole UI (using shadow option or session.rpc()). Also fixes a synchronization problem between server and client about the folded state of channels (the info wasn't stored client side, so it produced weird situations, e.g. unfolding a channel didn't actually unfold it).
2016-01-14[IMP] mail: put chat windows in a dropdown in case of overflowAaron Bohy
Former algorithm to display chat windows was pretty basic: each window was positionned 5 pixels to the left of the previous one, starting from the bottom right corner of the screen. Thus, when there were too many chat windows to fit in the screen, they overflowed to the left. This rev. handles this case by hidding overflowing chat windows and making them available in a dropdown positionned 5 pixels to the left of the last visible chat window.
2015-12-16[FIX] mail: sent messages are plaintextAaron Bohy
The problem was that users couldn't write characters like <, > in their messages because the messages are html (e.g. '3 < 5' resulted in '3' because this wasn't html valid so the second part was trimmed). Because of mentions, we can't force messages to be plaintext (mentions are processed and replaced by html links before the message is stored in DB). The solution is to escape them just before processing the mentions. In the case of chat windows, we must be careful because chat windows are also used for the livechat, for which messages are plaintext. So the escaping should be done for chat windows in the backend, but not in the livechat.
2015-12-09[FIX] mail: various ui improvements/fixesAaron Bohy
- display full content of messages in Discuss - no content helpers in inbox and starred improved - mark as read tooltip instead of mark ad done - decrease font size in chat windows - increase chat windows dimensions - display avatars in chat windows - chat window background is now white - notes are displayed with a darker background
2015-12-03[FIX] mail: fix full composer messagesGéry Debongnie
Full composer messages were not loaded in the chatter when sent. We lost that functionality sometimes in the previous months. This commit makes it work properly again. Some refactoring were required, we needed a way to load messages with a given res_id and model.
2015-12-03[FIX] mail: redirection handling in chat windowsAaron Bohy
- clicking on a channel mention (or a user) from a chat window opens a new chat window for that channel - clicking on any other link in a chat window correctly opens the corresponding document 2 minor changes were required: - use do_show() instead of on_reverse_breadcrumb() to update control panel and url in client action, as other actions can be stacked over the client action, e.g. by clicking on a document link in a chat window. In that case, the on_reverse_breadcrumb callback wouldn't be set, and thus the control panel and url wouldn't be updated by coming back to client action using the breadcrumbs. - channel_join() now checks whether or not the channel has already been joined (i.e. if it is in the JS cache) before performing the RPC. This check was performed by each caller, so this simplifies the code.
2015-11-23[FIX] im_livechat,mail: unread counter in chat windowsAaron Bohy
Synchronize the unread counter between chat windows, client action and the actual value stored in DB. This adds robustness to the counter displayed in chat window, and allows to synchronize the client action with the chat windows when marking messages as read.
2015-11-23[FIX] mail: various UI improvementsAaron Bohy
- emoji are no more clickable in threads (they are only in the popover) - correctly update channel needaction counter - don't display 'New message' notification when the channel in detached - display in the ui channels that send emails and other channels - prevent notifications in mass mailing channels - increase bottom padding in client action thread
2015-11-09[FIX] mail: issue when leaving channel and refreshingGéry Debongnie
When we refresh, the bus will send the last notifications since the last 50s, so, the browser will receive notifications from a channel that we already left. This commits tries to fix the issue by sending explicitely the information that a channel was unsubscribed. Also, and this is touchy, it ignores messages received in a channel that it is not subscribed to (before, it joined the channel) Also, it will synchronize channels opened and closed in various tabs/browsers.
2015-11-09[FIX] mail: prevent race condition in client actionGéry Debongnie
The issue was that the chat_manager was an async js module, so it could be loaded quite late. Then the client action was loaded only after the chat_manager was ready, and possibly before the action_manager read the value in the action registry. This commits prevent this problem from happening by turning the chat manager into a sync module, so the chatter and the client action needs to wait for him to be ready before doing their magic.
2015-10-16[IMP] mail: chat_windows improvementsGéry Debongnie
including: - larger chat windows - add a counter for unread messages when the chat window is folded
2015-10-01[REF] mail: second part of the chat refactoring (client side)Géry Debongnie
Joint work with aab