Commit Graph
10066 Commits
Author SHA1 Message Date
Thanh Dodeur eb37a32cec [FIX] mail: prevents RtcSession update in _willDelete
Before this commit, the RtcSession fields were updated in the
`_willDelete` which could cause tracebacks.

closes odoo/odoo#99701

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-15 17:18:22 +02:00
Thanh Dodeur 1c8fd08e7b [IMP] mail: call tests
Part-of: odoo/odoo#99701
2022-09-15 17:18:22 +02:00
Thibault Delavallée c1f1333d88 [FIX] mail: set 'email' message_type when sending mass mailing
When using the composer in mass mail mode, no explicit 'message_type' is given
to created 'mail.mail' records. By default those are set to 'email'.

In this commit we make it explicit, as it may change in a near future. This
type is not really 'notification', 'comment' or 'user_notification', so using
'email' is fine currently. It is used more for incoming emails but we don't
distinguish outgoing emails currently.

Task-2710804 (Mail: Clean MailThread API)

Part-of: odoo/odoo#100137
2022-09-15 01:23:27 +02:00
Alexandre Kühn 486cd602fc [FIX] mail: guard ChatWindow/onClickHandler (nightly build failure)
closes odoo/odoo#100132

Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
2022-09-15 00:30:26 +02:00
Thibault Delavallée 94208cb8b4 [IMP] test_mail: improve coverage of post helpers
Purpose of this commit is to add some test about MailThread helpers built on
top of ``message_post`` / ``composer`` (log, post with view, ...). Some tests
about batch are also added.

Some performance tests are also added for those helpers.

Counters are updated. Note that they did not change, it is just an update
based on current master counters.

Task-2710804 (MailThread Api Cleaning)

closes odoo/odoo#100184

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-09-14 23:38:05 +02:00
Louis Wicket (wil) b9b0d9c462 [IMP] mail, *: inverse of identifying is automatically causal
* = im_livechat, snailmail

The model manager will now automatically add `isCausal: true` to inverse
of identifying fields. This commit implements the feature and removes
now unnecessary declarations of `isCausal: true` from the code.

Task-2741402.

closes odoo/odoo#100119

Related: odoo/enterprise#31290
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-14 21:22:15 +02:00
Aaron Bohy a7766e0f4d [FIX] web: SelectCreateDialog: remove padding
We don't want any padding in those dialogs. The presence of the
padding was a consequence of the rewritte of that dialog in owl.

It is a frequent usecase to remove the padding from the body of
dialogs. We thus introduce a new props on Dialog and when this
props is set to `true`, we do not set any padding on the body.

This commit refactors other usecases to make them use the added
props.

closes odoo/odoo#100045

Signed-off-by: Géry Debongnie <ged@odoo.com>
2022-09-14 21:22:12 +02:00
Renaud Thiry bcce093ed3 [IMP] mail: add message_partner inverse on threads
This change allows for adding and removing followers from threads
by directly setting the message_partner_ids field of threads.

This enables the use of many2many_tags to add followers to a thread.

Task-2804888

closes odoo/odoo#95645

Related: odoo/enterprise#29284
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-09-14 21:21:09 +02:00
Gorash 39ea7a1fab [IMP] web/all: XML templates are now declared into the python manifest.
Adapt all manifest, split some XML file and update JavaScript files.

Part-of: odoo/odoo#95500
2022-09-14 20:25:01 +02:00
Gorash 5410b7c238 [IMP] base/web: XML templates are added into the asset bundles.
XML files are now declared in python module manifests. During the qweb
't-call-asset' directive, assetbundle will fetch the declared xml files,
apply the inheritance (t-inherit) and create a javascript service (for
eg: 'web.assets_backend.bundle.xml') which is added at the end of the
*.js mimifier file.

When the debug mode is activated, comments are added in the template
indicating which file the template comes from as well as the
inheritances applied to it.

****

JavaScript:

assets.js (module @web/core/assets) takes care of loading libraries,
javascripts and styles.
`loadJS(url)` (loads the javascript and returns a resolved promise when
the templates are also loaded via the '*.bundle.xml' service)
`loadCSS(url)` (loads the style a resolved promise when the file is
loaded)
`loadXML(xml, app=assets.defaultApp)` (load template into
application/owl, used by the `*.bundle.xml` services)
`getBundle(bundleName)` (get the bundle descriptor)
`loadBundle(desc)` (load the files and bundle from a descriptor)

templates (XML element content all owl templates)

A new `ready(serviceName)` method on boot.js lets you know when a
service is loaded are the require.

The xmlDependencies attribute no longer exists.

Python:

