summaryrefslogtreecommitdiff
path: root/addons/mail/static/tests/thread_window
AgeCommit message (Collapse)Author
2020-06-15[REF] mail, *: refactor messaging with OWLSébastien Theys
This commit is a significant rewriting of client-side discuss, chatter, chat window, and messaging menu using OWL. The behavior should be broadly the same, with some slight functional changes here and there. From a technical standpoint, the code of messaging is mainly organized in 2 main groups of modules: - models, which are logical entities that depict the client-side state of messaging as a whole. - components, which are in charge of displaying information from models. This refactoring also introduces new JS guidelines regarding folder structure (/static) and naming rules for JS modules. Community PR: https://github.com/odoo/odoo/pull/39023 Enterprise PR: https://github.com/odoo/enterprise/pull/6249 Task-1914207 This PR is a collaborative work by Alexandre, Julien, Sébastien and Xavier, with the precious help of Lucas to speed it up towards the end. closes odoo/odoo#39023 Related: odoo/enterprise#6249 Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com> Co-authored-by: Alexandre Kühn <aku@odoo.com> Co-authored-by: Julien Giannone <jgi@odoo.com> Co-authored-by: Lucas Perais <lpe@odoo.com> Co-authored-by: Sébastien Theys <seb@odoo.com> Co-authored-by: Xavier Dubuc <xdu@odoo.com>
2020-06-12[FIX] *: adapt tests to env reworkAaron Bohy
This commit adapts tests following recent changes on the helpers. The main change is that addMockEnvironment (and all functions using it) are now async, as they need to wait for services to be started.
2020-02-10[IMP] mail, test_mail, hr_holidays: remove obsolete out of officeSébastien Theys
The customizable "out of office" text was removed from the editable views as part of task-2053585, but some places in the code were still using it, even though it was never set anymore. This commit removes the obsolete code. Part of task-2171864 closes odoo/odoo#44968 Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2020-01-30[FIX] mail: no traceback on click channel mention from chat windowAlexandre Kühn
Before this commit, when clicking on a channel mention from a chat window, it crashed with the following error: `TypeError: channel.detach is not a function` This happens due to `MailService.joinChannel()` returning a promise that is resolved with channel ID, instead of a channel object. `channel.detach()` becomes `<Number>.detach()`, which is treated like `undefined()`, hence crash. closes odoo/odoo#44329 X-original-commit: 710fda06c3b30ff2267fcc1d123f15ce031b6f3a Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2019-09-04[FIX] mail: no message attachment delete in discuss and chat windowAlexandre Kühn
Delete attachment from message makes only sense from chatter. Task-Id 2058455
2019-08-12[FIX] mail: register thread window after append in DOMAlexandre Kühn
Before this commit, we may have the following error: `TypeError: Cannot read property 'html' of undefined` This happened in the following scenario: Terminology: - in multi-tab environment, there is a master tab and slave tabs - master tab fetches notifications from the server and forwards them to slave tabs State: - 2 logged-in users: Michell & Marc - Mitchell has open 2 browser tabs - Mitchell has a pinned private conversation with Marc Steps: - Mitchell has focus on a slave tab - Marc posts several messages to Mitchell in very quick succession => Mitchell gets crash error above. This issue is caused by chat window being registered in mail manager while it has not been mounted to DOM. On receiving 2nd new message, it has to re-render chat window header in order to update displayed unread counter. However, this fails due to chat window having no DOM node yet. This commit solves the issue by mounting chat window to DOM before being registered in mail manager. That way, on receiving 2nd new message, it does not trigger a re-render on chat window that is about to be mounted to DOM, since it has not been registered yet. Note that the displayed unread counter will be correct, because it uses the up-to-date unread counter on mount. Task-ID 2050108 closes odoo/odoo#35601 Signed-off-by: Martin Geubelle (mge) <mge@openerp.com>
2019-07-24[MERGE] Forward port of saas-12.2 to saas-12.3 up to 860ab5a1c28baMartin Trigaux
closes odoo/odoo#35119 Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2019-07-16[FIX] mail: auto-update out-of-office info on im_status changeAlexandre Kühn
Before this commit, chat window's out-of-office info did not change when direct partner's `im_status` is/was on 'leave'. Users had to reload page to see updated out-of-office info. Task-ID 2007663
2019-06-27[MERGE] forward port branch saas-12.2 up to 465909f0fdeChristophe Simonis
2019-06-27[MERGE] forward port branch 12.0 up to cd21c016b06Christophe Simonis
2019-06-24[FIX] mail: keep chat window hidden on receiving new messageAlexandre Kühn
Before this commit, when receiving a new message from a hidden chat window, it was making it visible. Because of this, if we had focus on any other window, the focus was lost. Even more annoying, if we had focus on the left-most visible chat window, it moved to hidden menu, so that new chat window takes its place. This commit fixes the issue by keeping new chat windows hidden on receiving new messages, in case there is not enough available space. Task-ID 2026101 closes odoo/odoo#34291 Signed-off-by: Martin Geubelle (mge) <mge@openerp.com>
2019-03-06[REF] mail: adapt code after jQuery updateVincent Schippefilt
Part of task 1896658 Co-authored-by: Aaron Bohy <aab@odoo.com> Co-authored-by: Christophe Matthieu <chm@odoo.com> Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com> Co-authored-by: David Monjoie <dmo@odoo.com> Co-authored-by: Martin Geubelle <mge@odoo.com> Co-authored-by: svs-odoo <svs@odoo.com> Co-authored-by: Vincent Schippefilt <vsc@odoo.com>
2019-02-07[IMP] mail: add ooo status in chats windows.XavierDo
In a chat window with a single usert (dm_chat) the ooo status of the other user is displayed on the top when set. Task: 1856205
2018-12-07[REF] *: adapt all client actionsAaron Bohy
to ControlPanel/Search view refactoring. The ControlPanel being now inside the DOM of client actions, those existing widgets needed to be adapted (in the way they define if and how they want a ControlPanel, and in the way the manipulate their DOM as it slightly changed). Tests needed to be adapted as well. Part of task 1893568 Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com> Co-authored-by: Martin Geubelle <mge@odoo.com>
2018-12-06[IMP] im_livechat, mail: improved "is typing" notificationAlexandre Kühn
With this commit, the UI for "is typing..." notifications has changed. ** before **: In Discuss & chat windows, "is typing..." notification bar at the bottom of the thread, inside the conversation. ** after ** In chat windows, animated '...' next to conversation name. In Discuss, animated '...' next to conversation name in sidebar, and text below the composer. Task-ID 1881001
2018-12-05[MERGE] forward port branch 12.0 up to 053bb45706fChristophe Simonis
2018-12-03[FIX] mail: do not auto-focus new open chat windowAlexandre Kühn
Revision on https://github.com/odoo/odoo/commit/cd34f6de727d5b3858420cff3c9d3c5995c4e75c Before this commit, when receiving a new message from a new DM or livechat, the newly opened chat window was automatically focused and marking messages as read. Chat windows that are automatically opened without any user interaction, such as when receiving a new message from a chat, should not be focused. Those chat windows are "passive", and the user must click on them in order to have focus and mark messages as read (the chat window is no longer passive as a result). The bug has been introduced by the refactoring from the commit above. In fact, there was a very short period of time during which the chat window was passive. However, due to the way chat window server-side state synchronization works, the chat window was automatically closed then re-opened. This resulted in some visual flickering of the chat window ('open' > 'close' > 'open'), and the conversation was automatically marked as read. This was a consequence of the actions 'open' > 'close' > 'open' that removed the passive property of the chat window. Chat window server-side synchronization relies on a notification that tells the state of the conversation. Due to bad design, this notification had exactly the same format as the one for notifying all browser tabs of a newly joined conversation. This commit fixes the issue by distinguishing "channel join" and "chat window state" notification, so that the former is not treated as a chat window notification. It fixes the problem because it was precisely the "channel join" notification that caused the chat window to close and loose its passive property. Task-ID 1914735 opw-1914371 closes odoo/odoo#29223
2018-11-29[MERGE] forward port branch 12.0 up to 82a1e1dcc33Christophe Simonis
2018-11-23[MERGE] forward port branch 12.0 up to b3052b690faChristophe Simonis
2018-11-22[FIX] mail: no autofocus when spawning a livechat windowLucas Perais (lpe)
Have a user A having the focus on the search bar, minding his own business Have a user B send a direct message to user A Before this commit, the chat window on user A's browser took the focus manu militari After this commit, the focus stays on user A's search bar OPW 1911553 closes odoo/odoo#28915
2018-11-16[FIX] mail: show message document link in chat windowAlexandre Kühn
Revision on https://github.com/odoo/odoo/commit/cd34f6de727d5b3858420cff3c9d3c5995c4e75c The commit above consisted of refactoring the JS mail module. A small regression was introduced on messages linked to a document from a chat window: it was no longer displaying the link to redirect to the document that this message originates from. This issue was only isolated to chat windows: it was working fine in the Discuss app. This commit re-introduces the displaying of the document link on messages from chat windows. Task-ID 1910119
2018-11-19[REF] *: update js test suite to use helpersGéry Debongnie
This rev. introduces robust helpers to use in the JS tests suite to interact with DOM and components, and starts using them (almost) everywhere. All the helpers are exposed though testUtils.js. There are 2 kinds of helpers: 1. Assertions ------------- * assert.containsNone, containsN, containsOnce check that the DOM (or a specific part of the DOM) contains a `selector`. It generates a correct error message automatically. ex: assert.strictEqual(form.$('.o_form_editable'), 1, "msg"); -> assert.containsOnce(form, '.o_form_editable'); * assert.isVisible, isNotVisible check that the DOM has an element visible or not. They also check that the element is actually in the DOM (before most tests didn't verify this). * assert.hasClass, doesNotHaveClass, hasAttrVAlue, check specific properties of a DOM element, and also validate that it is applied on a single existing DOM element (before most tests didn't verify this). ex: assert.notOk(form.$('button').hasClass('btn-primary')); -> assert.doesNotHaveClass(form.$('button'), 'btn-primary'); 2. Utilities ------------ The goal of the utilities is to centralize the definition of many standard components and interactions, ensuring that when we refactor the JS framework, we do not need to change all the tests. Existing mock utilities (addMockEnvironment, intercept, path, patchDate, unpatch and fieldsViewGet) are moved to 'testUtils.mock.*'. Existing DOM utilities are moved to 'testUtils.dom.*'. New dom utilities are created for opendDatePicker, click, clickFirst and clickLast. Helper `click` verifies that there is exactly 1 element visible in the DOM you click on, `clickFirst` and `clickLast` verify that there are more than one element on the DOM. ex: form.$('button').click(); -> testUtils.dom.click(form.$('button')); New Form utilities: (testUtils.form.*) clickEdit, clickSave, clickCreate, clickDiscard, all clicks on the control panel buttons of the form. `reload` reloads the form data. New modal, graph, kanban and pivot utils (testUtils.pivot.*, testUtils.kanban.*, etc.). New fields utils: (testUtils.fields.*) * editInput, editSelect: allow to change the value of a field, using a selector to identify it. They validate that the input exists and trigger the change event automatically. * editAndTrigger: allow to modify a field and trigger specific events after the value change * many2one (testUtils.fields.many2one.*) clickOpenDropdown, clickHighlightedItem, clickItem, searchAndClickItem: use a field name instead of a selector and do all the complex mechanism to open, filter and highlight many2one fields. Joint work with aab, dam, ged, mge, svs and vsc.
2018-10-16[FIX] mail: no moderation in chat windowAlexandre Kühn
Before this commit, a moderator of a moderated channel could see commands on 'pending moderation' messages in a chat window, although none of them work in chat windows. Those commands only work in Discuss. Making them work in chat windows is not trivial, because some code must be redesigned for this. This commit disables moderation commands in chat window. Moderators of such channel now see 'Pending moderation' on such messages in chat window, and mouse-hovering on this annotation tells the user to moderate those messages in the Discuss app. Task-ID 1887963
2018-11-26[FIX] mail: no '#' prefix in DM nameAlexandre Kühn
Before this commit, DMs had the prefix '#' in their displayed name (e.g. '#Demo User'). This commit fixes the issue by putting this prefix only on non-chat DMs. In particular, mailboxes, DMs and Livechats no longer show this prefix. This change is also visible in the breadcrumb of the discuss app. Task-ID 1911738
2018-08-30[FIX] mail: correctly handle (non-)passive thread windowsAlexandre Kühn
Definition of '(non-)passive' thread window: Thread windows can be either 'passive' or 'active' (default: 'active'). - When opening a thread window in 'active' mode, the messages are marked as read, and the focus is on the thread window. - When opening a thread window in 'passive' mode, the messages are not marked as read and there is no focus on the thread window. Messages are kept unread until the user interacts with the thread window (e.g. by clicking on composer). When the user intentionally opens a thread window, it should be open in active mode. However, when a thread window is open without any user iteractions, it should open in passive mode. The later case is useful in some cases. For instance, when receiving a new message from a DM conversation, it should automatically open the corresponding thread window. However, it should not automatically mark messages as read. This commit contains 2 bug fixes: 1. When receiving a new message on an active thread window, it no longer increments the unread counter. (When the focus is on the composer of the thread window, the user is immediately reading newly received messages.) 2. When receiving a new message from an unpinned DM conversation, the newly open thread window is always passive. (This was not the case before, so when receiving new messages, it did not increment the unread counter.)
2018-08-30[REF] mail: clean some JS codeAlexandre Kühn
1. Removed `getLocalMessages` method in mailbox, and replaced with an override on `getMessages`. (This method was used before the distinction was made between `getMessages` and `fetchMessages`) 2. Removed unused method `_warnUpdatedUnreadCounter` in abstract thread window. (Leftover from an early POC) 3. Set the default value `''` for the status of a thread. (The method `getStatus` should always return a string) 4. Enforce default value `false` for detached status of channel. (The method `isDetached` should always return a boolean) 5. Improve readability of some tests. (removed useless variables and/or redundant code)
2018-08-27[FIX][REF] mail: several thread windows fixesAlexandre Kühn
This commit fixes some bugs on thread windows, and make some improvements on tests related to thread windows. Fixes: 1. Correctly position last visible thread window when there are more open thread windows than available slots. 2. Closing a thread window now marks it as read. 3. Can now fold/unfold the blank thread window (aka 'New' thread window). Tests cleaning: 1. Removed unnecessary 'before assertions' in thread window tests. > Solved with this: https://github.com/odoo/odoo/commit/9b1daa1218f7adf9d741afba607ef5b55b16e3e6 1. Added basic rendering test for a (non-blank) thread window. 2. Cleaned thread window tests > Split in different files. > Grouped in 'Thread Window' QUnit module.