The xmls taken into account by assetbundle.py, applying `t-inherit`
inheritances and adding an `name_of_the_bundle.bundle.xml` service in
the generated JavaScript file.

****

Every manifest changes is into the next commit, except 'web_tour' in
this current commit as example.

Part-of: odoo/odoo#95500
2022-09-14 20:25:01 +02:00
Pierre-Yves Dufays bee4a2659d [IMP] {test_}mail: merge notif email template layout to keep only one
Make mail_notification_layout as the default mail template and remove
message_notification_email. We now only have 2 main notification mail layout
templates (outside of a light one): the default one and one that inherits from
it to only change the signature to the responsible instead of the author one.

In this operation the layout of message_notification_email has been integrated
in mail_notification_layout to support outlook mail client for which
message_notification_email has just been reworked (odoo/odoo#92847).

Technical note: we have integrated the "internal communication" banner from
"message_notification_email" into the new default template
"mail_notification_layout" which cause one added query in the test for querying
the flag internal from mail.message.subtype.

Task-2801600

Part-of: odoo/odoo#88466
2022-09-14 19:13:45 +02:00
Pierre-Yves Dufays 7e8df5a4b3 [IMP] account, project, purchase, sale, {test_}mail: improves mail re-usability
"mail_notification_paynow" mail template layout has been renamed to
"mail_notification_responsible_signature_layout" as it now only differ by the
signature. It allows to use it more widely.

Task-2801600

Part-of: odoo/odoo#88466
2022-09-14 19:13:44 +02:00
Pierre-Yves Dufays a577afc75e [IMP] account,crm,project,purchase,sale,[test_]mail: improves activity notif
Ease the understanding of the notifications sent when users are assigned to an
activity or a model (task, lead, ...).

Technical note:
- the customization of data sent to the email layout template (here subtitles)
should be done by overriding
mail_thread._notify_by_email_prepare_rendering_context on the model.
But in this case, we send an activity (ex.: todo) for a model (ex.: crm.lead)
which involves 2 models. Data from both models must be sent to the template
layout. To solve this problem an optional parameter to
mail_thread.message_notify has been added: subtitles. This allows the
caller which knows about the 2 models to set the values for subtitles for
the template.
- mail_activity._render_notify_header has been added to render the subject and
subtitles using the language of the recipients through the context lang
variable.
- a generic mail notification template has been added and the specific
mail_notification_paynow has been derived from it as the only change is the
handling of the signature.

Task-2801600

Part-of: odoo/odoo#88466
2022-09-14 19:13:44 +02:00
Brieuc-brd 8b708cca59 [IMP] mail: CallSettingsMenu: review and simplify scss
Part of the overall v16 SCSS optimization/restyle, task-2704984

task-2980888

closes odoo/odoo#100032

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-13 18:57:09 +02:00
William Braeckman e2ba23ea17 [IMP] mail: Migrate many2many_tags_email widget to Owl
closes odoo/odoo#99230

Related: odoo/enterprise#31254
Signed-off-by: William Braeckman (wbr) <wbr@odoo.com>
2022-09-13 13:53:08 +02:00
Viktors Lipskis (vili) bbf3dedb7a [FIX] mail: fix activity Mark as Done panels
Clicking on kanban activity Mark as Done button now works as expected, either displaying one empty panel or displaying no panels at all.
Before this commit, repeating a click on the button did not reset the panel, so the next click added another form to the panel.
Also, clicking on the button left other panels open.

task-2961943

closes odoo/odoo#98832

Signed-off-by: Arnaud Joset <arj@odoo.com>
2022-09-13 09:31:11 +02:00
William Braeckman 44cfa03587 [IMP] mrp: migrate mrp_documents_kanban to wowl2
This views has multiple custom features such as file upload, attachment
viewer and download.
A lot of files have been rendered obsolete and have been deleted,
notably `file_upload_mixin` which has been replaced by the
file_upload service and hooks.

closes odoo/odoo#99769

Related: odoo/enterprise#31145
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2022-09-12 17:33:14 +02:00
Nicolas Bayet 10af6e83bf [IMP] web_editor,mass_mailing: adapt fields to use owl
- adapt the html field and mass_mailing_widget to be owl components
- adapt the mass mailing view to be an owl view

task-2898432

closes odoo/odoo#94875

Related: odoo/enterprise#30915
Signed-off-by: David Monjoie (dmo) <dmo@odoo.com>
2022-09-12 11:38:00 +02:00
Sébastien Theys e8b369e724 [IMP] mail: clean legacy activity file (2)
- move BasicActivity to KanbanActivity (only usage of that abstract class)
- remove useless class o_activity_link
- remove useless class o_activity_label
- move d-flex from o_activity_title_entry to template
- move align-items-baseline from o_activity_title_entry to template
- move o_no_activity SCSS to template
- clean selection compute
- clean record_id
- clean activityState, _setState, _reset
- remove obsolete unlink activity code

closes odoo/odoo#99824

Related: odoo/enterprise#31201
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-09 16:23:43 +02:00
tsm-odoo f7e0da7b71 [IMP] mail: improve after event error stack trace
Before this commit the error raised/logged when rejecting the afterEvent
promise was imcomplete. This is due to the fact we're creating the
error inside the promise itself. In order to get a better stack trace,
the error is now declared outside of the promise.

Moreover, both `afterNextRender` and `afterEvent` functions were using
`console.error` before rejecting the promise. This is also a problem
since runbot will show the error printed by `console.error` instead of
the one of the test failure. In order to solve this issue, those two
`console.error` have been replaced by `console.warn`.

closes odoo/odoo#99899

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-09 14:41:25 +02:00
Louis Wicket (wil) 9e685f0147 [IMP] mail: move "isAddingItem" logic from Discuss to DiscussView
This move will remove the need of the adjustment compute and therefore
will avoid writing on computed fields.

closes odoo/odoo#99891

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-09 12:17:13 +02:00
Alexandre Kühn d8f1b8deda [FIX] mail: emoji picker with emoji up to unicode 12.0
Task-2977886

closes odoo/odoo#99844

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-09 11:12:41 +02:00
Denis Ledoux 4636620004 [IMP] base: only pass to the webclient the fields it requires
The main goal is to reduce the number of KB sent by the `get_views`
method to the web client by getting rid of things not used by the web
client.

This revision aims to only pass the `fields_get` info of fields
actually required by the web client.

Before this revision, for each view, the list of all fields
of all models implied in the view are passed.
For the main view, it's required to pass all the fields,
for the search view: The advanced search needs to know all fields
of the model to be able to let the user to do advanced filters and
groupbys on the model fields.

But, for the models of the subviews (one2many/many2many embbeded views),
this is not required. Only the fields included in the view are required.
Also, if the search view is not requested by the web client,
then it's also not required to pass all the fields of the main model.

After this revision, for each view, pass the `fields_get`
info of only the fields actually implied in the view.
For the search view, info of all fields are passed,
not only the ones implied in the view.

For instance, on the `get_views` of `account.move`,
this allows a gain of an extra 18,05KB,
reducing from 165.82 to 147.77KB.

In addition, before this revision, the whole content of `fields_get`
was stored in the cache of `_get_view_cache`, meaning per view.
If 3 views were requested on `get_views`
let's say kanban, list, form,
the same whole `fields_get` info, of all fields,
was stored 3 times in the cache.

This revision removes the content of fields_get of the cache
for `get_views`, to avoid storing multiple times the exact same
information in the cache, therefore gaining tremendous memory,
while not loosing that processing time.
The decrease of speed is only 1~3ms per call to `get_views`.
This is mainly because all the information gathered by `fields_get`
is already in the cache. For instance, it doesn't require any SQL
request (at the moment). e.g. the translations (string, help, selection)
are already cached.

closes odoo/odoo#99834

Related: odoo/enterprise#31167
Signed-off-by: Denis Ledoux (dle) <dle@odoo.com>
2022-09-09 11:12:38 +02:00
Thibault Delavallée 24f2f03047 [PERF] mail: remove extra ACLs check in message_post
An explicit access check when posting a message has been added at odoo/odoo@9920f20e4c
when adding notably computation of display_name as sudo. However this is not
the role of ``message_post`` to check access for such an implementation
details.

Access is anyway already granted through the various browse and record access
done during the posting process. Moreover even message access (creation or
read) is protected notably through its related record ACLs.

Portal/Public access on message_post is anyway done through dedicated routes
using tokens or hash/pid that call message_post as sudo. We can therefore
remove the explicit access check added a bit wildly in the middle of the code.

Task-2710804 (Mail: Clean MailThread API)

closes odoo/odoo#99654

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-09-09 11:12:29 +02:00
Alexandre Kühn d41f6e7687 [IMP] mail: emoji picker view no search content screen
Task-2976156

closes odoo/odoo#99700

Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
2022-09-09 02:41:48 +02:00
Alexandre Kühn b63a7deb0e [FIX] mail: dialog properly manage overflow for long content
Before this commit, when content of dialog was long, content
overflow but was not scrollable, which makes bottom unreachable,
which is especially a problem when buttons are at the bottom.

This problem solves the issue by adding classname `modal` to
dialog. This classname puts proper handling of overflow of
dialog and its content.

Also remove `align-items-center` so that top doesn't overflow
in isolation from the rest of content, which made top unreachable.

Task-2973866

closes odoo/odoo#99865

X-original-commit: 9f4495aa065da5e94d6ccd007c9f26b7d755f140
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-08 21:43:21 +02:00
Alexandre Kühn c1051a154b [FIX] mail: emoji picker properly show last row in search
Before this commit, when searching an emoji in emoji picker,
the last row was frequently now showing. This is especially
a problem with very specific search, whose results are not
showing any result, like "bomb" for 💣

This commit fixes the issue by properly showing the last row.

Task-2976677

closes odoo/odoo#99766

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-08 21:43:06 +02:00
Fabien Pinckaers 781a771295 [IMP] remove duplicated index
The following indexes were in double:
- ir_module_module_name_index, ir_module_module_name_uniq
- ir_model_obj_name_uniq, ir_model_model_index
- ir_config_parameter_key_index, ir_config_parameter_key_uniq
- decimal_precision_name_index, decimal_precision_name_uniq
- account_edi_proxy_client_user_id_client_index, account_edi_proxy_client_user_unique_id_client
- mail_channel_rtc_session_channel_member_id_index, mail_channel_rtc_session_channel_member_unique
- loyalty_card_code_index, loyalty_card_card_code_unique

Part-of: odoo/odoo#99795
2022-09-08 12:46:50 +02:00
tsm-odoo c01b9e7bdd [FIX] mail: model manager is debug during tests
Since the PR introducing the wowl environment in the discuss app, the
model manager is not set in debug mode during tests. The debug mode
is usefull since it adds integrity checks and more verbose error
messages. This commit restores it.

closes odoo/odoo#99556

Related: odoo/enterprise#31086
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-08 12:46:37 +02:00
Alexandre Kühn d8ba2ce234 [IMP] mail: introduce Messaging/executeGracefully
- Made executeGracefully in messaging so it can have specific
behaviour in qunit tests (no timeout)
- guard all usages of `executeGracefully` in case current record
is deleted (e.g. during test teardown).

Task-2976295

Part-of: odoo/odoo#99556
2022-09-08 12:46:37 +02:00
Alexandre Kühn c4e84115c2 [FIX] mail: remove manual .update() in onScrollActiveCategory
This computed field was manually updating a field, which is
not correct. Instead, this field should have been an `onChange`,
which is what this commit does as a fix.

Task-2976940

Part-of: odoo/odoo#99556
2022-09-08 12:46:37 +02:00
Didier (did) a06161ec1c [IMP] mail: introduce _generateMessageBody
Avoid code duplication by introducing `_generateMessageBody` function.

closes odoo/odoo#99745

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-08 11:45:18 +02:00
Alexandre Kühn f48479e7ee [FIX] mail: remove manual .update() in compute of emoji grid rows
Task-2976694

closes odoo/odoo#99771

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-08 03:23:53 +02:00
Alexandre Kühn 67e3603c07 [FIX] mail: emoji picker with only widely supported emojis
1. Remove emoji that have unicode version equal or greater than 13.0.

2. Also removes "smiling_face" and "frowning_face" emojis, as although
they are old emojis, their visual support is quite lacking, so
they feel off. As substition, use "slightly_smiling_face" and
"slightly_frowning_face" respectively.

3. All regional flags have been removed.

4. the 11 remaining flags have been moved to "Symbols" category.

Task-2976577

closes odoo/odoo#99753

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-08 02:25:57 +02:00
Didier (did) 8d8a4ef9b5 [IMP] mail: remove isPostingMessage from updateMessage
Since we are not using `postMessage` in `updateMessage`, setting
isPostingMessage is not useful.

closes odoo/odoo#99744

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-08 01:08:20 +02:00
Alexandre Kühn 0f2e34acc8 [IMP] mail: shorten emoji picker search placeholder
Task-2976308

closes odoo/odoo#99724

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-08 01:08:05 +02:00
Stefan Rijnhart 7320ab3a76 [FIX] mail: clean context on creation of messages with chatter
When creating records with default keys in context those are currently
propagated through the whole call chain until message creation. However
default keys are meant to be used for the record creation, not its logs
or messages.

A protection against default_child_ids already exists. However better
remove all context keys by using a clean context.

Closes odoo/odoo#93797

closes odoo/odoo#99670

X-original-commit: 421ee12a099220cb43f3c3f0bf8d51586e687a28
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-09-08 01:07:45 +02:00
Sébastien Theys e605f90ab6 [IMP] mail: clean legacy activity file
In preparation of future clean up.

- remove obsolete method _fetchSpecialActivity
- apply lint / some es6 syntax on legacy activity file
- use async/await and remove most self in legacy activity
- inline activity setFileUploadID function
- inline activity _bindOnUploadAction function
- inline activity setDelayLabel function
- inline activity _readActivities function
- inline activity _sendActivityFeedback function
- inline activity _bindPopoverFocusout function
- remove obsolete activity _unbindOnUploadAction function

closes odoo/odoo#99646

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-08 00:13:05 +02:00
tsm-odoo 7b10219d32 [FIX] mail: fix composer attachment upload test
Before this PR, the `remove an attachment..does not need any confirmation`
test would fail because the attachment was deleted while still
uploading. Since the abort controller does not work in the mock
server, the attachment would have finished its upload after its
deletion. This commit solves this issue by waiting for the attachment
to be uploaded before deleting it.

closes odoo/odoo#99758

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-07 18:57:00 +02:00
tsm-odoo 0954f0284c [FIX] mail: fix chatter attachment drop test
The chatter drop attachment test fails in an indeterministic manner.
This is because we're assuming that the next render will be the one
corresponding to the file uploading. In order to be sure this render
is really the one we're expecting, the `o-file-uploader-upload` event
is added.

closes odoo/odoo#99652

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-07 18:56:57 +02:00
Alexandre Kühn b5ce1e39d7 [IMP] mail: Improve Emoji Picker (step 2)
Improvements:

- Much more emojis in the emoji picker (more than 1800 emojis, up from 81)
- Fuzzy search bar to find emoji in the emoji picker

Known limitations:

- Emoji visual is based on browser/OS, so some emojis may not be visible on some devices

Task-2957928

closes odoo/odoo#99343

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-07 02:17:47 +02:00
Thibault Delavallée 2b2ccab0b6 [FIX] mail: fix broken multi _message_compose_with_view
Returning after first loop iteration has the sad side effect of
somehow breaking batch version of methods.

Oversight of odoo/odoo@0ea27f430c

closes odoo/odoo#99630

X-original-commit: 6d6dbe16d4570372fe5fd3d28ebe5c43b646d3bc
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2022-09-06 21:24:07 +02:00
Didier (did) 683f9be971 [FIX] mail: fix traceback with empty message body
This PR fix a traceback that occure when the message body is empty (eg: only
uploading an attachment).

closes odoo/odoo#99625

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-06 18:23:00 +02:00
tsm-odoo 0f9b11a025 [REM] mail: remove obsolete wait until event parameter
The `waitUntilEvent` start helper parameter has become obsolete. Indeed,
events are systematically awaited by the `openDiscuss`/`openView`
helpers. This commit removes this parameter.

closes odoo/odoo#99577

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-06 15:22:59 +02:00
Zelong Lin d57c64f95b [IMP] mail, *: remove 'public' field in channel
*: im_livechat, website_livechat

Access right should be based on channel type and membership instead.
Chat always private, group always private, channel private should
disapear and be a group instead (migration needed), and other channel
always public (but they can still be further restricted with
the "allowed groups" feature)

task-2632861

closes odoo/odoo#90415

Related: odoo/enterprise#30980
Related: odoo/upgrade#3850
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-06 10:57:59 +02:00
Zelong Lin d23db6e9da [IMP] mail: who command supported in group
task-2971564

closes odoo/odoo#99545

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-05 20:13:08 +02:00
Didier (did) 613448162a [IMP] mail: remove useless code in message edition
closes odoo/odoo#99487

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-05 18:35:08 +02:00
tsm-odoo 591baa9003 [FIX] mail: fix indeterministic chat window manager test
Before this PR, some mail tests relying on DOM elements being present
but that are added after the messaging initialization could fail
unpredictability. This commit fixes this issue by waiting the next
render following the initialization of messaging.

closes odoo/odoo#99461

Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2022-09-05 16:54:12 +02:00
Louis Wicket (wil) ff49527fb5 [IMP] mail, *: convert ThreadPreview to use Channel instead of Thread
* = im_livechat, rating, test_mail_full

Part of task-2948676.

closes odoo/odoo#99342

Related: odoo/enterprise#30921
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2022-09-05 16:53:52 +02:00
Louis Wicket (wil) 9beb2b13d3 [MOV] mail, *: rename ThreadPreviewView files to ChannelPreviewView
Part of task-2948676.
* = im_livechat, rating, test_mail_full

Part-of: odoo/odoo#99342
2022-09-05 16:53:52 +02:00