From 410ab5ae96edeed20ae80159fcd170c3879e897e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexandre=20K=C3=BChn?= Date: Wed, 2 Nov 2022 11:41:24 +0000 Subject: [PATCH] [IMP] mail, *: define template in models MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit *: snailmail, website_livechat This commit adds definition of component template in the models. This allows not defining JS of component for most view models. Task-3053061 closes odoo/odoo#104641 Related: odoo/enterprise#33491 Signed-off-by: Sébastien Theys (seb) --- .../activity_button_view.js | 26 ------- .../activity_list_view/activity_list_view.js | 20 ----- .../activity_list_view_item.js | 20 ----- .../src/components/activity/activity.js | 35 --------- .../components/activity_box/activity_box.js | 23 ------ .../activity_mark_done_popover_content.js | 33 -------- .../attachment_box/attachment_box.js | 36 --------- .../attachment_card/attachment_card.js | 23 ------ .../attachment_delete_confirm.js | 31 -------- .../attachment_image/attachment_image.js | 23 ------ .../attachment_list/attachment_list.js | 23 ------ .../autocomplete_input_view.js | 77 ------------------- .../call_action_list/call_action_list.js | 32 -------- .../call_demo_view/call_demo_view.js | 32 -------- .../call_invite_request_popup.js | 27 ------- .../call_main_view/call_main_view.js | 44 ----------- .../call_option_menu/call_option_menu.js | 32 -------- .../call_participant_card.js | 36 --------- ...l_participant_card_popover_content_view.js | 23 ------ .../call_participant_video.js | 38 --------- .../call_settings_menu/call_settings_menu.js | 23 ------ .../call_sidebar_view/call_sidebar_view.js | 26 ------- .../src/components/call_view/call_view.js | 29 ------- .../channel_invitation_form.js | 33 -------- ...nnel_invitation_form_selectable_partner.js | 23 ------ ...hannel_invitation_form_selected_partner.js | 23 ------ .../channel_member/channel_member.js | 25 ------ .../channel_member_list.js | 23 ------ .../channel_member_list_category.js | 23 ------ .../channel_preview_view.js | 32 -------- .../chat_window_header/chat_window_header.js | 23 ------ .../chat_window_hidden_menu.js | 36 --------- .../chat_window_hidden_menu_item.js | 23 ------ .../chatter_topbar/chatter_topbar.js | 23 ------ .../src/components/composer/composer.js | 38 --------- .../composer_suggested_recipient_list.js | 27 ------- .../composer_suggestion_list_view.js | 27 ------- .../composer_suggestion_view.js | 38 --------- .../composer_text_input.js | 41 ---------- .../delete_message_confirm.js | 32 -------- .../discuss_mobile_mailbox_selection.js | 23 ------ .../discuss_mobile_mailbox_selection_item.js | 23 ------ .../discuss_sidebar/discuss_sidebar.js | 34 -------- .../discuss_sidebar_category.js | 22 ------ .../discuss_sidebar_category_item.js | 23 ------ .../discuss_sidebar_mailbox.js | 23 ------ .../src/components/drop_zone/drop_zone.js | 27 ------- .../emoji_category_bar_view.js | 21 ----- .../emoji_category_view.js | 21 ----- .../emoji_grid_item_view.js | 21 ----- .../emoji_grid_loading_screen.js | 21 ----- .../emoji_grid_row_view.js | 21 ----- .../emoji_grid_search_no_content_view.js | 21 ----- .../emoji_grid_section_view.js | 21 ----- .../emoji_grid_view/emoji_grid_view.js | 30 -------- .../emoji_picker_header_action_list_view.js | 23 ------ .../emoji_picker_header_action_view.js | 23 ------ .../emoji_picker_header_view.js | 23 ------ .../emoji_picker_view/emoji_picker_view.js | 25 ------ .../emoji_search_bar_view.js | 33 -------- .../src/components/emoji_view/emoji_view.js | 21 ----- .../components/follow_button/follow_button.js | 27 ------- .../src/components/follower/follower.js | 21 ----- .../follower_list_menu/follower_list_menu.js | 36 --------- .../follower_subtype/follower_subtype.js | 27 ------- .../follower_subtype_list.js | 36 --------- .../link_preview_aside_view.js | 23 ------ .../link_preview_card_view.js | 23 ------ .../link_preview_delete_confirm_view.js | 32 -------- .../link_preview_image_view.js | 23 ------ .../link_preview_list_view.js | 23 ------ .../link_preview_video_view.js | 23 ------ .../components/mail_template/mail_template.js | 27 ------- .../static/src/components/message/message.js | 38 --------- .../message_action_list.js | 23 ------ .../message_action_view.js | 32 -------- .../message_author_prefix.js | 23 ------ .../message_in_reply_to_view.js | 22 ------ .../message_notification_popover_content.js | 23 ------ .../message_reaction_group.js | 20 ----- .../message_seen_indicator.js | 26 ------- .../messaging_menu_tab/messaging_menu_tab.js | 23 ------ .../mobile_messaging_navbar.js | 23 ------ .../notification_group/notification_group.js | 36 --------- .../notification_list/notification_list.js | 23 ------ .../notification_message_view.js | 34 -------- .../notification_request.js | 23 ------ .../persona_im_status_icon.js | 23 ------ .../components/popover_view/popover_view.js | 42 ---------- .../src/components/thread_icon/thread_icon.js | 23 ------ .../thread_textual_typing_status.js | 23 ------ .../thread_typing_icon/thread_typing_icon.js | 23 ------ .../src/components/thread_view/thread_view.js | 27 ------- .../thread_view_topbar/thread_view_topbar.js | 41 ---------- .../components/welcome_view/welcome_view.js | 34 -------- addons/mail/static/src/model/model_core.js | 16 +++- addons/mail/static/src/model/model_manager.js | 29 +++++++ .../static/src/models/activity_box_view.js | 2 + .../static/src/models/activity_button_view.js | 6 ++ .../static/src/models/activity_list_view.js | 2 + .../src/models/activity_list_view_item.js | 2 + ...activity_mark_done_popover_content_view.js | 9 +++ .../mail/static/src/models/activity_view.js | 6 ++ .../static/src/models/attachment_box_view.js | 6 ++ .../mail/static/src/models/attachment_card.js | 2 + .../models/attachment_delete_confirm_view.js | 6 ++ .../static/src/models/attachment_image.js | 2 + .../mail/static/src/models/attachment_list.js | 2 + .../src/models/autocomplete_input_view.js | 49 ++++++++++++ .../src/models/call_action_list_view.js | 6 ++ .../mail/static/src/models/call_demo_view.js | 7 ++ .../src/models/call_invite_request_popup.js | 2 + .../mail/static/src/models/call_main_view.js | 17 ++++ .../static/src/models/call_option_menu.js | 6 ++ .../src/models/call_participant_card.js | 6 ++ ...l_participant_card_popover_content_view.js | 2 + .../src/models/call_participant_video_view.js | 8 ++ .../static/src/models/call_settings_menu.js | 2 + .../static/src/models/call_sidebar_view.js | 2 + addons/mail/static/src/models/call_view.js | 2 + .../src/models/channel_invitation_form.js | 10 +++ ...invitation_form_selectable_partner_view.js | 2 + ...l_invitation_form_selected_partner_view.js | 2 + .../channel_member_list_category_view.js | 1 + .../src/models/channel_member_list_view.js | 2 + .../static/src/models/channel_member_view.js | 2 + .../static/src/models/channel_preview_view.js | 6 ++ .../src/models/chat_window_header_view.js | 2 + .../chat_window_hidden_menu_item_view.js | 2 + .../models/chat_window_hidden_menu_view.js | 10 +++ .../mail/static/src/models/chatter_topbar.js | 2 + .../composer_suggested_recipient_list_view.js | 2 + .../models/composer_suggestion_list_view.js | 2 + .../src/models/composer_suggestion_view.js | 8 ++ .../src/models/composer_text_input_view.js | 15 ++++ .../mail/static/src/models/composer_view.js | 8 ++ .../src/models/delete_message_confirm_view.js | 6 ++ ...cuss_mobile_mailbox_selection_item_view.js | 2 + .../discuss_mobile_mailbox_selection_view.js | 2 + .../src/models/discuss_sidebar_category.js | 2 + .../models/discuss_sidebar_category_item.js | 2 + .../models/discuss_sidebar_mailbox_view.js | 2 + .../static/src/models/discuss_sidebar_view.js | 8 ++ .../mail/static/src/models/drop_zone_view.js | 2 + .../src/models/emoji_category_bar_view.js | 2 + .../static/src/models/emoji_category_view.js | 2 + .../static/src/models/emoji_grid_item_view.js | 2 + .../src/models/emoji_grid_loading_screen.js | 2 + .../static/src/models/emoji_grid_row_view.js | 2 + ...s => emoji_grid_search_no_content_view.js} | 4 +- .../src/models/emoji_grid_section_view.js | 2 + .../mail/static/src/models/emoji_grid_view.js | 12 ++- .../emoji_picker_header_action_list_view.js | 2 + .../models/emoji_picker_header_action_view.js | 2 + .../src/models/emoji_picker_header_view.js | 2 + .../static/src/models/emoji_picker_view.js | 6 ++ .../src/models/emoji_search_bar_view.js | 8 ++ addons/mail/static/src/models/emoji_view.js | 2 + .../static/src/models/follow_button_view.js | 2 + .../src/models/follower_list_menu_view.js | 6 ++ .../src/models/follower_subtype_list.js | 6 ++ .../src/models/follower_subtype_view.js | 2 + .../mail/static/src/models/follower_view.js | 2 + .../src/models/link_preview_aside_view.js | 2 + .../src/models/link_preview_card_view.js | 2 + .../link_preview_delete_confirm_view.js | 6 ++ .../src/models/link_preview_image_view.js | 2 + .../src/models/link_preview_list_view.js | 2 + .../src/models/link_preview_video_view.js | 2 + .../static/src/models/mail_template_view.js | 2 + .../static/src/models/message_action_list.js | 2 + .../static/src/models/message_action_view.js | 6 ++ .../src/models/message_author_prefix_view.js | 2 + .../src/models/message_in_reply_to_view.js | 2 + ...ssage_notification_popover_content_view.js | 2 + .../src/models/message_reaction_group.js | 2 + .../src/models/message_seen_indicator_view.js | 2 + addons/mail/static/src/models/message_view.js | 12 +++ .../src/models/messaging_menu_tab_view.js | 2 + .../models/mobile_messaging_navbar_view.js | 2 + .../src/models/notification_group_view.js | 6 ++ .../src/models/notification_list_view.js | 2 + ...n_view.js => notification_message_view.js} | 8 ++ .../src/models/notification_request_view.js | 2 + .../src/models/persona_im_status_icon_view.js | 2 + addons/mail/static/src/models/popover_view.js | 16 ++++ .../static/src/models/thread_icon_view.js | 2 + .../thread_textual_typing_status_view.js | 2 + .../src/models/thread_typing_icon_view.js | 2 + addons/mail/static/src/models/thread_view.js | 2 + .../static/src/models/thread_view_topbar.js | 11 +++ addons/mail/static/src/models/welcome_view.js | 8 ++ .../static/src/utils/messaging_component.js | 6 +- .../components/discuss_tests.js | 4 +- .../components/messaging_menu_tests.js | 5 +- .../widgets/form_renderer_tests.js | 10 ++- addons/snailmail/__manifest__.py | 1 - .../snailmail_error/snailmail_error.js | 31 -------- ...lmail_notification_popover_content_view.js | 24 ------ .../static/src/models/snailmail_error_view.js | 6 ++ ...lmail_notification_popover_content_view.js | 2 + addons/website_livechat/__manifest__.py | 1 - .../visitor_banner/visitor_banner.js | 23 ------ .../static/src/models/visitor_banner_view.js | 2 + 204 files changed, 506 insertions(+), 2721 deletions(-) delete mode 100644 addons/mail/static/src/backend_components/activity_button_view/activity_button_view.js delete mode 100644 addons/mail/static/src/backend_components/activity_list_view/activity_list_view.js delete mode 100644 addons/mail/static/src/backend_components/activity_list_view_item/activity_list_view_item.js delete mode 100644 addons/mail/static/src/components/activity/activity.js delete mode 100644 addons/mail/static/src/components/activity_box/activity_box.js delete mode 100644 addons/mail/static/src/components/activity_mark_done_popover_content/activity_mark_done_popover_content.js delete mode 100644 addons/mail/static/src/components/attachment_box/attachment_box.js delete mode 100644 addons/mail/static/src/components/attachment_card/attachment_card.js delete mode 100644 addons/mail/static/src/components/attachment_delete_confirm/attachment_delete_confirm.js delete mode 100644 addons/mail/static/src/components/attachment_image/attachment_image.js delete mode 100644 addons/mail/static/src/components/attachment_list/attachment_list.js delete mode 100644 addons/mail/static/src/components/autocomplete_input_view/autocomplete_input_view.js delete mode 100644 addons/mail/static/src/components/call_action_list/call_action_list.js delete mode 100644 addons/mail/static/src/components/call_demo_view/call_demo_view.js delete mode 100644 addons/mail/static/src/components/call_invite_request_popup/call_invite_request_popup.js delete mode 100644 addons/mail/static/src/components/call_main_view/call_main_view.js delete mode 100644 addons/mail/static/src/components/call_option_menu/call_option_menu.js delete mode 100644 addons/mail/static/src/components/call_participant_card/call_participant_card.js delete mode 100644 addons/mail/static/src/components/call_participant_card_popover_content_view/call_participant_card_popover_content_view.js delete mode 100644 addons/mail/static/src/components/call_participant_video/call_participant_video.js delete mode 100644 addons/mail/static/src/components/call_settings_menu/call_settings_menu.js delete mode 100644 addons/mail/static/src/components/call_sidebar_view/call_sidebar_view.js delete mode 100644 addons/mail/static/src/components/call_view/call_view.js delete mode 100644 addons/mail/static/src/components/channel_invitation_form/channel_invitation_form.js delete mode 100644 addons/mail/static/src/components/channel_invitation_form_selectable_partner/channel_invitation_form_selectable_partner.js delete mode 100644 addons/mail/static/src/components/channel_invitation_form_selected_partner/channel_invitation_form_selected_partner.js delete mode 100644 addons/mail/static/src/components/channel_member/channel_member.js delete mode 100644 addons/mail/static/src/components/channel_member_list/channel_member_list.js delete mode 100644 addons/mail/static/src/components/channel_member_list_category/channel_member_list_category.js delete mode 100644 addons/mail/static/src/components/channel_preview_view/channel_preview_view.js delete mode 100644 addons/mail/static/src/components/chat_window_header/chat_window_header.js delete mode 100644 addons/mail/static/src/components/chat_window_hidden_menu/chat_window_hidden_menu.js delete mode 100644 addons/mail/static/src/components/chat_window_hidden_menu_item/chat_window_hidden_menu_item.js delete mode 100644 addons/mail/static/src/components/chatter_topbar/chatter_topbar.js delete mode 100644 addons/mail/static/src/components/composer/composer.js delete mode 100644 addons/mail/static/src/components/composer_suggested_recipient_list/composer_suggested_recipient_list.js delete mode 100644 addons/mail/static/src/components/composer_suggestion_list_view/composer_suggestion_list_view.js delete mode 100644 addons/mail/static/src/components/composer_suggestion_view/composer_suggestion_view.js delete mode 100644 addons/mail/static/src/components/composer_text_input/composer_text_input.js delete mode 100644 addons/mail/static/src/components/delete_message_confirm/delete_message_confirm.js delete mode 100644 addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js delete mode 100644 addons/mail/static/src/components/discuss_mobile_mailbox_selection_item/discuss_mobile_mailbox_selection_item.js delete mode 100644 addons/mail/static/src/components/discuss_sidebar/discuss_sidebar.js delete mode 100644 addons/mail/static/src/components/discuss_sidebar_category/discuss_sidebar_category.js delete mode 100644 addons/mail/static/src/components/discuss_sidebar_category_item/discuss_sidebar_category_item.js delete mode 100644 addons/mail/static/src/components/discuss_sidebar_mailbox/discuss_sidebar_mailbox.js delete mode 100644 addons/mail/static/src/components/drop_zone/drop_zone.js delete mode 100644 addons/mail/static/src/components/emoji_category_bar_view/emoji_category_bar_view.js delete mode 100644 addons/mail/static/src/components/emoji_category_view/emoji_category_view.js delete mode 100644 addons/mail/static/src/components/emoji_grid_item_view/emoji_grid_item_view.js delete mode 100644 addons/mail/static/src/components/emoji_grid_loading_screen/emoji_grid_loading_screen.js delete mode 100644 addons/mail/static/src/components/emoji_grid_row_view/emoji_grid_row_view.js delete mode 100644 addons/mail/static/src/components/emoji_grid_search_no_content_view/emoji_grid_search_no_content_view.js delete mode 100644 addons/mail/static/src/components/emoji_grid_section_view/emoji_grid_section_view.js delete mode 100644 addons/mail/static/src/components/emoji_grid_view/emoji_grid_view.js delete mode 100644 addons/mail/static/src/components/emoji_picker_header_action_list_view/emoji_picker_header_action_list_view.js delete mode 100644 addons/mail/static/src/components/emoji_picker_header_action_view/emoji_picker_header_action_view.js delete mode 100644 addons/mail/static/src/components/emoji_picker_header_view/emoji_picker_header_view.js delete mode 100644 addons/mail/static/src/components/emoji_picker_view/emoji_picker_view.js delete mode 100644 addons/mail/static/src/components/emoji_search_bar_view/emoji_search_bar_view.js delete mode 100644 addons/mail/static/src/components/emoji_view/emoji_view.js delete mode 100644 addons/mail/static/src/components/follow_button/follow_button.js delete mode 100644 addons/mail/static/src/components/follower/follower.js delete mode 100644 addons/mail/static/src/components/follower_list_menu/follower_list_menu.js delete mode 100644 addons/mail/static/src/components/follower_subtype/follower_subtype.js delete mode 100644 addons/mail/static/src/components/follower_subtype_list/follower_subtype_list.js delete mode 100644 addons/mail/static/src/components/link_preview_aside_view/link_preview_aside_view.js delete mode 100644 addons/mail/static/src/components/link_preview_card_view/link_preview_card_view.js delete mode 100644 addons/mail/static/src/components/link_preview_delete_confirm_view/link_preview_delete_confirm_view.js delete mode 100644 addons/mail/static/src/components/link_preview_image_view/link_preview_image_view.js delete mode 100644 addons/mail/static/src/components/link_preview_list_view/link_preview_list_view.js delete mode 100644 addons/mail/static/src/components/link_preview_video_view/link_preview_video_view.js delete mode 100644 addons/mail/static/src/components/mail_template/mail_template.js delete mode 100644 addons/mail/static/src/components/message/message.js delete mode 100644 addons/mail/static/src/components/message_action_list/message_action_list.js delete mode 100644 addons/mail/static/src/components/message_action_view/message_action_view.js delete mode 100644 addons/mail/static/src/components/message_author_prefix/message_author_prefix.js delete mode 100644 addons/mail/static/src/components/message_in_reply_to_view/message_in_reply_to_view.js delete mode 100644 addons/mail/static/src/components/message_notification_popover_content/message_notification_popover_content.js delete mode 100644 addons/mail/static/src/components/message_reaction_group/message_reaction_group.js delete mode 100644 addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.js delete mode 100644 addons/mail/static/src/components/messaging_menu_tab/messaging_menu_tab.js delete mode 100644 addons/mail/static/src/components/mobile_messaging_navbar/mobile_messaging_navbar.js delete mode 100644 addons/mail/static/src/components/notification_group/notification_group.js delete mode 100644 addons/mail/static/src/components/notification_list/notification_list.js delete mode 100644 addons/mail/static/src/components/notification_message_view/notification_message_view.js delete mode 100644 addons/mail/static/src/components/notification_request/notification_request.js delete mode 100644 addons/mail/static/src/components/persona_im_status_icon/persona_im_status_icon.js delete mode 100644 addons/mail/static/src/components/popover_view/popover_view.js delete mode 100644 addons/mail/static/src/components/thread_icon/thread_icon.js delete mode 100644 addons/mail/static/src/components/thread_textual_typing_status/thread_textual_typing_status.js delete mode 100644 addons/mail/static/src/components/thread_typing_icon/thread_typing_icon.js delete mode 100644 addons/mail/static/src/components/thread_view/thread_view.js delete mode 100644 addons/mail/static/src/components/thread_view_topbar/thread_view_topbar.js delete mode 100644 addons/mail/static/src/components/welcome_view/welcome_view.js rename addons/mail/static/src/models/{emoji_grid_no_search_content_view.js => emoji_grid_search_no_content_view.js} (75%) rename addons/mail/static/src/models/{message_notification_view.js => notification_message_view.js} (71%) delete mode 100644 addons/snailmail/static/src/components/snailmail_error/snailmail_error.js delete mode 100644 addons/snailmail/static/src/components/snailmail_notification_popover_content_view/snailmail_notification_popover_content_view.js delete mode 100644 addons/website_livechat/static/src/components/visitor_banner/visitor_banner.js diff --git a/addons/mail/static/src/backend_components/activity_button_view/activity_button_view.js b/addons/mail/static/src/backend_components/activity_button_view/activity_button_view.js deleted file mode 100644 index 025dbc37afc..00000000000 --- a/addons/mail/static/src/backend_components/activity_button_view/activity_button_view.js +++ /dev/null @@ -1,26 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ActivityButtonView extends Component { - - setup() { - super.setup(); - useRefToModel({ fieldName: 'buttonRef', refName: 'button' }); - } - - get activityButtonView() { - return this.props.record; - } - -} - -Object.assign(ActivityButtonView, { - props: { record: Object }, - template: 'mail.ActivityButtonView', -}); - -registerMessagingComponent(ActivityButtonView); diff --git a/addons/mail/static/src/backend_components/activity_list_view/activity_list_view.js b/addons/mail/static/src/backend_components/activity_list_view/activity_list_view.js deleted file mode 100644 index d08127b6adb..00000000000 --- a/addons/mail/static/src/backend_components/activity_list_view/activity_list_view.js +++ /dev/null @@ -1,20 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ActivityListView extends Component { - - get activityListView() { - return this.props.record; - } - -} - -Object.assign(ActivityListView, { - props: { record: Object }, - template: 'mail.ActivityListView', -}); - -registerMessagingComponent(ActivityListView); diff --git a/addons/mail/static/src/backend_components/activity_list_view_item/activity_list_view_item.js b/addons/mail/static/src/backend_components/activity_list_view_item/activity_list_view_item.js deleted file mode 100644 index 5fd554a459c..00000000000 --- a/addons/mail/static/src/backend_components/activity_list_view_item/activity_list_view_item.js +++ /dev/null @@ -1,20 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ActivityListViewItem extends Component { - - get activityListViewItem() { - return this.props.record; - } - -} - -Object.assign(ActivityListViewItem, { - props: { record: Object }, - template: 'mail.ActivityListViewItem', -}); - -registerMessagingComponent(ActivityListViewItem); diff --git a/addons/mail/static/src/components/activity/activity.js b/addons/mail/static/src/components/activity/activity.js deleted file mode 100644 index d60ae074d46..00000000000 --- a/addons/mail/static/src/components/activity/activity.js +++ /dev/null @@ -1,35 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import Popover from "web.Popover"; - -import { Component } from '@odoo/owl'; - -export class ActivityView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'markDoneButtonRef', refName: 'markDoneButton', }); - } - - /** - * @returns {ActivityView} - */ - get activityView() { - return this.props.record; - } - -} - -Object.assign(ActivityView, { - props: { record: Object }, - template: 'mail.ActivityView', - components: { Popover }, -}); - -registerMessagingComponent(ActivityView); diff --git a/addons/mail/static/src/components/activity_box/activity_box.js b/addons/mail/static/src/components/activity_box/activity_box.js deleted file mode 100644 index 95c992e5708..00000000000 --- a/addons/mail/static/src/components/activity_box/activity_box.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ActivityBoxView extends Component { - - /** - * @returns {ActivityBoxView} - */ - get activityBoxView() { - return this.props.record; - } - -} - -Object.assign(ActivityBoxView, { - props: { record: Object }, - template: 'mail.ActivityBoxView', -}); - -registerMessagingComponent(ActivityBoxView); diff --git a/addons/mail/static/src/components/activity_mark_done_popover_content/activity_mark_done_popover_content.js b/addons/mail/static/src/components/activity_mark_done_popover_content/activity_mark_done_popover_content.js deleted file mode 100644 index 7a35fd17ce5..00000000000 --- a/addons/mail/static/src/components/activity_mark_done_popover_content/activity_mark_done_popover_content.js +++ /dev/null @@ -1,33 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component, onMounted } from '@odoo/owl'; - -export class ActivityMarkDonePopoverContentView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'feedbackTextareaRef', refName: 'feedbackTextarea' }); - onMounted(this.activityMarkDonePopoverContentView.onMounted); - } - - /** - * @returns {ActivityMarkDonePopoverContentView} - */ - get activityMarkDonePopoverContentView() { - return this.props.record; - } - -} - -Object.assign(ActivityMarkDonePopoverContentView, { - props: { record: Object }, - template: 'mail.ActivityMarkDonePopoverContentView', -}); - -registerMessagingComponent(ActivityMarkDonePopoverContentView); diff --git a/addons/mail/static/src/components/attachment_box/attachment_box.js b/addons/mail/static/src/components/attachment_box/attachment_box.js deleted file mode 100644 index 682bf8e604c..00000000000 --- a/addons/mail/static/src/components/attachment_box/attachment_box.js +++ /dev/null @@ -1,36 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class AttachmentBoxView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - } - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {AttachmentBoxView|undefined} - */ - get attachmentBoxView() { - return this.props.record; - } - -} - -Object.assign(AttachmentBoxView, { - props: { record: Object }, - template: 'mail.AttachmentBoxView', -}); - -registerMessagingComponent(AttachmentBoxView); diff --git a/addons/mail/static/src/components/attachment_card/attachment_card.js b/addons/mail/static/src/components/attachment_card/attachment_card.js deleted file mode 100644 index 3d94c0b0d04..00000000000 --- a/addons/mail/static/src/components/attachment_card/attachment_card.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class AttachmentCard extends Component { - - /** - * @returns {AttachmentCard} - */ - get attachmentCard() { - return this.props.record; - } - -} - -Object.assign(AttachmentCard, { - props: { record: Object }, - template: 'mail.AttachmentCard', -}); - -registerMessagingComponent(AttachmentCard); diff --git a/addons/mail/static/src/components/attachment_delete_confirm/attachment_delete_confirm.js b/addons/mail/static/src/components/attachment_delete_confirm/attachment_delete_confirm.js deleted file mode 100644 index e3c8657e422..00000000000 --- a/addons/mail/static/src/components/attachment_delete_confirm/attachment_delete_confirm.js +++ /dev/null @@ -1,31 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class AttachmentDeleteConfirmView extends Component { - - /** - * @override - */ - setup() { - useComponentToModel({ fieldName: 'component' }); - } - - /** - * @returns {AttachmentDeleteConfirmView} - */ - get attachmentDeleteConfirmView() { - return this.props.record; - } - -} - -Object.assign(AttachmentDeleteConfirmView, { - props: { record: Object }, - template: 'mail.AttachmentDeleteConfirmView', -}); - -registerMessagingComponent(AttachmentDeleteConfirmView); diff --git a/addons/mail/static/src/components/attachment_image/attachment_image.js b/addons/mail/static/src/components/attachment_image/attachment_image.js deleted file mode 100644 index 037a9f4b9f3..00000000000 --- a/addons/mail/static/src/components/attachment_image/attachment_image.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class AttachmentImage extends Component { - - /** - * @returns {AttachmentImage} - */ - get attachmentImage() { - return this.props.record; - } - -} - -Object.assign(AttachmentImage, { - props: { record: Object }, - template: 'mail.AttachmentImage', -}); - -registerMessagingComponent(AttachmentImage); diff --git a/addons/mail/static/src/components/attachment_list/attachment_list.js b/addons/mail/static/src/components/attachment_list/attachment_list.js deleted file mode 100644 index d5f07c1541e..00000000000 --- a/addons/mail/static/src/components/attachment_list/attachment_list.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class AttachmentList extends Component { - - /** - * @returns {AttachmentList} - */ - get attachmentList() { - return this.props.record; - } - -} - -Object.assign(AttachmentList, { - props: { record: Object }, - template: 'mail.AttachmentList', -}); - -registerMessagingComponent(AttachmentList); diff --git a/addons/mail/static/src/components/autocomplete_input_view/autocomplete_input_view.js b/addons/mail/static/src/components/autocomplete_input_view/autocomplete_input_view.js deleted file mode 100644 index bbf8c10744e..00000000000 --- a/addons/mail/static/src/components/autocomplete_input_view/autocomplete_input_view.js +++ /dev/null @@ -1,77 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component, onMounted, onWillUnmount } from '@odoo/owl'; - -export class AutocompleteInputView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - onMounted(() => this._mounted()); - onWillUnmount(() => this._willUnmount()); - } - - _mounted() { - if (!this.root.el) { - return; - } - if (this.autocompleteInputView.isFocusOnMount) { - this.root.el.focus(); - } - - const args = { - autoFocus: true, - select: (ev, ui) => { - if (this.autocompleteInputView) { - this.autocompleteInputView.onSelect(ev, ui); - } - }, - source: (req, res) => { - if (this.autocompleteInputView) { - this.autocompleteInputView.onSource(req, res); - } - }, - html: this.autocompleteInputView.isHtml, - }; - - if (this.autocompleteInputView.customClass) { - args.classes = { 'ui-autocomplete': this.autocompleteInputView.customClass }; - } - - const autoCompleteElem = $(this.root.el).autocomplete(args); - // Resize the autocomplete dropdown options to handle the long strings - // By setting the width of dropdown based on the width of the input element. - autoCompleteElem.data('ui-autocomplete')._resizeMenu = function () { - const ul = this.menu.element; - ul.outerWidth(this.element.outerWidth()); - }; - } - - _willUnmount() { - if (!this.root.el) { - return; - } - $(this.root.el).autocomplete('destroy'); - } - - /** - * @returns {AutocompleteInputView} - */ - get autocompleteInputView() { - return this.props.record; - } - -} - -Object.assign(AutocompleteInputView, { - props: { record: Object }, - template: 'mail.AutocompleteInputView', -}); - -registerMessagingComponent(AutocompleteInputView); diff --git a/addons/mail/static/src/components/call_action_list/call_action_list.js b/addons/mail/static/src/components/call_action_list/call_action_list.js deleted file mode 100644 index be6e2ca15c6..00000000000 --- a/addons/mail/static/src/components/call_action_list/call_action_list.js +++ /dev/null @@ -1,32 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class CallActionListView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'moreButtonRef', refName: 'moreButton' }); - } - - /** - * @returns {CallActionListView} - */ - get callActionListView() { - return this.props.record; - } - -} - -Object.assign(CallActionListView, { - props: { record: Object }, - template: 'mail.CallActionListView', -}); - -registerMessagingComponent(CallActionListView); diff --git a/addons/mail/static/src/components/call_demo_view/call_demo_view.js b/addons/mail/static/src/components/call_demo_view/call_demo_view.js deleted file mode 100644 index 19fd5eb27ff..00000000000 --- a/addons/mail/static/src/components/call_demo_view/call_demo_view.js +++ /dev/null @@ -1,32 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class CallDemoView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'audioRef', refName: 'audio' }); - useRefToModel({ fieldName: 'videoRef', refName: 'video' }); - } - - /** - * @returns {CallDemoView} - */ - get callDemoView() { - return this.props.record; - } -} - -Object.assign(CallDemoView, { - props: { record: Object }, - template: 'mail.CallDemoView', -}); - -registerMessagingComponent(CallDemoView); diff --git a/addons/mail/static/src/components/call_invite_request_popup/call_invite_request_popup.js b/addons/mail/static/src/components/call_invite_request_popup/call_invite_request_popup.js deleted file mode 100644 index 3c8eaa199de..00000000000 --- a/addons/mail/static/src/components/call_invite_request_popup/call_invite_request_popup.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class CallInviteRequestPopup extends Component { - - //-------------------------------------------------------------------------- - // Getters / Setters - //-------------------------------------------------------------------------- - - /** - * @returns {CallInviteRequestPopup} - */ - get callInviteRequestPopup() { - return this.props.record; - } - -} - -Object.assign(CallInviteRequestPopup, { - props: { record: Object }, - template: 'mail.CallInviteRequestPopup', -}); - -registerMessagingComponent(CallInviteRequestPopup); diff --git a/addons/mail/static/src/components/call_main_view/call_main_view.js b/addons/mail/static/src/components/call_main_view/call_main_view.js deleted file mode 100644 index ce16bf38241..00000000000 --- a/addons/mail/static/src/components/call_main_view/call_main_view.js +++ /dev/null @@ -1,44 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component, onMounted, onWillUnmount } from '@odoo/owl'; - -export class CallMainView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - useRefToModel({ fieldName: 'tileContainerRef', refName: 'tileContainer', }); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - onMounted(() => { - this.resizeObserver = new ResizeObserver(() => this.callMainView.onResize()); - this.resizeObserver.observe(this.root.el); - }); - onWillUnmount(() => this.resizeObserver.disconnect()); - } - - //-------------------------------------------------------------------------- - // Getters / Setters - //-------------------------------------------------------------------------- - - /** - * @returns {CallMainView} - */ - get callMainView() { - return this.props.record; - } -} - -Object.assign(CallMainView, { - props: { record: Object }, - template: 'mail.CallMainView', -}); - -registerMessagingComponent(CallMainView); diff --git a/addons/mail/static/src/components/call_option_menu/call_option_menu.js b/addons/mail/static/src/components/call_option_menu/call_option_menu.js deleted file mode 100644 index 84e8b8f5e14..00000000000 --- a/addons/mail/static/src/components/call_option_menu/call_option_menu.js +++ /dev/null @@ -1,32 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class CallOptionMenu extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - } - - /** - * @returns {CallOptionMenu} - */ - get callOptionMenu() { - return this.props.record; - } - -} - -Object.assign(CallOptionMenu, { - props: { record: Object }, - template: 'mail.CallOptionMenu', -}); - -registerMessagingComponent(CallOptionMenu); diff --git a/addons/mail/static/src/components/call_participant_card/call_participant_card.js b/addons/mail/static/src/components/call_participant_card/call_participant_card.js deleted file mode 100644 index 066893bbf01..00000000000 --- a/addons/mail/static/src/components/call_participant_card/call_participant_card.js +++ /dev/null @@ -1,36 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class CallParticipantCard extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'volumeMenuAnchorRef', refName: 'volumeMenuAnchor' }); - } - - //-------------------------------------------------------------------------- - // Getters / Setters - //-------------------------------------------------------------------------- - - /** - * @returns {Thread|undefined} - */ - get callParticipantCard() { - return this.props.record; - } - -} - -Object.assign(CallParticipantCard, { - props: { record: Object }, - template: 'mail.CallParticipantCard', -}); - -registerMessagingComponent(CallParticipantCard); diff --git a/addons/mail/static/src/components/call_participant_card_popover_content_view/call_participant_card_popover_content_view.js b/addons/mail/static/src/components/call_participant_card_popover_content_view/call_participant_card_popover_content_view.js deleted file mode 100644 index 31e94870fbe..00000000000 --- a/addons/mail/static/src/components/call_participant_card_popover_content_view/call_participant_card_popover_content_view.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class CallParticipantCardPopoverContentView extends Component { - - /** - * @returns {CallParticipantCardPopoverContentView} - */ - get callParticipantCardPopoverContentView() { - return this.props.record; - } - -} - -Object.assign(CallParticipantCardPopoverContentView, { - props: { record: Object }, - template: 'mail.CallParticipantCardPopoverContentView', -}); - -registerMessagingComponent(CallParticipantCardPopoverContentView); diff --git a/addons/mail/static/src/components/call_participant_video/call_participant_video.js b/addons/mail/static/src/components/call_participant_video/call_participant_video.js deleted file mode 100644 index 1bef92f9464..00000000000 --- a/addons/mail/static/src/components/call_participant_video/call_participant_video.js +++ /dev/null @@ -1,38 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class CallParticipantVideoView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - //-------------------------------------------------------------------------- - // Getters / Setters - //-------------------------------------------------------------------------- - - /** - * @returns {CallParticipantVideoView} - */ - get callParticipantVideoView() { - return this.props.record; - } - -} - -Object.assign(CallParticipantVideoView, { - props: { record: Object }, - template: 'mail.CallParticipantVideoView', -}); - -registerMessagingComponent(CallParticipantVideoView); diff --git a/addons/mail/static/src/components/call_settings_menu/call_settings_menu.js b/addons/mail/static/src/components/call_settings_menu/call_settings_menu.js deleted file mode 100644 index 118eb543d0e..00000000000 --- a/addons/mail/static/src/components/call_settings_menu/call_settings_menu.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class CallSettingsMenu extends Component { - - /** - * @returns {CallSettingsMenu} - */ - get callSettingsMenu() { - return this.props.record; - } - -} - -Object.assign(CallSettingsMenu, { - props: { record: Object }, - template: 'mail.CallSettingsMenu', -}); - -registerMessagingComponent(CallSettingsMenu); diff --git a/addons/mail/static/src/components/call_sidebar_view/call_sidebar_view.js b/addons/mail/static/src/components/call_sidebar_view/call_sidebar_view.js deleted file mode 100644 index d8912a4e083..00000000000 --- a/addons/mail/static/src/components/call_sidebar_view/call_sidebar_view.js +++ /dev/null @@ -1,26 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class CallSidebarView extends Component { - - //-------------------------------------------------------------------------- - // Getters / Setters - //-------------------------------------------------------------------------- - - /** - * @returns {CallSidebarView} - */ - get callSidebarView() { - return this.props.record; - } -} - -Object.assign(CallSidebarView, { - props: { record: Object }, - template: 'mail.CallSidebarView', -}); - -registerMessagingComponent(CallSidebarView); diff --git a/addons/mail/static/src/components/call_view/call_view.js b/addons/mail/static/src/components/call_view/call_view.js deleted file mode 100644 index 1e91201a016..00000000000 --- a/addons/mail/static/src/components/call_view/call_view.js +++ /dev/null @@ -1,29 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -// TODO a nice-to-have would be a resize handle under the videos. - -export class CallView extends Component { - - //-------------------------------------------------------------------------- - // Getters / Setters - //-------------------------------------------------------------------------- - - /** - * @returns {CallView} - */ - get callView() { - return this.props.record; - } - -} - -Object.assign(CallView, { - props: { record: Object }, - template: 'mail.CallView', -}); - -registerMessagingComponent(CallView); diff --git a/addons/mail/static/src/components/channel_invitation_form/channel_invitation_form.js b/addons/mail/static/src/components/channel_invitation_form/channel_invitation_form.js deleted file mode 100644 index 68491c1e87a..00000000000 --- a/addons/mail/static/src/components/channel_invitation_form/channel_invitation_form.js +++ /dev/null @@ -1,33 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChannelInvitationForm extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - useRefToModel({ fieldName: 'searchInputRef', refName: 'searchInput' }); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - get channelInvitationForm() { - return this.props.record; - } - -} - -Object.assign(ChannelInvitationForm, { - props: { record: Object }, - template: 'mail.ChannelInvitationForm', -}); - -registerMessagingComponent(ChannelInvitationForm); diff --git a/addons/mail/static/src/components/channel_invitation_form_selectable_partner/channel_invitation_form_selectable_partner.js b/addons/mail/static/src/components/channel_invitation_form_selectable_partner/channel_invitation_form_selectable_partner.js deleted file mode 100644 index cc23f9ef4f9..00000000000 --- a/addons/mail/static/src/components/channel_invitation_form_selectable_partner/channel_invitation_form_selectable_partner.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChannelInvitationFormSelectablePartnerView extends Component { - - /** - * @returns {ChannelInvitationFormSelectablePartnerView} - */ - get channelInvitationFormSelectablePartnerView() { - return this.props.record; - } - -} - -Object.assign(ChannelInvitationFormSelectablePartnerView, { - props: { record: Object }, - template: 'mail.ChannelInvitationFormSelectablePartnerView', -}); - -registerMessagingComponent(ChannelInvitationFormSelectablePartnerView); diff --git a/addons/mail/static/src/components/channel_invitation_form_selected_partner/channel_invitation_form_selected_partner.js b/addons/mail/static/src/components/channel_invitation_form_selected_partner/channel_invitation_form_selected_partner.js deleted file mode 100644 index 8478f0542f5..00000000000 --- a/addons/mail/static/src/components/channel_invitation_form_selected_partner/channel_invitation_form_selected_partner.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChannelInvitationFormSelectedPartnerView extends Component { - - /** - * @returns {ChannelInvitationFormSelectedPartnerView} - */ - get channelInvitationFormSelectedPartnerView() { - return this.props.record; - } - -} - -Object.assign(ChannelInvitationFormSelectedPartnerView, { - props: { record: Object }, - template: 'mail.ChannelInvitationFormSelectedPartnerView', -}); - -registerMessagingComponent(ChannelInvitationFormSelectedPartnerView); diff --git a/addons/mail/static/src/components/channel_member/channel_member.js b/addons/mail/static/src/components/channel_member/channel_member.js deleted file mode 100644 index 2c49c9ddaa7..00000000000 --- a/addons/mail/static/src/components/channel_member/channel_member.js +++ /dev/null @@ -1,25 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChannelMemberView extends Component { - - /** - * @returns {ChannelMemberView} - */ - get channelMemberView() { - return this.props.record; - } - -} - -Object.assign(ChannelMemberView, { - props: { - record: Object, - }, - template: 'mail.ChannelMemberView', -}); - -registerMessagingComponent(ChannelMemberView); diff --git a/addons/mail/static/src/components/channel_member_list/channel_member_list.js b/addons/mail/static/src/components/channel_member_list/channel_member_list.js deleted file mode 100644 index 3d40e9b7665..00000000000 --- a/addons/mail/static/src/components/channel_member_list/channel_member_list.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChannelMemberListView extends Component { - - /** - * @returns {ChannelMemberListView} - */ - get channelMemberListView() { - return this.props.record; - } - -} - -Object.assign(ChannelMemberListView, { - props: { record: Object }, - template: 'mail.ChannelMemberListView', -}); - -registerMessagingComponent(ChannelMemberListView); diff --git a/addons/mail/static/src/components/channel_member_list_category/channel_member_list_category.js b/addons/mail/static/src/components/channel_member_list_category/channel_member_list_category.js deleted file mode 100644 index 9e5bb1decc7..00000000000 --- a/addons/mail/static/src/components/channel_member_list_category/channel_member_list_category.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChannelMemberListCategoryView extends Component { - - /** - * @returns {ChannelMemberListCategoryView} - */ - get record() { - return this.props.record; - } - -} - -Object.assign(ChannelMemberListCategoryView, { - props: { record: Object }, - template: 'mail.ChannelMemberListCategoryView', -}); - -registerMessagingComponent(ChannelMemberListCategoryView); diff --git a/addons/mail/static/src/components/channel_preview_view/channel_preview_view.js b/addons/mail/static/src/components/channel_preview_view/channel_preview_view.js deleted file mode 100644 index 7533b11b0e8..00000000000 --- a/addons/mail/static/src/components/channel_preview_view/channel_preview_view.js +++ /dev/null @@ -1,32 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChannelPreviewView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'markAsReadRef', refName: 'markAsRead' }); - } - - /** - * @returns {ChannelPreviewView} - */ - get channelPreviewView() { - return this.props.record; - } - -} - -Object.assign(ChannelPreviewView, { - props: { record: Object }, - template: 'mail.ChannelPreviewView', -}); - -registerMessagingComponent(ChannelPreviewView); diff --git a/addons/mail/static/src/components/chat_window_header/chat_window_header.js b/addons/mail/static/src/components/chat_window_header/chat_window_header.js deleted file mode 100644 index d818fc89f69..00000000000 --- a/addons/mail/static/src/components/chat_window_header/chat_window_header.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChatWindowHeaderView extends Component { - - /** - * @returns {ChatWindowHeaderView} - */ - get chatWindowHeaderView() { - return this.props.record; - } - -} - -Object.assign(ChatWindowHeaderView, { - props: { record: Object }, - template: 'mail.ChatWindowHeaderView', -}); - -registerMessagingComponent(ChatWindowHeaderView); diff --git a/addons/mail/static/src/components/chat_window_hidden_menu/chat_window_hidden_menu.js b/addons/mail/static/src/components/chat_window_hidden_menu/chat_window_hidden_menu.js deleted file mode 100644 index ff61dfd98fc..00000000000 --- a/addons/mail/static/src/components/chat_window_hidden_menu/chat_window_hidden_menu.js +++ /dev/null @@ -1,36 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChatWindowHiddenMenuView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - useRefToModel({ fieldName: 'listRef', refName: 'list' }); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - /** - * @returns {ChatWindowHiddenMenuView} - */ - get chatWindowHiddenMenuView() { - return this.props.record; - } - -} - -Object.assign(ChatWindowHiddenMenuView, { - props: { record: Object }, - template: 'mail.ChatWindowHiddenMenuView', -}); - -registerMessagingComponent(ChatWindowHiddenMenuView); diff --git a/addons/mail/static/src/components/chat_window_hidden_menu_item/chat_window_hidden_menu_item.js b/addons/mail/static/src/components/chat_window_hidden_menu_item/chat_window_hidden_menu_item.js deleted file mode 100644 index ac74f7a56b2..00000000000 --- a/addons/mail/static/src/components/chat_window_hidden_menu_item/chat_window_hidden_menu_item.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChatWindowHiddenMenuItemView extends Component { - - /** - * @returns {ChatWindowHiddenMenuItemView} - */ - get chatWindowHiddenMenuItemView() { - return this.props.record; - } - -} - -Object.assign(ChatWindowHiddenMenuItemView, { - props: { record: Object }, - template: 'mail.ChatWindowHiddenMenuItemView', -}); - -registerMessagingComponent(ChatWindowHiddenMenuItemView); diff --git a/addons/mail/static/src/components/chatter_topbar/chatter_topbar.js b/addons/mail/static/src/components/chatter_topbar/chatter_topbar.js deleted file mode 100644 index ffdc60d62be..00000000000 --- a/addons/mail/static/src/components/chatter_topbar/chatter_topbar.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ChatterTopbar extends Component { - - /** - * @returns {ChatterTopbar} - */ - get chatterTopbar() { - return this.props.record; - } - -} - -Object.assign(ChatterTopbar, { - props: { record: Object }, - template: 'mail.ChatterTopbar', -}); - -registerMessagingComponent(ChatterTopbar); diff --git a/addons/mail/static/src/components/composer/composer.js b/addons/mail/static/src/components/composer/composer.js deleted file mode 100644 index ebe67bb7a24..00000000000 --- a/addons/mail/static/src/components/composer/composer.js +++ /dev/null @@ -1,38 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ComposerView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - useRefToModel({ fieldName: 'buttonEmojisRef', refName: 'buttonEmojis' }); - } - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {ComposerView} - */ - get composerView() { - return this.props.record; - } - -} - -Object.assign(ComposerView, { - props: { record: Object }, - template: 'mail.ComposerView', -}); - -registerMessagingComponent(ComposerView); diff --git a/addons/mail/static/src/components/composer_suggested_recipient_list/composer_suggested_recipient_list.js b/addons/mail/static/src/components/composer_suggested_recipient_list/composer_suggested_recipient_list.js deleted file mode 100644 index aa1973b7574..00000000000 --- a/addons/mail/static/src/components/composer_suggested_recipient_list/composer_suggested_recipient_list.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ComposerSuggestedRecipientListView extends Component { - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {ComposerSuggestedRecipientListView} - */ - get composerSuggestedRecipientListView() { - return this.props.record; - } - -} - -Object.assign(ComposerSuggestedRecipientListView, { - props: { record: Object }, - template: 'mail.ComposerSuggestedRecipientListView', -}); - -registerMessagingComponent(ComposerSuggestedRecipientListView); diff --git a/addons/mail/static/src/components/composer_suggestion_list_view/composer_suggestion_list_view.js b/addons/mail/static/src/components/composer_suggestion_list_view/composer_suggestion_list_view.js deleted file mode 100644 index f28e572a9ce..00000000000 --- a/addons/mail/static/src/components/composer_suggestion_list_view/composer_suggestion_list_view.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ComposerSuggestionListView extends Component { - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {ComposerSuggestionListView} - */ - get composerSuggestionListView() { - return this.props.record; - } - -} - -Object.assign(ComposerSuggestionListView, { - props: { record: Object }, - template: 'mail.ComposerSuggestionListView', -}); - -registerMessagingComponent(ComposerSuggestionListView); diff --git a/addons/mail/static/src/components/composer_suggestion_view/composer_suggestion_view.js b/addons/mail/static/src/components/composer_suggestion_view/composer_suggestion_view.js deleted file mode 100644 index 3f4d1a9cc07..00000000000 --- a/addons/mail/static/src/components/composer_suggestion_view/composer_suggestion_view.js +++ /dev/null @@ -1,38 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ComposerSuggestionView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {ComposerSuggestionView} - */ - get composerSuggestionView() { - return this.props.record; - } - -} - -Object.assign(ComposerSuggestionView, { - props: { record: Object }, - template: 'mail.ComposerSuggestionView', -}); - -registerMessagingComponent(ComposerSuggestionView); diff --git a/addons/mail/static/src/components/composer_text_input/composer_text_input.js b/addons/mail/static/src/components/composer_text_input/composer_text_input.js deleted file mode 100644 index a2d286c86bb..00000000000 --- a/addons/mail/static/src/components/composer_text_input/composer_text_input.js +++ /dev/null @@ -1,41 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ComposerTextInputView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - useRefToModel({ fieldName: 'mirroredTextareaRef', refName: 'mirroredTextarea' }); - useRefToModel({ fieldName: 'textareaRef', refName: 'textarea' }); - /** - * Updates the composer text input content when composer is mounted - * as textarea content can't be changed from the DOM. - */ - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - /** - * @returns {ComposerTextInputView} - */ - get composerTextInputView() { - return this.props.record; - } - -} - -Object.assign(ComposerTextInputView, { - props: { record: Object }, - template: 'mail.ComposerTextInputView', -}); - -registerMessagingComponent(ComposerTextInputView); diff --git a/addons/mail/static/src/components/delete_message_confirm/delete_message_confirm.js b/addons/mail/static/src/components/delete_message_confirm/delete_message_confirm.js deleted file mode 100644 index d2ac4ddf0e2..00000000000 --- a/addons/mail/static/src/components/delete_message_confirm/delete_message_confirm.js +++ /dev/null @@ -1,32 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class DeleteMessageConfirmView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - } - - /** - * @returns {DeleteMessageConfirmView} - */ - get deleteMessageConfirmView() { - return this.props.record; - } - -} - -Object.assign(DeleteMessageConfirmView, { - props: { record: Object }, - template: 'mail.DeleteMessageConfirmView', -}); - -registerMessagingComponent(DeleteMessageConfirmView); diff --git a/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js b/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js deleted file mode 100644 index 409eb458ec0..00000000000 --- a/addons/mail/static/src/components/discuss_mobile_mailbox_selection/discuss_mobile_mailbox_selection.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class DiscussMobileMailboxSelectionView extends Component { - - /** - * @returns {DiscussMobileMailboxSelectionView} - */ - get discussMobileMailboxSelectionView() { - return this.props.record; - } - -} - -Object.assign(DiscussMobileMailboxSelectionView, { - props: { record: Object }, - template: 'mail.DiscussMobileMailboxSelectionView', -}); - -registerMessagingComponent(DiscussMobileMailboxSelectionView); diff --git a/addons/mail/static/src/components/discuss_mobile_mailbox_selection_item/discuss_mobile_mailbox_selection_item.js b/addons/mail/static/src/components/discuss_mobile_mailbox_selection_item/discuss_mobile_mailbox_selection_item.js deleted file mode 100644 index 81c6d2c7a4d..00000000000 --- a/addons/mail/static/src/components/discuss_mobile_mailbox_selection_item/discuss_mobile_mailbox_selection_item.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class DiscussMobileMailboxSelectionItemView extends Component { - - /** - * @returns {DiscussMobileMailboxSelectionItemView} - */ - get discussMobileMailboxSelectionItemView() { - return this.props.record; - } - -} - -Object.assign(DiscussMobileMailboxSelectionItemView, { - props: { record: Object }, - template: 'mail.DiscussMobileMailboxSelectionItemView', -}); - -registerMessagingComponent(DiscussMobileMailboxSelectionItemView); diff --git a/addons/mail/static/src/components/discuss_sidebar/discuss_sidebar.js b/addons/mail/static/src/components/discuss_sidebar/discuss_sidebar.js deleted file mode 100644 index 5e9866f9fe6..00000000000 --- a/addons/mail/static/src/components/discuss_sidebar/discuss_sidebar.js +++ /dev/null @@ -1,34 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class DiscussSidebarView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'quickSearchInputRef', refName: 'quickSearchInput' }); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - /** - * @returns {DiscussSidebarView} - */ - get discussSidebarView() { - return this.props.record; - } - -} - -Object.assign(DiscussSidebarView, { - props: { record: Object }, - template: 'mail.DiscussSidebarView', -}); - -registerMessagingComponent(DiscussSidebarView); diff --git a/addons/mail/static/src/components/discuss_sidebar_category/discuss_sidebar_category.js b/addons/mail/static/src/components/discuss_sidebar_category/discuss_sidebar_category.js deleted file mode 100644 index a30faac27c5..00000000000 --- a/addons/mail/static/src/components/discuss_sidebar_category/discuss_sidebar_category.js +++ /dev/null @@ -1,22 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class DiscussSidebarCategory extends Component { - - /** - * @returns {DiscussSidebarCategory} - */ - get category() { - return this.props.record; - } -} - -Object.assign(DiscussSidebarCategory, { - props: { record: Object }, - template: 'mail.DiscussSidebarCategory', -}); - -registerMessagingComponent(DiscussSidebarCategory); diff --git a/addons/mail/static/src/components/discuss_sidebar_category_item/discuss_sidebar_category_item.js b/addons/mail/static/src/components/discuss_sidebar_category_item/discuss_sidebar_category_item.js deleted file mode 100644 index 6df8decc3b9..00000000000 --- a/addons/mail/static/src/components/discuss_sidebar_category_item/discuss_sidebar_category_item.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class DiscussSidebarCategoryItem extends Component { - - /** - * @returns {DiscussSidebarCategoryItem} - */ - get categoryItem() { - return this.props.record; - } - -} - -Object.assign(DiscussSidebarCategoryItem, { - props: { record: Object }, - template: 'mail.DiscussSidebarCategoryItem', -}); - -registerMessagingComponent(DiscussSidebarCategoryItem); diff --git a/addons/mail/static/src/components/discuss_sidebar_mailbox/discuss_sidebar_mailbox.js b/addons/mail/static/src/components/discuss_sidebar_mailbox/discuss_sidebar_mailbox.js deleted file mode 100644 index f4b526d4303..00000000000 --- a/addons/mail/static/src/components/discuss_sidebar_mailbox/discuss_sidebar_mailbox.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class DiscussSidebarMailboxView extends Component { - - /** - * @returns {DiscussSidebarMailboxView} - */ - get discussSidebarMailboxView() { - return this.props.record; - } - -} - -Object.assign(DiscussSidebarMailboxView, { - props: { record: Object }, - template: 'mail.DiscussSidebarMailboxView', -}); - -registerMessagingComponent(DiscussSidebarMailboxView); diff --git a/addons/mail/static/src/components/drop_zone/drop_zone.js b/addons/mail/static/src/components/drop_zone/drop_zone.js deleted file mode 100644 index 7338abb024d..00000000000 --- a/addons/mail/static/src/components/drop_zone/drop_zone.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class DropZoneView extends Component { - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {DropZoneView} - */ - get dropZoneView() { - return this.props.record; - } - -} - -Object.assign(DropZoneView, { - props: { record: Object }, - template: 'mail.DropZoneView', -}); - -registerMessagingComponent(DropZoneView); diff --git a/addons/mail/static/src/components/emoji_category_bar_view/emoji_category_bar_view.js b/addons/mail/static/src/components/emoji_category_bar_view/emoji_category_bar_view.js deleted file mode 100644 index a9dbed19750..00000000000 --- a/addons/mail/static/src/components/emoji_category_bar_view/emoji_category_bar_view.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiCategoryBarView extends Component { - /** - * @returns {EmojiCategoryBarView} - */ - get emojiCategoryBarView() { - return this.props.record; - } -} - -Object.assign(EmojiCategoryBarView, { - props: { record: Object }, - template: 'mail.EmojiCategoryBarView', -}); - -registerMessagingComponent(EmojiCategoryBarView); diff --git a/addons/mail/static/src/components/emoji_category_view/emoji_category_view.js b/addons/mail/static/src/components/emoji_category_view/emoji_category_view.js deleted file mode 100644 index efb0cb52d64..00000000000 --- a/addons/mail/static/src/components/emoji_category_view/emoji_category_view.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiCategoryView extends Component { - /** - * @returns {EmojiCategoryView} - */ - get emojiCategoryView() { - return this.props.record; - } -} - -Object.assign(EmojiCategoryView, { - props: { record: Object }, - template: 'mail.EmojiCategoryView', -}); - -registerMessagingComponent(EmojiCategoryView); diff --git a/addons/mail/static/src/components/emoji_grid_item_view/emoji_grid_item_view.js b/addons/mail/static/src/components/emoji_grid_item_view/emoji_grid_item_view.js deleted file mode 100644 index adadb620880..00000000000 --- a/addons/mail/static/src/components/emoji_grid_item_view/emoji_grid_item_view.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiGridItemView extends Component { - /** - * @returns {EmojiGridItemView} - */ - get emojiGridItemView() { - return this.props.record; - } -} - -Object.assign(EmojiGridItemView, { - props: { record: Object }, - template: 'mail.EmojiGridItemView', -}); - -registerMessagingComponent(EmojiGridItemView); diff --git a/addons/mail/static/src/components/emoji_grid_loading_screen/emoji_grid_loading_screen.js b/addons/mail/static/src/components/emoji_grid_loading_screen/emoji_grid_loading_screen.js deleted file mode 100644 index 3288c321847..00000000000 --- a/addons/mail/static/src/components/emoji_grid_loading_screen/emoji_grid_loading_screen.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiGridLoadingScreen extends Component { - /** - * @returns {EmojiGridLoadingScreen} - */ - get EmojiGridLoadingScreen() { - return this.props.record; - } -} - -Object.assign(EmojiGridLoadingScreen, { - props: { record: Object }, - template: 'mail.EmojiGridLoadingScreen', -}); - -registerMessagingComponent(EmojiGridLoadingScreen); diff --git a/addons/mail/static/src/components/emoji_grid_row_view/emoji_grid_row_view.js b/addons/mail/static/src/components/emoji_grid_row_view/emoji_grid_row_view.js deleted file mode 100644 index 3e2a17472e2..00000000000 --- a/addons/mail/static/src/components/emoji_grid_row_view/emoji_grid_row_view.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiGridRowView extends Component { - /** - * @returns {EmojiGridRowView} - */ - get emojiGridRowView() { - return this.props.record; - } -} - -Object.assign(EmojiGridRowView, { - props: { record: Object }, - template: 'mail.EmojiGridRowView', -}); - -registerMessagingComponent(EmojiGridRowView); diff --git a/addons/mail/static/src/components/emoji_grid_search_no_content_view/emoji_grid_search_no_content_view.js b/addons/mail/static/src/components/emoji_grid_search_no_content_view/emoji_grid_search_no_content_view.js deleted file mode 100644 index 9ee384e6a6d..00000000000 --- a/addons/mail/static/src/components/emoji_grid_search_no_content_view/emoji_grid_search_no_content_view.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiGridSearchNoContentView extends Component { - /** - * @returns {EmojiGridSearchNoContentView} - */ - get emojiGridSearchNoContentView() { - return this.props.record; - } -} - -Object.assign(EmojiGridSearchNoContentView, { - props: { record: Object }, - template: 'mail.EmojiGridSearchNoContentView', -}); - -registerMessagingComponent(EmojiGridSearchNoContentView); diff --git a/addons/mail/static/src/components/emoji_grid_section_view/emoji_grid_section_view.js b/addons/mail/static/src/components/emoji_grid_section_view/emoji_grid_section_view.js deleted file mode 100644 index 1ffe429e7fa..00000000000 --- a/addons/mail/static/src/components/emoji_grid_section_view/emoji_grid_section_view.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiGridSectionView extends Component { - /** - * @returns {EmojiGridSectionView} - */ - get emojiGridSectionView() { - return this.props.record; - } -} - -Object.assign(EmojiGridSectionView, { - props: { record: Object }, - template: 'mail.EmojiGridSectionView', -}); - -registerMessagingComponent(EmojiGridSectionView); diff --git a/addons/mail/static/src/components/emoji_grid_view/emoji_grid_view.js b/addons/mail/static/src/components/emoji_grid_view/emoji_grid_view.js deleted file mode 100644 index 634eb8c4beb..00000000000 --- a/addons/mail/static/src/components/emoji_grid_view/emoji_grid_view.js +++ /dev/null @@ -1,30 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; - -import { Component } from '@odoo/owl'; - -export class EmojiGridView extends Component { - setup() { - useRefToModel({ fieldName: 'containerRef', refName: 'containerRef'}); - useRefToModel({ fieldName: 'listRef', refName: 'listRef'}); - useRefToModel({ fieldName: 'viewBlockRef', refName: 'viewBlockRef'}); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - /** - * @returns {EmojiGridView} - */ - get emojiGridView() { - return this.props.record; - } -} - -Object.assign(EmojiGridView, { - props: { record: Object }, - template: 'mail.EmojiGridView', -}); - -registerMessagingComponent(EmojiGridView); diff --git a/addons/mail/static/src/components/emoji_picker_header_action_list_view/emoji_picker_header_action_list_view.js b/addons/mail/static/src/components/emoji_picker_header_action_list_view/emoji_picker_header_action_list_view.js deleted file mode 100644 index 07091b0a125..00000000000 --- a/addons/mail/static/src/components/emoji_picker_header_action_list_view/emoji_picker_header_action_list_view.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiPickerHeaderActionListView extends Component { - - /** - * @returns {EmojiPickerHeaderActionListView} - */ - get emojiPickerHeaderActionListView() { - return this.props.record; - } - -} - -Object.assign(EmojiPickerHeaderActionListView, { - props: { record: Object }, - template: 'mail.EmojiPickerHeaderActionListView', -}); - -registerMessagingComponent(EmojiPickerHeaderActionListView); diff --git a/addons/mail/static/src/components/emoji_picker_header_action_view/emoji_picker_header_action_view.js b/addons/mail/static/src/components/emoji_picker_header_action_view/emoji_picker_header_action_view.js deleted file mode 100644 index 642c766ab62..00000000000 --- a/addons/mail/static/src/components/emoji_picker_header_action_view/emoji_picker_header_action_view.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiPickerHeaderActionView extends Component { - - /** - * @returns {EmojiPickerHeaderActionView} - */ - get emojiPickerHeaderActionView() { - return this.props.record; - } - -} - -Object.assign(EmojiPickerHeaderActionView, { - props: { record: Object }, - template: 'mail.EmojiPickerHeaderActionView', -}); - -registerMessagingComponent(EmojiPickerHeaderActionView); diff --git a/addons/mail/static/src/components/emoji_picker_header_view/emoji_picker_header_view.js b/addons/mail/static/src/components/emoji_picker_header_view/emoji_picker_header_view.js deleted file mode 100644 index 52d50fa409e..00000000000 --- a/addons/mail/static/src/components/emoji_picker_header_view/emoji_picker_header_view.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiPickerHeaderView extends Component { - - /** - * @returns {EmojiPickerHeaderView} - */ - get emojiPickerHeaderView() { - return this.props.record; - } - -} - -Object.assign(EmojiPickerHeaderView, { - props: { record: Object }, - template: 'mail.EmojiPickerHeaderView', -}); - -registerMessagingComponent(EmojiPickerHeaderView); diff --git a/addons/mail/static/src/components/emoji_picker_view/emoji_picker_view.js b/addons/mail/static/src/components/emoji_picker_view/emoji_picker_view.js deleted file mode 100644 index ec7fb8b1502..00000000000 --- a/addons/mail/static/src/components/emoji_picker_view/emoji_picker_view.js +++ /dev/null @@ -1,25 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; - -import { Component } from '@odoo/owl'; - -export class EmojiPickerView extends Component { - setup() { - useComponentToModel({ fieldName: 'component' }); - } - /** - * @returns {EmojiPickerView} - */ - get emojiPickerView() { - return this.props.record; - } -} - -Object.assign(EmojiPickerView, { - props: { record: Object }, - template: 'mail.EmojiPickerView', -}); - -registerMessagingComponent(EmojiPickerView); diff --git a/addons/mail/static/src/components/emoji_search_bar_view/emoji_search_bar_view.js b/addons/mail/static/src/components/emoji_search_bar_view/emoji_search_bar_view.js deleted file mode 100644 index cbd93ef0a7b..00000000000 --- a/addons/mail/static/src/components/emoji_search_bar_view/emoji_search_bar_view.js +++ /dev/null @@ -1,33 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; - - -import { Component } from '@odoo/owl'; - -export class EmojiSearchBarView extends Component { - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'inputRef', refName: 'input' }); - useUpdateToModel({ methodName: 'onComponentUpdate', modelName: 'EmojiSearchBarView' }); - } - - /** - * @returns {EmojiSearchBarView} - */ - get emojiSearchBarView() { - return this.props.record; - } -} - -Object.assign(EmojiSearchBarView, { - props: { record: Object }, - template: 'mail.EmojiSearchBarView', -}); - -registerMessagingComponent(EmojiSearchBarView); diff --git a/addons/mail/static/src/components/emoji_view/emoji_view.js b/addons/mail/static/src/components/emoji_view/emoji_view.js deleted file mode 100644 index 97e526c6868..00000000000 --- a/addons/mail/static/src/components/emoji_view/emoji_view.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class EmojiView extends Component { - /** - * @returns {EmojiView} - */ - get emojiView() { - return this.props.record; - } -} - -Object.assign(EmojiView, { - props: { record: Object }, - template: 'mail.EmojiView', -}); - -registerMessagingComponent(EmojiView); diff --git a/addons/mail/static/src/components/follow_button/follow_button.js b/addons/mail/static/src/components/follow_button/follow_button.js deleted file mode 100644 index 239fbd98a90..00000000000 --- a/addons/mail/static/src/components/follow_button/follow_button.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class FollowButtonView extends Component { - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @return {FollowButtonView} - */ - get followButtonView() { - return this.props.record; - } - -} - -Object.assign(FollowButtonView, { - props: { record: Object }, - template: 'mail.FollowButtonView', -}); - -registerMessagingComponent(FollowButtonView); diff --git a/addons/mail/static/src/components/follower/follower.js b/addons/mail/static/src/components/follower/follower.js deleted file mode 100644 index e7e089f8969..00000000000 --- a/addons/mail/static/src/components/follower/follower.js +++ /dev/null @@ -1,21 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class FollowerView extends Component { - /** - * @returns {FollowerView} - */ - get followerView() { - return this.props.record; - } -} - -Object.assign(FollowerView, { - props: { record: Object }, - template: 'mail.FollowerView', -}); - -registerMessagingComponent(FollowerView); diff --git a/addons/mail/static/src/components/follower_list_menu/follower_list_menu.js b/addons/mail/static/src/components/follower_list_menu/follower_list_menu.js deleted file mode 100644 index f67d33233da..00000000000 --- a/addons/mail/static/src/components/follower_list_menu/follower_list_menu.js +++ /dev/null @@ -1,36 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class FollowerListMenuView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'dropdownRef', refName: 'dropdown' }); - } - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @return {FollowerListMenuView} - */ - get followerListMenuView() { - return this.props.record; - } - -} - -Object.assign(FollowerListMenuView, { - props: { record: Object }, - template: 'mail.FollowerListMenuView', -}); - -registerMessagingComponent(FollowerListMenuView); diff --git a/addons/mail/static/src/components/follower_subtype/follower_subtype.js b/addons/mail/static/src/components/follower_subtype/follower_subtype.js deleted file mode 100644 index aeb33709057..00000000000 --- a/addons/mail/static/src/components/follower_subtype/follower_subtype.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class FollowerSubtypeView extends Component { - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {FollowerSubtypeView} - */ - get followerSubtypeView() { - return this.props.record; - } - -} - -Object.assign(FollowerSubtypeView, { - props: { record: Object }, - template: 'mail.FollowerSubtypeView', -}); - -registerMessagingComponent(FollowerSubtypeView); diff --git a/addons/mail/static/src/components/follower_subtype_list/follower_subtype_list.js b/addons/mail/static/src/components/follower_subtype_list/follower_subtype_list.js deleted file mode 100644 index b65c31341ee..00000000000 --- a/addons/mail/static/src/components/follower_subtype_list/follower_subtype_list.js +++ /dev/null @@ -1,36 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class FollowerSubtypeList extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - } - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {FollowerSubtypeList} - */ - get followerSubtypeList() { - return this.props.record; - } - -} - -Object.assign(FollowerSubtypeList, { - props: { record: Object }, - template: 'mail.FollowerSubtypeList', -}); - -registerMessagingComponent(FollowerSubtypeList); diff --git a/addons/mail/static/src/components/link_preview_aside_view/link_preview_aside_view.js b/addons/mail/static/src/components/link_preview_aside_view/link_preview_aside_view.js deleted file mode 100644 index 62487fb5489..00000000000 --- a/addons/mail/static/src/components/link_preview_aside_view/link_preview_aside_view.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -class LinkPreviewAsideView extends Component { - - /** - * @returns {LinkPreviewAsideView} - */ - get linkPreviewAsideView() { - return this.props.record; - } - -} - -Object.assign(LinkPreviewAsideView, { - props: { record: Object }, - template: 'mail.LinkPreviewAsideView', -}); - -registerMessagingComponent(LinkPreviewAsideView); diff --git a/addons/mail/static/src/components/link_preview_card_view/link_preview_card_view.js b/addons/mail/static/src/components/link_preview_card_view/link_preview_card_view.js deleted file mode 100644 index 1768abd9645..00000000000 --- a/addons/mail/static/src/components/link_preview_card_view/link_preview_card_view.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -class LinkPreviewCardView extends Component { - - /** - * @returns {LinkPreviewCardView} - */ - get linkPreviewCardView() { - return this.props.record; - } - -} - -Object.assign(LinkPreviewCardView, { - props: { record: Object }, - template: 'mail.LinkPreviewCardView', -}); - -registerMessagingComponent(LinkPreviewCardView); diff --git a/addons/mail/static/src/components/link_preview_delete_confirm_view/link_preview_delete_confirm_view.js b/addons/mail/static/src/components/link_preview_delete_confirm_view/link_preview_delete_confirm_view.js deleted file mode 100644 index 42dc1a7e002..00000000000 --- a/addons/mail/static/src/components/link_preview_delete_confirm_view/link_preview_delete_confirm_view.js +++ /dev/null @@ -1,32 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class LinkPreviewDeleteConfirmView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - } - - /** - * @returns {DeleteMessageConfirmView} - */ - get linkPreviewDeleteConfirmView() { - return this.props.record; - } - -} - -Object.assign(LinkPreviewDeleteConfirmView, { - props: { record: Object }, - template: 'mail.LinkPreviewDeleteConfirmView', -}); - -registerMessagingComponent(LinkPreviewDeleteConfirmView); diff --git a/addons/mail/static/src/components/link_preview_image_view/link_preview_image_view.js b/addons/mail/static/src/components/link_preview_image_view/link_preview_image_view.js deleted file mode 100644 index 061581f84cd..00000000000 --- a/addons/mail/static/src/components/link_preview_image_view/link_preview_image_view.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -class LinkPreviewImageView extends Component { - - /** - * @returns {LinkPreviewImageView} - */ - get linkPreviewImageView() { - return this.props.record; - } - -} - -Object.assign(LinkPreviewImageView, { - props: { record: Object }, - template: 'mail.LinkPreviewImageView', -}); - -registerMessagingComponent(LinkPreviewImageView); diff --git a/addons/mail/static/src/components/link_preview_list_view/link_preview_list_view.js b/addons/mail/static/src/components/link_preview_list_view/link_preview_list_view.js deleted file mode 100644 index 782d2d49f07..00000000000 --- a/addons/mail/static/src/components/link_preview_list_view/link_preview_list_view.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -class LinkPreviewListView extends Component { - - /** - * @returns {LinkPreviewListView} - */ - get linkPreviewListView() { - return this.props.record; - } - -} - -Object.assign(LinkPreviewListView, { - props: { record: Object }, - template: 'mail.LinkPreviewListView', -}); - -registerMessagingComponent(LinkPreviewListView); diff --git a/addons/mail/static/src/components/link_preview_video_view/link_preview_video_view.js b/addons/mail/static/src/components/link_preview_video_view/link_preview_video_view.js deleted file mode 100644 index f7b013c272f..00000000000 --- a/addons/mail/static/src/components/link_preview_video_view/link_preview_video_view.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -class LinkPreviewVideoView extends Component { - - /** - * @returns {LinkPreviewVideoView} - */ - get linkPreviewVideoView() { - return this.props.record; - } - -} - -Object.assign(LinkPreviewVideoView, { - props: { record: Object }, - template: 'mail.LinkPreviewVideoView', -}); - -registerMessagingComponent(LinkPreviewVideoView); diff --git a/addons/mail/static/src/components/mail_template/mail_template.js b/addons/mail/static/src/components/mail_template/mail_template.js deleted file mode 100644 index 1abf7026eb1..00000000000 --- a/addons/mail/static/src/components/mail_template/mail_template.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MailTemplateView extends Component { - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {MailTemplateView} - */ - get mailTemplateView() { - return this.props.record; - } - -} - -Object.assign(MailTemplateView, { - props: { record: Object }, - template: 'mail.MailTemplateView', -}); - -registerMessagingComponent(MailTemplateView); diff --git a/addons/mail/static/src/components/message/message.js b/addons/mail/static/src/components/message/message.js deleted file mode 100644 index ad6978935b9..00000000000 --- a/addons/mail/static/src/components/message/message.js +++ /dev/null @@ -1,38 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MessageView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - useRefToModel({ fieldName: 'contentRef', refName: 'content' }); - useRefToModel({ fieldName: 'notificationIconRef', refName: 'notificationIcon' }); - useRefToModel({ fieldName: 'prettyBodyRef', refName: 'prettyBody' }); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - /** - * @returns {MessageView} - */ - get messageView() { - return this.props.record; - } - -} - -Object.assign(MessageView, { - props: { record: Object }, - template: 'mail.MessageView', -}); - -registerMessagingComponent(MessageView); diff --git a/addons/mail/static/src/components/message_action_list/message_action_list.js b/addons/mail/static/src/components/message_action_list/message_action_list.js deleted file mode 100644 index 1afaf4d3264..00000000000 --- a/addons/mail/static/src/components/message_action_list/message_action_list.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module */ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MessageActionList extends Component { - - /** - * @returns {MessageActionList} - */ - get messageActionList() { - return this.props.record; - } - -} - -Object.assign(MessageActionList, { - props: { record: Object }, - template: "mail.MessageActionList", -}); - -registerMessagingComponent(MessageActionList); diff --git a/addons/mail/static/src/components/message_action_view/message_action_view.js b/addons/mail/static/src/components/message_action_view/message_action_view.js deleted file mode 100644 index 85fc5afe152..00000000000 --- a/addons/mail/static/src/components/message_action_view/message_action_view.js +++ /dev/null @@ -1,32 +0,0 @@ -/** @odoo-module */ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MessageActionView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'actionRef', refName: 'action' }); - } - - /** - * @returns {MessageActionView} - */ - get messageActionView() { - return this.props.record; - } - -} - -Object.assign(MessageActionView, { - props: { record: Object }, - template: "mail.MessageActionView", -}); - -registerMessagingComponent(MessageActionView); diff --git a/addons/mail/static/src/components/message_author_prefix/message_author_prefix.js b/addons/mail/static/src/components/message_author_prefix/message_author_prefix.js deleted file mode 100644 index acbe19a329b..00000000000 --- a/addons/mail/static/src/components/message_author_prefix/message_author_prefix.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MessageAuthorPrefixView extends Component { - - /** - * @returns {MessageAuthorPrefixView} - */ - get messageAuthorPrefixView() { - return this.props.record; - } - -} - -Object.assign(MessageAuthorPrefixView, { - props: { record: Object }, - template: 'mail.MessageAuthorPrefixView', -}); - -registerMessagingComponent(MessageAuthorPrefixView); diff --git a/addons/mail/static/src/components/message_in_reply_to_view/message_in_reply_to_view.js b/addons/mail/static/src/components/message_in_reply_to_view/message_in_reply_to_view.js deleted file mode 100644 index 3b369184686..00000000000 --- a/addons/mail/static/src/components/message_in_reply_to_view/message_in_reply_to_view.js +++ /dev/null @@ -1,22 +0,0 @@ -/** @odoo-module */ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MessageInReplyToView extends Component { - - /** - * @returns {MessageInReplyToView} - */ - get messageInReplyToView() { - return this.props.record; - } -} - -Object.assign(MessageInReplyToView, { - props: { record: Object }, - template: "mail.MessageInReplyToView", -}); - -registerMessagingComponent(MessageInReplyToView); diff --git a/addons/mail/static/src/components/message_notification_popover_content/message_notification_popover_content.js b/addons/mail/static/src/components/message_notification_popover_content/message_notification_popover_content.js deleted file mode 100644 index 55048a43252..00000000000 --- a/addons/mail/static/src/components/message_notification_popover_content/message_notification_popover_content.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MessageNotificationPopoverContentView extends Component { - - /** - * @returns {MessageNotificationPopoverContentView} - */ - get messageNotificationPopoverContentView() { - return this.props.record; - } - -} - -Object.assign(MessageNotificationPopoverContentView, { - props: { record: Object }, - template: 'mail.MessageNotificationPopoverContentView', -}); - -registerMessagingComponent(MessageNotificationPopoverContentView); diff --git a/addons/mail/static/src/components/message_reaction_group/message_reaction_group.js b/addons/mail/static/src/components/message_reaction_group/message_reaction_group.js deleted file mode 100644 index 4ed56b4b948..00000000000 --- a/addons/mail/static/src/components/message_reaction_group/message_reaction_group.js +++ /dev/null @@ -1,20 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MessageReactionGroup extends Component { - - get messageReactionGroup() { - return this.props.record; - } - -} - -Object.assign(MessageReactionGroup, { - props: { record: Object }, - template: 'mail.MessageReactionGroup', -}); - -registerMessagingComponent(MessageReactionGroup); diff --git a/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.js b/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.js deleted file mode 100644 index 8aace671a31..00000000000 --- a/addons/mail/static/src/components/message_seen_indicator/message_seen_indicator.js +++ /dev/null @@ -1,26 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MessageSeenIndicatorView extends Component { - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {MessageSeenIndicatorView} - */ - get messageSeenIndicatorView() { - return this.props.record; - } -} - -Object.assign(MessageSeenIndicatorView, { - props: { record: Object }, - template: 'mail.MessageSeenIndicatorView', -}); - -registerMessagingComponent(MessageSeenIndicatorView); diff --git a/addons/mail/static/src/components/messaging_menu_tab/messaging_menu_tab.js b/addons/mail/static/src/components/messaging_menu_tab/messaging_menu_tab.js deleted file mode 100644 index 5dd1086fe48..00000000000 --- a/addons/mail/static/src/components/messaging_menu_tab/messaging_menu_tab.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MessagingMenuTabView extends Component { - - /** - * @returns {MessagingMenuTabView} - */ - get messagingMenuTabView() { - return this.props.record; - } - -} - -Object.assign(MessagingMenuTabView, { - props: { record: Object }, - template: 'mail.MessagingMenuTabView', -}); - -registerMessagingComponent(MessagingMenuTabView); diff --git a/addons/mail/static/src/components/mobile_messaging_navbar/mobile_messaging_navbar.js b/addons/mail/static/src/components/mobile_messaging_navbar/mobile_messaging_navbar.js deleted file mode 100644 index bc51803052f..00000000000 --- a/addons/mail/static/src/components/mobile_messaging_navbar/mobile_messaging_navbar.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class MobileMessagingNavbarView extends Component { - - /** - * @returns {MobileMessagingNavbarView} - */ - get mobileMessagingNavbarView() { - return this.props.record; - } - -} - -Object.assign(MobileMessagingNavbarView, { - props: { record: Object }, - template: 'mail.MobileMessagingNavbarView', -}); - -registerMessagingComponent(MobileMessagingNavbarView); diff --git a/addons/mail/static/src/components/notification_group/notification_group.js b/addons/mail/static/src/components/notification_group/notification_group.js deleted file mode 100644 index cac8defe035..00000000000 --- a/addons/mail/static/src/components/notification_group/notification_group.js +++ /dev/null @@ -1,36 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class NotificationGroupView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'markAsReadRef', refName: 'markAsRead' }); - } - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {NotificationGroupView} - */ - get notificationGroupView() { - return this.props.record; - } - -} - -Object.assign(NotificationGroupView, { - props: { record: Object }, - template: 'mail.NotificationGroupView', -}); - -registerMessagingComponent(NotificationGroupView); diff --git a/addons/mail/static/src/components/notification_list/notification_list.js b/addons/mail/static/src/components/notification_list/notification_list.js deleted file mode 100644 index 84f2c11123d..00000000000 --- a/addons/mail/static/src/components/notification_list/notification_list.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class NotificationListView extends Component { - - /** - * @returns {NotificationListView} - */ - get notificationListView() { - return this.props.record; - } - -} - -Object.assign(NotificationListView, { - props: { record: Object }, - template: 'mail.NotificationListView', -}); - -registerMessagingComponent(NotificationListView); diff --git a/addons/mail/static/src/components/notification_message_view/notification_message_view.js b/addons/mail/static/src/components/notification_message_view/notification_message_view.js deleted file mode 100644 index 45b66bbeb7b..00000000000 --- a/addons/mail/static/src/components/notification_message_view/notification_message_view.js +++ /dev/null @@ -1,34 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -class NotificationMessageView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - /** - * @returns {NotificationMessageView} - */ - get notificationMessageView() { - return this.props.record; - } - -} - -Object.assign(NotificationMessageView, { - props: { record: Object }, - template: 'mail.NotificationMessageView', -}); - -registerMessagingComponent(NotificationMessageView); diff --git a/addons/mail/static/src/components/notification_request/notification_request.js b/addons/mail/static/src/components/notification_request/notification_request.js deleted file mode 100644 index 1bdc007af38..00000000000 --- a/addons/mail/static/src/components/notification_request/notification_request.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class NotificationRequestView extends Component { - - /** - * @returns {NotificationRequestView} - */ - get notificationRequestView() { - return this.props.record; - } - -} - -Object.assign(NotificationRequestView, { - props: { record: Object }, - template: 'mail.NotificationRequestView', -}); - -registerMessagingComponent(NotificationRequestView); diff --git a/addons/mail/static/src/components/persona_im_status_icon/persona_im_status_icon.js b/addons/mail/static/src/components/persona_im_status_icon/persona_im_status_icon.js deleted file mode 100644 index a0742cc1e59..00000000000 --- a/addons/mail/static/src/components/persona_im_status_icon/persona_im_status_icon.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class PersonaImStatusIconView extends Component { - - /** - * @returns {PersonaImStatusIconView} - */ - get personaImStatusIconView() { - return this.props.record; - } - -} - -Object.assign(PersonaImStatusIconView, { - props: { record: Object }, - template: 'mail.PersonaImStatusIconView', -}); - -registerMessagingComponent(PersonaImStatusIconView); diff --git a/addons/mail/static/src/components/popover_view/popover_view.js b/addons/mail/static/src/components/popover_view/popover_view.js deleted file mode 100644 index fe136dfe563..00000000000 --- a/addons/mail/static/src/components/popover_view/popover_view.js +++ /dev/null @@ -1,42 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { usePosition } from '@web/core/position_hook'; - -import { Component } from '@odoo/owl'; - -export class PopoverView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useComponentToModel({ fieldName: 'component' }); - usePosition( - () => this.popoverView.anchorRef && this.popoverView.anchorRef.el, - { - popper: "root", - margin: 16, - position: this.popoverView.position, - } - ); - } - - /** - * @returns {PopoverView|undefined} - */ - get popoverView() { - return this.props.record; - } - -} - -Object.assign(PopoverView, { - props: { record: Object }, - template: 'mail.PopoverView', -}); - -registerMessagingComponent(PopoverView); diff --git a/addons/mail/static/src/components/thread_icon/thread_icon.js b/addons/mail/static/src/components/thread_icon/thread_icon.js deleted file mode 100644 index a227331a17b..00000000000 --- a/addons/mail/static/src/components/thread_icon/thread_icon.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ThreadIconView extends Component { - - /** - * @returns {ThreadIconView} - */ - get threadIconView() { - return this.props.record; - } - -} - -Object.assign(ThreadIconView, { - props: { record: Object }, - template: 'mail.ThreadIconView', -}); - -registerMessagingComponent(ThreadIconView); diff --git a/addons/mail/static/src/components/thread_textual_typing_status/thread_textual_typing_status.js b/addons/mail/static/src/components/thread_textual_typing_status/thread_textual_typing_status.js deleted file mode 100644 index de89de7322c..00000000000 --- a/addons/mail/static/src/components/thread_textual_typing_status/thread_textual_typing_status.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ThreadTextualTypingStatusView extends Component { - - /** - * @returns {ThreadTextualTypingStatusView} - */ - get threadTextualTypingStatusView() { - return this.props.record; - } - -} - -Object.assign(ThreadTextualTypingStatusView, { - props: { record: Object }, - template: 'mail.ThreadTextualTypingStatusView', -}); - -registerMessagingComponent(ThreadTextualTypingStatusView); diff --git a/addons/mail/static/src/components/thread_typing_icon/thread_typing_icon.js b/addons/mail/static/src/components/thread_typing_icon/thread_typing_icon.js deleted file mode 100644 index 94f37729d28..00000000000 --- a/addons/mail/static/src/components/thread_typing_icon/thread_typing_icon.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ThreadTypingIconView extends Component { - - /** - * @returns {ThreadTypingIconView} - */ - get threadTypingIconView() { - return this.props.record; - } - -} - -Object.assign(ThreadTypingIconView, { - props: { record: Object }, - template: 'mail.ThreadTypingIconView', -}); - -registerMessagingComponent(ThreadTypingIconView); diff --git a/addons/mail/static/src/components/thread_view/thread_view.js b/addons/mail/static/src/components/thread_view/thread_view.js deleted file mode 100644 index 036b2803ce2..00000000000 --- a/addons/mail/static/src/components/thread_view/thread_view.js +++ /dev/null @@ -1,27 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ThreadView extends Component { - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {ThreadView} - */ - get threadView() { - return this.props.record; - } - -} - -Object.assign(ThreadView, { - props: { record: Object }, - template: 'mail.ThreadView', -}); - -registerMessagingComponent(ThreadView); diff --git a/addons/mail/static/src/components/thread_view_topbar/thread_view_topbar.js b/addons/mail/static/src/components/thread_view_topbar/thread_view_topbar.js deleted file mode 100644 index 8c5014cffaa..00000000000 --- a/addons/mail/static/src/components/thread_view_topbar/thread_view_topbar.js +++ /dev/null @@ -1,41 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class ThreadViewTopbar extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'guestNameInputRef', refName: 'guestNameInput' }); - useRefToModel({ fieldName: 'inviteButtonRef', refName: 'inviteButton' }); - useRefToModel({ fieldName: 'threadNameInputRef', refName: 'threadNameInput' }); - useRefToModel({ fieldName: 'threadDescriptionInputRef', refName: 'threadDescriptionInput' }); - useUpdateToModel({ methodName: 'onComponentUpdate' }); - } - - //-------------------------------------------------------------------------- - // Public - //-------------------------------------------------------------------------- - - /** - * @returns {ThreadViewTopbar} - */ - get threadViewTopbar() { - return this.props.record; - } - -} - -Object.assign(ThreadViewTopbar, { - props: { record: Object }, - template: 'mail.ThreadViewTopbar', -}); - -registerMessagingComponent(ThreadViewTopbar); diff --git a/addons/mail/static/src/components/welcome_view/welcome_view.js b/addons/mail/static/src/components/welcome_view/welcome_view.js deleted file mode 100644 index 9610dafd2e2..00000000000 --- a/addons/mail/static/src/components/welcome_view/welcome_view.js +++ /dev/null @@ -1,34 +0,0 @@ -/** @odoo-module **/ - -import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; -import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -import { Component } from '@odoo/owl'; - -export class WelcomeView extends Component { - - /** - * @override - */ - setup() { - super.setup(); - useRefToModel({ fieldName: 'guestNameInputRef', modelName: 'WelcomeView', refName: 'guestNameInput' }); - useUpdateToModel({ methodName: 'onComponentUpdate', modelName: 'WelcomeView' }); - } - - /** - * @returns {WelcomeView} - */ - get welcomeView() { - return this.props.record; - } - -} - -Object.assign(WelcomeView, { - props: { record: Object }, - template: 'mail.WelcomeView', -}); - -registerMessagingComponent(WelcomeView); diff --git a/addons/mail/static/src/model/model_core.js b/addons/mail/static/src/model/model_core.js index 86e1c8d57a9..213d2ad5ec4 100644 --- a/addons/mail/static/src/model/model_core.js +++ b/addons/mail/static/src/model/model_core.js @@ -379,6 +379,7 @@ function patchRecordMethods(patch) { /** * @param {Object} definition The JSON definition of the model to register. + * @param {function} [definition.componentSetup] * @param {Object} [definition.fields] * @param {string} [definition.identifyingMode='and'] * @param {Object} [definition.lifecycleHooks] @@ -388,15 +389,17 @@ function patchRecordMethods(patch) { * @param {Object[]} [definition.onChanges] * @param {Object} [definition.recordGetters] Deprecated; use fields instead. * @param {Object} [definition.recordMethods] + * @param {string} [definition.template] + * @param {string} [definition.templateGetter] */ -export function registerModel({ fields, identifyingMode = 'and', lifecycleHooks, modelGetters, modelMethods, name, onChanges, recordGetters, recordMethods }) { +export function registerModel({ componentSetup, fields, identifyingMode = 'and', lifecycleHooks, modelGetters, modelMethods, name, onChanges, recordGetters, recordMethods, template, templateGetter }) { if (!name) { throw new Error("Model is lacking a name."); } if (registry.has(name)) { throw new Error(`Cannot register model "${name}": model has already been registered.`); } - const sectionNames = ['name', 'identifyingMode', 'lifecycleHooks', 'modelMethods', 'modelGetters', 'recordMethods', 'recordGetters', 'fields', 'onChanges']; + const sectionNames = ['name', 'template', 'templateGetter', 'componentSetup', 'identifyingMode', 'lifecycleHooks', 'modelMethods', 'modelGetters', 'recordMethods', 'recordGetters', 'fields', 'onChanges']; const invalidSectionNames = Object.keys(arguments[0]).filter(x => !sectionNames.includes(x)); if (invalidSectionNames.length > 0) { throw new Error(`Cannot register model "${name}": model definition contains unknown key(s): ${invalidSectionNames.join(", ")}`); @@ -412,6 +415,15 @@ export function registerModel({ fields, identifyingMode = 'and', lifecycleHooks, ['fields', new Map()], ['onChanges', []], ])); + if (template) { + registry.get(name).set('template', template); + if (templateGetter) { + registry.get(name).set('templateGetter', templateGetter); + } + if (componentSetup) { + registry.get(name).set('componentSetup', componentSetup); + } + } if (lifecycleHooks) { addLifecycleHooks(name, lifecycleHooks); } diff --git a/addons/mail/static/src/model/model_manager.js b/addons/mail/static/src/model/model_manager.js index ae36ca3e78b..bb0892ad5dd 100644 --- a/addons/mail/static/src/model/model_manager.js +++ b/addons/mail/static/src/model/model_manager.js @@ -9,6 +9,10 @@ import { RelationSet } from '@mail/model/model_field_relation_set'; import { Listener } from '@mail/model/model_listener'; import { followRelations } from '@mail/model/model_utils'; import { makeDeferred } from '@mail/utils/deferred'; +import { registerMessagingComponent, unregisterMessagingComponent } from '@mail/utils/messaging_component'; + +import { Component } from '@odoo/owl'; + /** * Object that manage models and records, notably their update cycle: whenever * some records are requested for update (either with model static method @@ -167,6 +171,10 @@ export class ModelManager { destroy() { this.messaging.delete(); for (const model of Object.values(this.models)) { + if (model.hasComponent) { + unregisterMessagingComponent(model.name); + model.hasComponent = false; + } delete model.__fieldList; delete model.__fieldMap; delete model.__identifyingFieldNames; @@ -385,6 +393,27 @@ export class ModelManager { */ _applyModelDefinition(model) { const definition = registry.get(model.name); + if (definition.get('template')) { + const ModelComponent = { [model.name]: class extends Component {} }[model.name]; + if (definition.get('componentSetup')) { + Object.assign(ModelComponent.prototype, { setup() { + return definition.get('componentSetup').call(this); + } }); + } + Object.defineProperty( + ModelComponent.prototype, + definition.get('templateGetter') ? definition.get('templateGetter') : 'record', + { get() { + return this.props.record; + } }, + ); + Object.assign(ModelComponent, { + props: { record: Object }, + template: definition.get('template'), + }); + registerMessagingComponent(ModelComponent); + model.hasComponent = true; + } Object.assign(model, Object.fromEntries(definition.get('modelMethods'))); Object.assign(model.prototype, Object.fromEntries(definition.get('recordMethods'))); for (const [getterName, getter] of definition.get('modelGetters')) { diff --git a/addons/mail/static/src/models/activity_box_view.js b/addons/mail/static/src/models/activity_box_view.js index 9210edc9b12..d12ebd69b69 100644 --- a/addons/mail/static/src/models/activity_box_view.js +++ b/addons/mail/static/src/models/activity_box_view.js @@ -5,6 +5,8 @@ import { attr, many, one } from '@mail/model/model_field'; registerModel({ name: 'ActivityBoxView', + template: 'mail.ActivityBoxView', + templateGetter: 'activityBoxView', recordMethods: { /** * Handles click on activity box title. diff --git a/addons/mail/static/src/models/activity_button_view.js b/addons/mail/static/src/models/activity_button_view.js index f4f23ec6427..d22501a2743 100644 --- a/addons/mail/static/src/models/activity_button_view.js +++ b/addons/mail/static/src/models/activity_button_view.js @@ -1,11 +1,17 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ActivityButtonView', + template: 'mail.ActivityButtonView', + templateGetter: 'activityButtonView', + componentSetup() { + useRefToModel({ fieldName: 'buttonRef', refName: 'button' }); + }, identifyingMode: 'xor', recordMethods: { onClick(ev) { diff --git a/addons/mail/static/src/models/activity_list_view.js b/addons/mail/static/src/models/activity_list_view.js index 4f000597acd..d5cf3d09b79 100644 --- a/addons/mail/static/src/models/activity_list_view.js +++ b/addons/mail/static/src/models/activity_list_view.js @@ -8,6 +8,8 @@ import session from 'web.session'; registerModel({ name: 'ActivityListView', + template: 'mail.ActivityListView', + templateGetter: 'activityListView', lifecycleHooks: { async _created() { if (this.activities.length === 0) { diff --git a/addons/mail/static/src/models/activity_list_view_item.js b/addons/mail/static/src/models/activity_list_view_item.js index e8995df1303..e6c433be808 100644 --- a/addons/mail/static/src/models/activity_list_view_item.js +++ b/addons/mail/static/src/models/activity_list_view_item.js @@ -9,6 +9,8 @@ import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'ActivityListViewItem', + template: 'mail.ActivityListViewItem', + templateGetter: 'activityListViewItem', recordMethods: { onClickEditActivityButton() { const popoverViewOwner = this.activityListViewOwner.popoverViewOwner; diff --git a/addons/mail/static/src/models/activity_mark_done_popover_content_view.js b/addons/mail/static/src/models/activity_mark_done_popover_content_view.js index daea5ac1bac..aabe530a7ea 100644 --- a/addons/mail/static/src/models/activity_mark_done_popover_content_view.js +++ b/addons/mail/static/src/models/activity_mark_done_popover_content_view.js @@ -1,11 +1,20 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; +import { onMounted } from '@odoo/owl'; + registerModel({ name: 'ActivityMarkDonePopoverContentView', + template: 'mail.ActivityMarkDonePopoverContentView', + templateGetter: 'activityMarkDonePopoverContentView', + componentSetup() { + useRefToModel({ fieldName: 'feedbackTextareaRef', refName: 'feedbackTextarea' }); + onMounted(this.activityMarkDonePopoverContentView.onMounted); + }, identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/activity_view.js b/addons/mail/static/src/models/activity_view.js index d899b3e8430..74011807313 100644 --- a/addons/mail/static/src/models/activity_view.js +++ b/addons/mail/static/src/models/activity_view.js @@ -1,5 +1,6 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; @@ -9,6 +10,11 @@ import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'ActivityView', + template: 'mail.ActivityView', + templateGetter: 'activityView', + componentSetup() { + useRefToModel({ fieldName: 'markDoneButtonRef', refName: 'markDoneButton', }); + }, recordMethods: { /** * Handles the click on a link inside the activity. diff --git a/addons/mail/static/src/models/attachment_box_view.js b/addons/mail/static/src/models/attachment_box_view.js index 89c3bd27c36..9cb7311d8ee 100644 --- a/addons/mail/static/src/models/attachment_box_view.js +++ b/addons/mail/static/src/models/attachment_box_view.js @@ -1,11 +1,17 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'AttachmentBoxView', + template: 'mail.AttachmentBoxView', + templateGetter: 'attachmentBoxView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + }, recordMethods: { /** * Handles click on the "add attachment" button. diff --git a/addons/mail/static/src/models/attachment_card.js b/addons/mail/static/src/models/attachment_card.js index 9db5338bad4..66de9dd157e 100644 --- a/addons/mail/static/src/models/attachment_card.js +++ b/addons/mail/static/src/models/attachment_card.js @@ -5,6 +5,8 @@ import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'AttachmentCard', + template: 'mail.AttachmentCard', + templateGetter: 'attachmentCard', recordMethods: { /** * Opens the attachment viewer when clicking on viewable attachment. diff --git a/addons/mail/static/src/models/attachment_delete_confirm_view.js b/addons/mail/static/src/models/attachment_delete_confirm_view.js index 3f211468bbc..87e8ded374e 100644 --- a/addons/mail/static/src/models/attachment_delete_confirm_view.js +++ b/addons/mail/static/src/models/attachment_delete_confirm_view.js @@ -1,5 +1,6 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; @@ -7,6 +8,11 @@ import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'AttachmentDeleteConfirmView', + template: 'mail.AttachmentDeleteConfirmView', + templateGetter: 'attachmentDeleteConfirmView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + }, recordMethods: { /** * Returns whether the given html element is inside this attachment delete confirm view. diff --git a/addons/mail/static/src/models/attachment_image.js b/addons/mail/static/src/models/attachment_image.js index 66335e2647d..1f0ccb11235 100644 --- a/addons/mail/static/src/models/attachment_image.js +++ b/addons/mail/static/src/models/attachment_image.js @@ -7,6 +7,8 @@ import { isEventHandled, markEventHandled } from '@mail/utils/utils'; registerModel({ name: 'AttachmentImage', + template: 'mail.AttachmentImage', + templateGetter: 'attachmentImage', recordMethods: { /** * Called when clicking on download icon. diff --git a/addons/mail/static/src/models/attachment_list.js b/addons/mail/static/src/models/attachment_list.js index b23f8967288..d9cae549aa6 100644 --- a/addons/mail/static/src/models/attachment_list.js +++ b/addons/mail/static/src/models/attachment_list.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'AttachmentList', + template: 'mail.AttachmentList', + templateGetter: 'attachmentList', identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/autocomplete_input_view.js b/addons/mail/static/src/models/autocomplete_input_view.js index 36b94232e91..e1524c43405 100644 --- a/addons/mail/static/src/models/autocomplete_input_view.js +++ b/addons/mail/static/src/models/autocomplete_input_view.js @@ -1,11 +1,60 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; +import { onMounted, onWillUnmount } from '@odoo/owl'; + registerModel({ name: 'AutocompleteInputView', + template: 'mail.AutocompleteInputView', + templateGetter: 'autocompleteInputView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + onMounted(() => { + if (!this.root.el) { + return; + } + if (this.autocompleteInputView.isFocusOnMount) { + this.root.el.focus(); + } + + const args = { + autoFocus: true, + select: (ev, ui) => { + if (this.autocompleteInputView) { + this.autocompleteInputView.onSelect(ev, ui); + } + }, + source: (req, res) => { + if (this.autocompleteInputView) { + this.autocompleteInputView.onSource(req, res); + } + }, + html: this.autocompleteInputView.isHtml, + }; + + if (this.autocompleteInputView.customClass) { + args.classes = { 'ui-autocomplete': this.autocompleteInputView.customClass }; + } + + const autoCompleteElem = $(this.root.el).autocomplete(args); + // Resize the autocomplete dropdown options to handle the long strings + // By setting the width of dropdown based on the width of the input element. + autoCompleteElem.data('ui-autocomplete')._resizeMenu = function () { + const ul = this.menu.element; + ul.outerWidth(this.element.outerWidth()); + }; + }); + onWillUnmount(() => { + if (!this.root.el) { + return; + } + $(this.root.el).autocomplete('destroy'); + }); + }, identifyingMode: 'xor', recordMethods: { onBlur() { diff --git a/addons/mail/static/src/models/call_action_list_view.js b/addons/mail/static/src/models/call_action_list_view.js index 62ae0fffa1a..aa2dda43319 100644 --- a/addons/mail/static/src/models/call_action_list_view.js +++ b/addons/mail/static/src/models/call_action_list_view.js @@ -1,11 +1,17 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'CallActionListView', + template: 'mail.CallActionListView', + templateGetter: 'callActionListView', + componentSetup() { + useRefToModel({ fieldName: 'moreButtonRef', refName: 'moreButton' }); + }, recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/call_demo_view.js b/addons/mail/static/src/models/call_demo_view.js index 33a3d7fa20d..9dd8f1fb3ec 100644 --- a/addons/mail/static/src/models/call_demo_view.js +++ b/addons/mail/static/src/models/call_demo_view.js @@ -1,10 +1,17 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { attr, one } from '@mail/model/model_field'; import { registerModel } from '@mail/model/model_core'; registerModel({ name: 'CallDemoView', + template: 'mail.CallDemoView', + templateGetter: 'callDemoView', + componentSetup() { + useRefToModel({ fieldName: 'audioRef', refName: 'audio' }); + useRefToModel({ fieldName: 'videoRef', refName: 'video' }); + }, recordMethods: { /** * Stops recording user's microphone. diff --git a/addons/mail/static/src/models/call_invite_request_popup.js b/addons/mail/static/src/models/call_invite_request_popup.js index 74d4bdb3e4a..45ef8f2ff6d 100644 --- a/addons/mail/static/src/models/call_invite_request_popup.js +++ b/addons/mail/static/src/models/call_invite_request_popup.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'CallInviteRequestPopup', + template: 'mail.CallInviteRequestPopup', + templateGetter: 'callInviteRequestPopup', recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/call_main_view.js b/addons/mail/static/src/models/call_main_view.js index 97b9c21926e..9b73f2ad010 100644 --- a/addons/mail/static/src/models/call_main_view.js +++ b/addons/mail/static/src/models/call_main_view.js @@ -1,13 +1,30 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; import { isEventHandled, markEventHandled } from '@mail/utils/utils'; +import { onMounted, onWillUnmount } from '@odoo/owl'; + registerModel({ name: 'CallMainView', + template: 'mail.CallMainView', + templateGetter: 'callMainView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + useRefToModel({ fieldName: 'tileContainerRef', refName: 'tileContainer', }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + onMounted(() => { + this.resizeObserver = new ResizeObserver(() => this.callMainView.onResize()); + this.resizeObserver.observe(this.root.el); + }); + onWillUnmount(() => this.resizeObserver.disconnect()); + }, recordMethods: { /** * Finds a tile layout and dimensions that respects param0.aspectRatio while maximizing diff --git a/addons/mail/static/src/models/call_option_menu.js b/addons/mail/static/src/models/call_option_menu.js index 26d3da5c172..db0db29f7c7 100644 --- a/addons/mail/static/src/models/call_option_menu.js +++ b/addons/mail/static/src/models/call_option_menu.js @@ -1,10 +1,16 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { one } from '@mail/model/model_field'; registerModel({ name: 'CallOptionMenu', + template: 'mail.CallOptionMenu', + templateGetter: 'callOptionMenu', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + }, recordMethods: { /** * Creates and download a file that contains the logs of the current RTC call. diff --git a/addons/mail/static/src/models/call_participant_card.js b/addons/mail/static/src/models/call_participant_card.js index a00e84fc899..a3250af572e 100644 --- a/addons/mail/static/src/models/call_participant_card.js +++ b/addons/mail/static/src/models/call_participant_card.js @@ -1,5 +1,6 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; @@ -7,6 +8,11 @@ import { isEventHandled, markEventHandled } from '@mail/utils/utils'; registerModel({ name: 'CallParticipantCard', + template: 'mail.CallParticipantCard', + templateGetter: 'callParticipantCard', + componentSetup() { + useRefToModel({ fieldName: 'volumeMenuAnchorRef', refName: 'volumeMenuAnchor' }); + }, identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/call_participant_card_popover_content_view.js b/addons/mail/static/src/models/call_participant_card_popover_content_view.js index baecafb1b6b..197eda9c6b4 100644 --- a/addons/mail/static/src/models/call_participant_card_popover_content_view.js +++ b/addons/mail/static/src/models/call_participant_card_popover_content_view.js @@ -7,6 +7,8 @@ import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'CallParticipantCardPopoverContentView', + template: 'mail.CallParticipantCardPopoverContentView', + templateGetter: 'callParticipantCardPopoverContentView', recordMethods: { /** * @param {Event} ev diff --git a/addons/mail/static/src/models/call_participant_video_view.js b/addons/mail/static/src/models/call_participant_video_view.js index 677efd1a1f1..2d264f2e323 100644 --- a/addons/mail/static/src/models/call_participant_video_view.js +++ b/addons/mail/static/src/models/call_participant_video_view.js @@ -1,11 +1,19 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'CallParticipantVideoView', + template: 'mail.CallParticipantVideoView', + templateGetter: 'callParticipantVideoView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, recordMethods: { /** * Since it is not possible to directly put a mediaStreamObject as the src diff --git a/addons/mail/static/src/models/call_settings_menu.js b/addons/mail/static/src/models/call_settings_menu.js index 6844bf64b8d..89430b03102 100644 --- a/addons/mail/static/src/models/call_settings_menu.js +++ b/addons/mail/static/src/models/call_settings_menu.js @@ -8,6 +8,8 @@ import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'CallSettingsMenu', + template: 'mail.CallSettingsMenu', + templateGetter: 'callSettingsMenu', identifyingMode: 'xor', lifecycleHooks: { async _created() { diff --git a/addons/mail/static/src/models/call_sidebar_view.js b/addons/mail/static/src/models/call_sidebar_view.js index 61bec9bc4e1..e08e1a94048 100644 --- a/addons/mail/static/src/models/call_sidebar_view.js +++ b/addons/mail/static/src/models/call_sidebar_view.js @@ -5,6 +5,8 @@ import { many, one } from '@mail/model/model_field'; registerModel({ name: 'CallSidebarView', + template: 'mail.CallSidebarView', + templateGetter: 'callSidebarView', fields: { callView: one('CallView', { identifying: true, diff --git a/addons/mail/static/src/models/call_view.js b/addons/mail/static/src/models/call_view.js index d4502366146..6cf712fb416 100644 --- a/addons/mail/static/src/models/call_view.js +++ b/addons/mail/static/src/models/call_view.js @@ -8,6 +8,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'CallView', + template: 'mail.CallView', + templateGetter: 'callView', lifecycleHooks: { _created() { browser.addEventListener('fullscreenchange', this._onFullScreenChange); diff --git a/addons/mail/static/src/models/channel_invitation_form.js b/addons/mail/static/src/models/channel_invitation_form.js index 1b8afd92111..e994383768c 100644 --- a/addons/mail/static/src/models/channel_invitation_form.js +++ b/addons/mail/static/src/models/channel_invitation_form.js @@ -1,5 +1,8 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear, link, unlink } from '@mail/model/model_field_command'; @@ -9,6 +12,13 @@ import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'ChannelInvitationForm', + template: 'mail.ChannelInvitationForm', + templateGetter: 'channelInvitationForm', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + useRefToModel({ fieldName: 'searchInputRef', refName: 'searchInput' }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/channel_invitation_form_selectable_partner_view.js b/addons/mail/static/src/models/channel_invitation_form_selectable_partner_view.js index 1f7adcd252a..dac3d7f5d3b 100644 --- a/addons/mail/static/src/models/channel_invitation_form_selectable_partner_view.js +++ b/addons/mail/static/src/models/channel_invitation_form_selectable_partner_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ChannelInvitationFormSelectablePartnerView', + template: 'mail.ChannelInvitationFormSelectablePartnerView', + templateGetter: 'channelInvitationFormSelectablePartnerView', fields: { channelInvitationFormOwner: one('ChannelInvitationForm', { identifying: true, diff --git a/addons/mail/static/src/models/channel_invitation_form_selected_partner_view.js b/addons/mail/static/src/models/channel_invitation_form_selected_partner_view.js index b602cba4bb9..645e25c9bb2 100644 --- a/addons/mail/static/src/models/channel_invitation_form_selected_partner_view.js +++ b/addons/mail/static/src/models/channel_invitation_form_selected_partner_view.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'ChannelInvitationFormSelectedPartnerView', + template: 'mail.ChannelInvitationFormSelectedPartnerView', + templateGetter: 'channelInvitationFormSelectedPartnerView', fields: { channelInvitationFormOwner: one('ChannelInvitationForm', { identifying: true, diff --git a/addons/mail/static/src/models/channel_member_list_category_view.js b/addons/mail/static/src/models/channel_member_list_category_view.js index 28d9c632d14..53d4a74d848 100644 --- a/addons/mail/static/src/models/channel_member_list_category_view.js +++ b/addons/mail/static/src/models/channel_member_list_category_view.js @@ -8,6 +8,7 @@ import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'ChannelMemberListCategoryView', + template: 'mail.ChannelMemberListCategoryView', identifyingMode: 'xor', fields: { channel: one('Channel', { diff --git a/addons/mail/static/src/models/channel_member_list_view.js b/addons/mail/static/src/models/channel_member_list_view.js index c71d4b43755..6fdeba1c25f 100644 --- a/addons/mail/static/src/models/channel_member_list_view.js +++ b/addons/mail/static/src/models/channel_member_list_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ChannelMemberListView', + template: 'mail.ChannelMemberListView', + templateGetter: 'channelMemberListView', identifyingMode: 'xor', lifecycleHooks: { _created() { diff --git a/addons/mail/static/src/models/channel_member_view.js b/addons/mail/static/src/models/channel_member_view.js index 4c3e99a3161..0b6b32d346e 100644 --- a/addons/mail/static/src/models/channel_member_view.js +++ b/addons/mail/static/src/models/channel_member_view.js @@ -7,6 +7,8 @@ import { isEventHandled } from '@mail/utils/utils'; registerModel({ name: 'ChannelMemberView', + template: 'mail.ChannelMemberView', + templateGetter: 'channelMemberView', recordMethods: { /** * Handles click on channel member in the member list of this channel. diff --git a/addons/mail/static/src/models/channel_preview_view.js b/addons/mail/static/src/models/channel_preview_view.js index 473bae2b806..41e03b8dc3b 100644 --- a/addons/mail/static/src/models/channel_preview_view.js +++ b/addons/mail/static/src/models/channel_preview_view.js @@ -1,5 +1,6 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; @@ -7,6 +8,11 @@ import { htmlToTextContentInline } from '@mail/js/utils'; registerModel({ name: 'ChannelPreviewView', + template: 'mail.ChannelPreviewView', + templateGetter: 'channelPreviewView', + componentSetup() { + useRefToModel({ fieldName: 'markAsReadRef', refName: 'markAsRead' }); + }, recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/chat_window_header_view.js b/addons/mail/static/src/models/chat_window_header_view.js index 5874e0fc6c9..14b37532aa9 100644 --- a/addons/mail/static/src/models/chat_window_header_view.js +++ b/addons/mail/static/src/models/chat_window_header_view.js @@ -7,6 +7,8 @@ import { isEventHandled } from '@mail/utils/utils'; registerModel({ name: 'ChatWindowHeaderView', + template: 'mail.ChatWindowHeaderView', + templateGetter: 'chatWindowHeaderView', recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/chat_window_hidden_menu_item_view.js b/addons/mail/static/src/models/chat_window_hidden_menu_item_view.js index a8abe3f4107..ab0b8b95e49 100644 --- a/addons/mail/static/src/models/chat_window_hidden_menu_item_view.js +++ b/addons/mail/static/src/models/chat_window_hidden_menu_item_view.js @@ -5,6 +5,8 @@ import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'ChatWindowHiddenMenuItemView', + template: 'mail.ChatWindowHiddenMenuItemView', + templateGetter: 'chatWindowHiddenMenuItemView', fields: { chatWindowHeaderView: one('ChatWindowHeaderView', { identifying: true, diff --git a/addons/mail/static/src/models/chat_window_hidden_menu_view.js b/addons/mail/static/src/models/chat_window_hidden_menu_view.js index 8080821d8ca..b551224eb14 100644 --- a/addons/mail/static/src/models/chat_window_hidden_menu_view.js +++ b/addons/mail/static/src/models/chat_window_hidden_menu_view.js @@ -1,11 +1,21 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ChatWindowHiddenMenuView', + template: 'mail.ChatWindowHiddenMenuView', + templateGetter: 'chatWindowHiddenMenuView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + useRefToModel({ fieldName: 'listRef', refName: 'list' }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, lifecycleHooks: { _created() { document.addEventListener('click', this._onClickCaptureGlobal, true); diff --git a/addons/mail/static/src/models/chatter_topbar.js b/addons/mail/static/src/models/chatter_topbar.js index b86e626d27d..5aa8bfd6887 100644 --- a/addons/mail/static/src/models/chatter_topbar.js +++ b/addons/mail/static/src/models/chatter_topbar.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ChatterTopbar', + template: 'mail.ChatterTopbar', + templateGetter: 'chatterTopbar', fields: { /** * Determines the label on the attachment button of the topbar. diff --git a/addons/mail/static/src/models/composer_suggested_recipient_list_view.js b/addons/mail/static/src/models/composer_suggested_recipient_list_view.js index fa9c4c7936a..387f969987a 100644 --- a/addons/mail/static/src/models/composer_suggested_recipient_list_view.js +++ b/addons/mail/static/src/models/composer_suggested_recipient_list_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ComposerSuggestedRecipientListView', + template: 'mail.ComposerSuggestedRecipientListView', + templateGetter: 'composerSuggestedRecipientListView', recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/composer_suggestion_list_view.js b/addons/mail/static/src/models/composer_suggestion_list_view.js index bcd2e4162ed..beac21f2050 100644 --- a/addons/mail/static/src/models/composer_suggestion_list_view.js +++ b/addons/mail/static/src/models/composer_suggestion_list_view.js @@ -5,6 +5,8 @@ import { attr, many, one } from '@mail/model/model_field'; registerModel({ name: 'ComposerSuggestionListView', + template: 'mail.ComposerSuggestionListView', + templateGetter: 'composerSuggestionListView', recordMethods: { /** * Sets the first suggestion as active. Main and extra records are diff --git a/addons/mail/static/src/models/composer_suggestion_view.js b/addons/mail/static/src/models/composer_suggestion_view.js index 26f1f872f68..bf8758e4c6c 100644 --- a/addons/mail/static/src/models/composer_suggestion_view.js +++ b/addons/mail/static/src/models/composer_suggestion_view.js @@ -1,5 +1,7 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; @@ -13,6 +15,12 @@ import { sprintf } from '@web/core/utils/strings'; */ registerModel({ name: 'ComposerSuggestionView', + template: 'mail.ComposerSuggestionView', + templateGetter: 'composerSuggestionView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/composer_text_input_view.js b/addons/mail/static/src/models/composer_text_input_view.js index 1829b576550..ad9bfb1fcc5 100644 --- a/addons/mail/static/src/models/composer_text_input_view.js +++ b/addons/mail/static/src/models/composer_text_input_view.js @@ -1,10 +1,25 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'ComposerTextInputView', + template: 'mail.ComposerTextInputView', + templateGetter: 'composerTextInputView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + useRefToModel({ fieldName: 'mirroredTextareaRef', refName: 'mirroredTextarea' }); + useRefToModel({ fieldName: 'textareaRef', refName: 'textarea' }); + /** + * Updates the composer text input content when composer is mounted + * as textarea content can't be changed from the DOM. + */ + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, recordMethods: { onComponentUpdate() { if (!this.component.root.el) { diff --git a/addons/mail/static/src/models/composer_view.js b/addons/mail/static/src/models/composer_view.js index d4d8111cea7..3478918f8b6 100644 --- a/addons/mail/static/src/models/composer_view.js +++ b/addons/mail/static/src/models/composer_view.js @@ -1,5 +1,7 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear, link } from '@mail/model/model_field_command'; @@ -11,6 +13,12 @@ import { url } from '@web/core/utils/urls'; registerModel({ name: 'ComposerView', + template: 'mail.ComposerView', + templateGetter: 'composerView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + useRefToModel({ fieldName: 'buttonEmojisRef', refName: 'buttonEmojis' }); + }, identifyingMode: 'xor', lifecycleHooks: { _created() { diff --git a/addons/mail/static/src/models/delete_message_confirm_view.js b/addons/mail/static/src/models/delete_message_confirm_view.js index 06c916edccd..2172f05d367 100644 --- a/addons/mail/static/src/models/delete_message_confirm_view.js +++ b/addons/mail/static/src/models/delete_message_confirm_view.js @@ -1,11 +1,17 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'DeleteMessageConfirmView', + template: 'mail.DeleteMessageConfirmView', + templateGetter: 'deleteMessageConfirmView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + }, recordMethods: { /** * Returns whether the given html element is inside this delete message confirm view. diff --git a/addons/mail/static/src/models/discuss_mobile_mailbox_selection_item_view.js b/addons/mail/static/src/models/discuss_mobile_mailbox_selection_item_view.js index d764e388c83..0331223a5e0 100644 --- a/addons/mail/static/src/models/discuss_mobile_mailbox_selection_item_view.js +++ b/addons/mail/static/src/models/discuss_mobile_mailbox_selection_item_view.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'DiscussMobileMailboxSelectionItemView', + template: 'mail.DiscussMobileMailboxSelectionItemView', + templateGetter: 'discussMobileMailboxSelectionItemView', recordMethods: { onClick() { if (!this.exists()) { diff --git a/addons/mail/static/src/models/discuss_mobile_mailbox_selection_view.js b/addons/mail/static/src/models/discuss_mobile_mailbox_selection_view.js index 456a04655a4..9abeec2a523 100644 --- a/addons/mail/static/src/models/discuss_mobile_mailbox_selection_view.js +++ b/addons/mail/static/src/models/discuss_mobile_mailbox_selection_view.js @@ -5,6 +5,8 @@ import { many, one } from '@mail/model/model_field'; registerModel({ name: 'DiscussMobileMailboxSelectionView', + template: 'mail.DiscussMobileMailboxSelectionView', + templateGetter: 'discussMobileMailboxSelectionView', fields: { items: many('DiscussMobileMailboxSelectionItemView', { compute() { diff --git a/addons/mail/static/src/models/discuss_sidebar_category.js b/addons/mail/static/src/models/discuss_sidebar_category.js index 3ad0704a14e..26c43c6ee88 100644 --- a/addons/mail/static/src/models/discuss_sidebar_category.js +++ b/addons/mail/static/src/models/discuss_sidebar_category.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'DiscussSidebarCategory', + template: 'mail.DiscussSidebarCategory', + templateGetter: 'category', identifyingMode: 'xor', modelMethods: { /** diff --git a/addons/mail/static/src/models/discuss_sidebar_category_item.js b/addons/mail/static/src/models/discuss_sidebar_category_item.js index fa6e722168f..06202a7bf0d 100644 --- a/addons/mail/static/src/models/discuss_sidebar_category_item.js +++ b/addons/mail/static/src/models/discuss_sidebar_category_item.js @@ -8,6 +8,8 @@ import Dialog from 'web.Dialog'; registerModel({ name: 'DiscussSidebarCategoryItem', + template: 'mail.DiscussSidebarCategoryItem', + templateGetter: 'categoryItem', recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/discuss_sidebar_mailbox_view.js b/addons/mail/static/src/models/discuss_sidebar_mailbox_view.js index df01a38c543..84fe8492418 100644 --- a/addons/mail/static/src/models/discuss_sidebar_mailbox_view.js +++ b/addons/mail/static/src/models/discuss_sidebar_mailbox_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'DiscussSidebarMailboxView', + template: 'mail.DiscussSidebarMailboxView', + templateGetter: 'discussSidebarMailboxView', identifyingMode: 'xor', fields: { discussViewOwnerAsHistory: one('DiscussView', { diff --git a/addons/mail/static/src/models/discuss_sidebar_view.js b/addons/mail/static/src/models/discuss_sidebar_view.js index 3b1acd6cd75..2f1a3f2d975 100644 --- a/addons/mail/static/src/models/discuss_sidebar_view.js +++ b/addons/mail/static/src/models/discuss_sidebar_view.js @@ -1,10 +1,18 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'DiscussSidebarView', + template: 'mail.DiscussSidebarView', + templateGetter: 'discussSidebarView', + componentSetup() { + useRefToModel({ fieldName: 'quickSearchInputRef', refName: 'quickSearchInput' }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, recordMethods: { onComponentUpdate() { if (this.quickSearchInputRef.el) { diff --git a/addons/mail/static/src/models/drop_zone_view.js b/addons/mail/static/src/models/drop_zone_view.js index 6a60fbd9829..3730f905e5c 100644 --- a/addons/mail/static/src/models/drop_zone_view.js +++ b/addons/mail/static/src/models/drop_zone_view.js @@ -6,6 +6,8 @@ import { decrement, increment } from '@mail/model/model_field_command'; registerModel({ name: 'DropZoneView', + template: 'mail.DropZoneView', + templateGetter: 'dropZoneView', identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/emoji_category_bar_view.js b/addons/mail/static/src/models/emoji_category_bar_view.js index 1c850b41833..4dc4a82eef2 100644 --- a/addons/mail/static/src/models/emoji_category_bar_view.js +++ b/addons/mail/static/src/models/emoji_category_bar_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'EmojiCategoryBarView', + template: 'mail.EmojiCategoryBarView', + templateGetter: 'emojiCategoryBarView', fields: { emojiCategoryViews: many('EmojiCategoryView', { compute() { diff --git a/addons/mail/static/src/models/emoji_category_view.js b/addons/mail/static/src/models/emoji_category_view.js index 8a79fa9e03f..a5406c8622e 100644 --- a/addons/mail/static/src/models/emoji_category_view.js +++ b/addons/mail/static/src/models/emoji_category_view.js @@ -5,6 +5,8 @@ import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'EmojiCategoryView', + template: 'mail.EmojiCategoryView', + templateGetter: 'emojiCategoryView', recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/emoji_grid_item_view.js b/addons/mail/static/src/models/emoji_grid_item_view.js index 5f6929a4c50..a9e52c96d48 100644 --- a/addons/mail/static/src/models/emoji_grid_item_view.js +++ b/addons/mail/static/src/models/emoji_grid_item_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'EmojiGridItemView', + template: 'mail.EmojiGridItemView', + templateGetter: 'emojiGridItemView', fields: { emojiOrEmojiInCategory: one('EmojiOrEmojiInCategory', { identifying: true, diff --git a/addons/mail/static/src/models/emoji_grid_loading_screen.js b/addons/mail/static/src/models/emoji_grid_loading_screen.js index 0b40d52c221..99e424738ac 100644 --- a/addons/mail/static/src/models/emoji_grid_loading_screen.js +++ b/addons/mail/static/src/models/emoji_grid_loading_screen.js @@ -5,6 +5,8 @@ import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'EmojiGridLoadingScreen', + template: 'mail.EmojiGridLoadingScreen', + templateGetter: 'EmojiGridLoadingScreen', fields: { emojiGridViewOwner: one('EmojiGridView', { identifying: true, diff --git a/addons/mail/static/src/models/emoji_grid_row_view.js b/addons/mail/static/src/models/emoji_grid_row_view.js index 90eb2eecdbd..0a6f38a718b 100644 --- a/addons/mail/static/src/models/emoji_grid_row_view.js +++ b/addons/mail/static/src/models/emoji_grid_row_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'EmojiGridRowView', + template: 'mail.EmojiGridRowView', + templateGetter: 'emojiGridRowView', fields: { emojiGridViewOwner: one('EmojiGridView', { related: 'emojiGridViewRowRegistryOwner.emojiGridViewOwner', diff --git a/addons/mail/static/src/models/emoji_grid_no_search_content_view.js b/addons/mail/static/src/models/emoji_grid_search_no_content_view.js similarity index 75% rename from addons/mail/static/src/models/emoji_grid_no_search_content_view.js rename to addons/mail/static/src/models/emoji_grid_search_no_content_view.js index ea9e418e33a..1bd286b70bb 100644 --- a/addons/mail/static/src/models/emoji_grid_no_search_content_view.js +++ b/addons/mail/static/src/models/emoji_grid_search_no_content_view.js @@ -4,7 +4,9 @@ import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; registerModel({ - name: 'EmojiGridNoSearchContentView', + name: 'EmojiGridSearchNoContentView', + template: 'mail.EmojiGridSearchNoContentView', + templateGetter: 'emojiGridSearchNoContentView', fields: { emojiGridViewOwner: one('EmojiGridView', { identifying: true, diff --git a/addons/mail/static/src/models/emoji_grid_section_view.js b/addons/mail/static/src/models/emoji_grid_section_view.js index b0b83f3cc90..1be5c372fba 100644 --- a/addons/mail/static/src/models/emoji_grid_section_view.js +++ b/addons/mail/static/src/models/emoji_grid_section_view.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'EmojiGridSectionView', + template: 'mail.EmojiGridSectionView', + templateGetter: 'emojiGridSectionView', fields: { category: one('EmojiCategory', { related: 'viewCategory.category', diff --git a/addons/mail/static/src/models/emoji_grid_view.js b/addons/mail/static/src/models/emoji_grid_view.js index 9632dec8a93..57d5338b8de 100644 --- a/addons/mail/static/src/models/emoji_grid_view.js +++ b/addons/mail/static/src/models/emoji_grid_view.js @@ -1,11 +1,21 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear, increment } from '@mail/model/model_field_command'; registerModel({ name: 'EmojiGridView', + template: 'mail.EmojiGridView', + templateGetter: 'emojiGridView', + componentSetup() { + useRefToModel({ fieldName: 'containerRef', refName: 'containerRef'}); + useRefToModel({ fieldName: 'listRef', refName: 'listRef'}); + useRefToModel({ fieldName: 'viewBlockRef', refName: 'viewBlockRef'}); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, recordMethods: { doJumpToCategorySelectedByUser() { this.containerRef.el.scrollTo({ @@ -212,7 +222,7 @@ registerModel({ scrollRecomputeCount: attr({ default: 0, }), - searchNoContentView: one('EmojiGridNoSearchContentView', { + searchNoContentView: one('EmojiGridSearchNoContentView', { compute() { if (this.emojiPickerViewOwner.emojiSearchBarView.currentSearch !== "" && this.rows.length === 0) { return {}; diff --git a/addons/mail/static/src/models/emoji_picker_header_action_list_view.js b/addons/mail/static/src/models/emoji_picker_header_action_list_view.js index 13ebb63924f..fc3227baa48 100644 --- a/addons/mail/static/src/models/emoji_picker_header_action_list_view.js +++ b/addons/mail/static/src/models/emoji_picker_header_action_list_view.js @@ -5,6 +5,8 @@ import { many, one } from '@mail/model/model_field'; registerModel({ name: 'EmojiPickerHeaderActionListView', + template: 'mail.EmojiPickerHeaderActionListView', + templateGetter: 'emojiPickerHeaderActionListView', fields: { __dummyActionView: one('EmojiPickerHeaderActionView', { inverse: '__ownerAsDummy', diff --git a/addons/mail/static/src/models/emoji_picker_header_action_view.js b/addons/mail/static/src/models/emoji_picker_header_action_view.js index e20ba72ab30..11cc679fa1f 100644 --- a/addons/mail/static/src/models/emoji_picker_header_action_view.js +++ b/addons/mail/static/src/models/emoji_picker_header_action_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'EmojiPickerHeaderActionView', + template: 'mail.EmojiPickerHeaderActionView', + templateGetter: 'emojiPickerHeaderActionView', identifyingMode: 'xor', fields: { // dummy identifying field, so that it works without defining one initially in mail diff --git a/addons/mail/static/src/models/emoji_picker_header_view.js b/addons/mail/static/src/models/emoji_picker_header_view.js index 59e76f1051f..2a1868b4b1f 100644 --- a/addons/mail/static/src/models/emoji_picker_header_view.js +++ b/addons/mail/static/src/models/emoji_picker_header_view.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'EmojiPickerHeaderView', + template: 'mail.EmojiPickerHeaderView', + templateGetter: 'emojiPickerHeaderView', fields: { actionListView: one('EmojiPickerHeaderActionListView', { default: {}, diff --git a/addons/mail/static/src/models/emoji_picker_view.js b/addons/mail/static/src/models/emoji_picker_view.js index f569f7321eb..d19facea8d6 100644 --- a/addons/mail/static/src/models/emoji_picker_view.js +++ b/addons/mail/static/src/models/emoji_picker_view.js @@ -1,11 +1,17 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'EmojiPickerView', + template: 'mail.EmojiPickerView', + templateGetter: 'emojiPickerView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + }, lifecycleHooks: { _created() { if (this.messaging.emojiRegistry.isLoaded || this.messaging.emojiRegistry.isLoading) { diff --git a/addons/mail/static/src/models/emoji_search_bar_view.js b/addons/mail/static/src/models/emoji_search_bar_view.js index f6209721268..4dce682a2ac 100644 --- a/addons/mail/static/src/models/emoji_search_bar_view.js +++ b/addons/mail/static/src/models/emoji_search_bar_view.js @@ -1,10 +1,18 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'EmojiSearchBarView', + template: 'mail.EmojiSearchBarView', + templateGetter: 'emojiSearchBarView', + componentSetup() { + useRefToModel({ fieldName: 'inputRef', refName: 'input' }); + useUpdateToModel({ methodName: 'onComponentUpdate', modelName: 'EmojiSearchBarView' }); + }, lifecycleHooks: { _created() { if (!this.messaging.device.isSmall) { diff --git a/addons/mail/static/src/models/emoji_view.js b/addons/mail/static/src/models/emoji_view.js index b24ca5b33bb..dd62add7fbd 100644 --- a/addons/mail/static/src/models/emoji_view.js +++ b/addons/mail/static/src/models/emoji_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'EmojiView', + template: 'mail.EmojiView', + templateGetter: 'emojiView', recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/follow_button_view.js b/addons/mail/static/src/models/follow_button_view.js index d44490a3a41..313640ae784 100644 --- a/addons/mail/static/src/models/follow_button_view.js +++ b/addons/mail/static/src/models/follow_button_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'FollowButtonView', + template: 'mail.FollowButtonView', + templateGetter: 'followButtonView', recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/follower_list_menu_view.js b/addons/mail/static/src/models/follower_list_menu_view.js index 48da5184cc7..3eda54a322d 100644 --- a/addons/mail/static/src/models/follower_list_menu_view.js +++ b/addons/mail/static/src/models/follower_list_menu_view.js @@ -1,10 +1,16 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; registerModel({ name: 'FollowerListMenuView', + template: 'mail.FollowerListMenuView', + templateGetter: 'followerListMenuView', + componentSetup() { + useRefToModel({ fieldName: 'dropdownRef', refName: 'dropdown' }); + }, lifecycleHooks: { _created() { document.addEventListener('click', this._onClickCaptureGlobal, true); diff --git a/addons/mail/static/src/models/follower_subtype_list.js b/addons/mail/static/src/models/follower_subtype_list.js index aa2f1af26d6..8cf7fd1efd9 100644 --- a/addons/mail/static/src/models/follower_subtype_list.js +++ b/addons/mail/static/src/models/follower_subtype_list.js @@ -1,11 +1,17 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, many, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'FollowerSubtypeList', + template: 'mail.FollowerSubtypeList', + templateGetter: 'followerSubtypeList', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + }, recordMethods: { /** * Returns whether the given html element is inside this follower subtype list. diff --git a/addons/mail/static/src/models/follower_subtype_view.js b/addons/mail/static/src/models/follower_subtype_view.js index 86333ad86e2..1c2cc5a7623 100644 --- a/addons/mail/static/src/models/follower_subtype_view.js +++ b/addons/mail/static/src/models/follower_subtype_view.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'FollowerSubtypeView', + template: 'mail.FollowerSubtypeView', + templateGetter: 'followerSubtypeView', recordMethods: { /** * Called when clicking on cancel button. diff --git a/addons/mail/static/src/models/follower_view.js b/addons/mail/static/src/models/follower_view.js index 372c38df616..8d57c500b96 100644 --- a/addons/mail/static/src/models/follower_view.js +++ b/addons/mail/static/src/models/follower_view.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'FollowerView', + template: 'mail.FollowerView', + templateGetter: 'followerView', recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/link_preview_aside_view.js b/addons/mail/static/src/models/link_preview_aside_view.js index 521fc06e34e..5152af0a6ce 100644 --- a/addons/mail/static/src/models/link_preview_aside_view.js +++ b/addons/mail/static/src/models/link_preview_aside_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'LinkPreviewAsideView', + template: 'mail.LinkPreviewAsideView', + templateGetter: 'linkPreviewAsideView', identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/link_preview_card_view.js b/addons/mail/static/src/models/link_preview_card_view.js index 46b52e75397..29344947617 100644 --- a/addons/mail/static/src/models/link_preview_card_view.js +++ b/addons/mail/static/src/models/link_preview_card_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'LinkPreviewCardView', + template: 'mail.LinkPreviewCardView', + templateGetter: 'linkPreviewCardView', recordMethods: { /** * Handles mouse enter event for the container of this element. diff --git a/addons/mail/static/src/models/link_preview_delete_confirm_view.js b/addons/mail/static/src/models/link_preview_delete_confirm_view.js index 009e1cb7891..3b95bf7216a 100644 --- a/addons/mail/static/src/models/link_preview_delete_confirm_view.js +++ b/addons/mail/static/src/models/link_preview_delete_confirm_view.js @@ -1,10 +1,16 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'LinkPreviewDeleteConfirmView', + template: 'mail.LinkPreviewDeleteConfirmView', + templateGetter: 'linkPreviewDeleteConfirmView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + }, recordMethods: { /** * Returns whether the given html element is inside this attachment delete confirm view. diff --git a/addons/mail/static/src/models/link_preview_image_view.js b/addons/mail/static/src/models/link_preview_image_view.js index 2ed05c6215c..411722168cf 100644 --- a/addons/mail/static/src/models/link_preview_image_view.js +++ b/addons/mail/static/src/models/link_preview_image_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'LinkPreviewImageView', + template: 'mail.LinkPreviewImageView', + templateGetter: 'linkPreviewImageView', recordMethods: { /** * Handles mouse enter event for the container of this element. diff --git a/addons/mail/static/src/models/link_preview_list_view.js b/addons/mail/static/src/models/link_preview_list_view.js index fd00bfea5a0..6593ddd4aa1 100644 --- a/addons/mail/static/src/models/link_preview_list_view.js +++ b/addons/mail/static/src/models/link_preview_list_view.js @@ -5,6 +5,8 @@ import { many, one } from '@mail/model/model_field'; registerModel({ name: 'LinkPreviewListView', + template: 'mail.LinkPreviewListView', + templateGetter: 'linkPreviewListView', fields: { /** * Determines if we are in the ChatWindow view AND if the message is left aligned diff --git a/addons/mail/static/src/models/link_preview_video_view.js b/addons/mail/static/src/models/link_preview_video_view.js index a13f7d6766d..3d375a8dcae 100644 --- a/addons/mail/static/src/models/link_preview_video_view.js +++ b/addons/mail/static/src/models/link_preview_video_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'LinkPreviewVideoView', + template: 'mail.LinkPreviewVideoView', + templateGetter: 'linkPreviewVideoView', recordMethods: { /** * Handles mouse enter event for the container of this element. diff --git a/addons/mail/static/src/models/mail_template_view.js b/addons/mail/static/src/models/mail_template_view.js index a9fecab6d49..29c41021c7c 100644 --- a/addons/mail/static/src/models/mail_template_view.js +++ b/addons/mail/static/src/models/mail_template_view.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'MailTemplateView', + template: 'mail.MailTemplateView', + templateGetter: 'mailTemplateView', recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/message_action_list.js b/addons/mail/static/src/models/message_action_list.js index fd9c6305fad..8c9150cade1 100644 --- a/addons/mail/static/src/models/message_action_list.js +++ b/addons/mail/static/src/models/message_action_list.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'MessageActionList', + template: "mail.MessageActionList", + templateGetter: 'messageActionList', fields: { actionViewsCount: attr({ default: 0, diff --git a/addons/mail/static/src/models/message_action_view.js b/addons/mail/static/src/models/message_action_view.js index efecd79aaf7..0cd59137151 100644 --- a/addons/mail/static/src/models/message_action_view.js +++ b/addons/mail/static/src/models/message_action_view.js @@ -1,5 +1,6 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; @@ -7,6 +8,11 @@ import { markEventHandled } from '@mail/utils/utils'; registerModel({ name: 'MessageActionView', + template: "mail.MessageActionView", + templateGetter: 'messageActionView', + componentSetup() { + useRefToModel({ fieldName: 'actionRef', refName: 'action' }); + }, recordMethods: { /** * @private diff --git a/addons/mail/static/src/models/message_author_prefix_view.js b/addons/mail/static/src/models/message_author_prefix_view.js index 8387f84ad7b..3b90ff1f633 100644 --- a/addons/mail/static/src/models/message_author_prefix_view.js +++ b/addons/mail/static/src/models/message_author_prefix_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'MessageAuthorPrefixView', + template: 'mail.MessageAuthorPrefixView', + templateGetter: 'messageAuthorPrefixView', identifyingMode: 'xor', fields: { channelPreviewViewOwner: one('ChannelPreviewView', { diff --git a/addons/mail/static/src/models/message_in_reply_to_view.js b/addons/mail/static/src/models/message_in_reply_to_view.js index c5b23c032e3..448c886341b 100644 --- a/addons/mail/static/src/models/message_in_reply_to_view.js +++ b/addons/mail/static/src/models/message_in_reply_to_view.js @@ -6,6 +6,8 @@ import { markEventHandled } from '@mail/utils/utils'; registerModel({ name: 'MessageInReplyToView', + template: "mail.MessageInReplyToView", + templateGetter: 'messageInReplyToView', recordMethods: { /** * @private diff --git a/addons/mail/static/src/models/message_notification_popover_content_view.js b/addons/mail/static/src/models/message_notification_popover_content_view.js index fd0c95de61f..84dedd8a206 100644 --- a/addons/mail/static/src/models/message_notification_popover_content_view.js +++ b/addons/mail/static/src/models/message_notification_popover_content_view.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'MessageNotificationPopoverContentView', + template: 'mail.MessageNotificationPopoverContentView', + templateGetter: 'messageNotificationPopoverContentView', fields: { messageView: one('MessageView', { related: 'popoverViewOwner.messageViewOwnerAsNotificationContent', diff --git a/addons/mail/static/src/models/message_reaction_group.js b/addons/mail/static/src/models/message_reaction_group.js index d568b40d4c5..a6cb77b2ef7 100644 --- a/addons/mail/static/src/models/message_reaction_group.js +++ b/addons/mail/static/src/models/message_reaction_group.js @@ -7,6 +7,8 @@ import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'MessageReactionGroup', + template: 'mail.MessageReactionGroup', + templateGetter: 'messageReactionGroup', recordMethods: { /** * Handles click on the reaction group. diff --git a/addons/mail/static/src/models/message_seen_indicator_view.js b/addons/mail/static/src/models/message_seen_indicator_view.js index cfdb5ffc29c..25377a9991f 100644 --- a/addons/mail/static/src/models/message_seen_indicator_view.js +++ b/addons/mail/static/src/models/message_seen_indicator_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'MessageSeenIndicatorView', + template: 'mail.MessageSeenIndicatorView', + templateGetter: 'messageSeenIndicatorView', fields: { messageViewOwner: one('MessageView', { identifying: true, diff --git a/addons/mail/static/src/models/message_view.js b/addons/mail/static/src/models/message_view.js index a8eabd2a749..7694549021c 100644 --- a/addons/mail/static/src/models/message_view.js +++ b/addons/mail/static/src/models/message_view.js @@ -1,5 +1,8 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear, increment } from '@mail/model/model_field_command'; @@ -7,6 +10,15 @@ import { isEventHandled, markEventHandled } from '@mail/utils/utils'; registerModel({ name: 'MessageView', + template: 'mail.MessageView', + templateGetter: 'messageView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + useRefToModel({ fieldName: 'contentRef', refName: 'content' }); + useRefToModel({ fieldName: 'notificationIconRef', refName: 'notificationIcon' }); + useRefToModel({ fieldName: 'prettyBodyRef', refName: 'prettyBody' }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/messaging_menu_tab_view.js b/addons/mail/static/src/models/messaging_menu_tab_view.js index 2b791353ab2..c2edac03828 100644 --- a/addons/mail/static/src/models/messaging_menu_tab_view.js +++ b/addons/mail/static/src/models/messaging_menu_tab_view.js @@ -5,6 +5,8 @@ import { registerModel } from '@mail/model/model_core'; registerModel({ name: 'MessagingMenuTabView', + template: 'mail.MessagingMenuTabView', + templateGetter: 'messagingMenuTabView', identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/mobile_messaging_navbar_view.js b/addons/mail/static/src/models/mobile_messaging_navbar_view.js index 8a68e1440ab..3cf5fb73769 100644 --- a/addons/mail/static/src/models/mobile_messaging_navbar_view.js +++ b/addons/mail/static/src/models/mobile_messaging_navbar_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'MobileMessagingNavbarView', + template: 'mail.MobileMessagingNavbarView', + templateGetter: 'mobileMessagingNavbarView', identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/notification_group_view.js b/addons/mail/static/src/models/notification_group_view.js index 707b371c435..c603b62956f 100644 --- a/addons/mail/static/src/models/notification_group_view.js +++ b/addons/mail/static/src/models/notification_group_view.js @@ -1,11 +1,17 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'NotificationGroupView', + template: 'mail.NotificationGroupView', + templateGetter: 'notificationGroupView', + componentSetup() { + useRefToModel({ fieldName: 'markAsReadRef', refName: 'markAsRead' }); + }, recordMethods: { /** * @param {MouseEvent} ev diff --git a/addons/mail/static/src/models/notification_list_view.js b/addons/mail/static/src/models/notification_list_view.js index be34acfc616..aecb9d1e29e 100644 --- a/addons/mail/static/src/models/notification_list_view.js +++ b/addons/mail/static/src/models/notification_list_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'NotificationListView', + template: 'mail.NotificationListView', + templateGetter: 'notificationListView', identifyingMode: 'xor', lifecycleHooks: { _created() { diff --git a/addons/mail/static/src/models/message_notification_view.js b/addons/mail/static/src/models/notification_message_view.js similarity index 71% rename from addons/mail/static/src/models/message_notification_view.js rename to addons/mail/static/src/models/notification_message_view.js index 6df14ced169..ae32731ed44 100644 --- a/addons/mail/static/src/models/message_notification_view.js +++ b/addons/mail/static/src/models/notification_message_view.js @@ -1,10 +1,18 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'NotificationMessageView', + template: 'mail.NotificationMessageView', + templateGetter: 'notificationMessageView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, recordMethods: { onComponentUpdate() { if (!this.exists()) { diff --git a/addons/mail/static/src/models/notification_request_view.js b/addons/mail/static/src/models/notification_request_view.js index 1a03530681b..fa04b82fd20 100644 --- a/addons/mail/static/src/models/notification_request_view.js +++ b/addons/mail/static/src/models/notification_request_view.js @@ -8,6 +8,8 @@ import { sprintf } from '@web/core/utils/strings'; registerModel({ name: 'NotificationRequestView', + template: 'mail.NotificationRequestView', + templateGetter: 'notificationRequestView', recordMethods: { onClick() { this.messaging.requestNotificationPermission(); diff --git a/addons/mail/static/src/models/persona_im_status_icon_view.js b/addons/mail/static/src/models/persona_im_status_icon_view.js index dc944f14080..9d1ec70a42c 100644 --- a/addons/mail/static/src/models/persona_im_status_icon_view.js +++ b/addons/mail/static/src/models/persona_im_status_icon_view.js @@ -7,6 +7,8 @@ import { markEventHandled } from '@mail/utils/utils'; registerModel({ name: 'PersonaImStatusIconView', + template: 'mail.PersonaImStatusIconView', + templateGetter: 'personaImStatusIconView', identifyingMode: 'xor', recordMethods: { /** diff --git a/addons/mail/static/src/models/popover_view.js b/addons/mail/static/src/models/popover_view.js index 0efce037796..911c456762a 100644 --- a/addons/mail/static/src/models/popover_view.js +++ b/addons/mail/static/src/models/popover_view.js @@ -1,11 +1,27 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; +import { usePosition } from '@web/core/position_hook'; + registerModel({ name: 'PopoverView', + template: 'mail.PopoverView', + templateGetter: 'popoverView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + usePosition( + () => this.popoverView.anchorRef && this.popoverView.anchorRef.el, + { + popper: "root", + margin: 16, + position: this.popoverView.position, + } + ); + }, identifyingMode: 'xor', lifecycleHooks: { _created() { diff --git a/addons/mail/static/src/models/thread_icon_view.js b/addons/mail/static/src/models/thread_icon_view.js index 75a1bfcea45..a1a8fc774c7 100644 --- a/addons/mail/static/src/models/thread_icon_view.js +++ b/addons/mail/static/src/models/thread_icon_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ThreadIconView', + template: 'mail.ThreadIconView', + templateGetter: 'threadIconView', identifyingMode: 'xor', fields: { chatWindowHeaderViewOwner: one('ChatWindowHeaderView', { diff --git a/addons/mail/static/src/models/thread_textual_typing_status_view.js b/addons/mail/static/src/models/thread_textual_typing_status_view.js index 2ccd7b4b010..a539f300d33 100644 --- a/addons/mail/static/src/models/thread_textual_typing_status_view.js +++ b/addons/mail/static/src/models/thread_textual_typing_status_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ThreadTextualTypingStatusView', + template: 'mail.ThreadTextualTypingStatusView', + templateGetter: 'threadTextualTypingStatusView', fields: { owner: one('ComposerView', { identifying: true, diff --git a/addons/mail/static/src/models/thread_typing_icon_view.js b/addons/mail/static/src/models/thread_typing_icon_view.js index c56ae98c2dc..cc6f5667c2b 100644 --- a/addons/mail/static/src/models/thread_typing_icon_view.js +++ b/addons/mail/static/src/models/thread_typing_icon_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ThreadTypingIconView', + template: 'mail.ThreadTypingIconView', + templateGetter: 'threadTypingIconView', identifyingMode: 'xor', fields: { size: attr({ diff --git a/addons/mail/static/src/models/thread_view.js b/addons/mail/static/src/models/thread_view.js index 87c8cd03751..6d83a8865f2 100644 --- a/addons/mail/static/src/models/thread_view.js +++ b/addons/mail/static/src/models/thread_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ThreadView', + template: 'mail.ThreadView', + templateGetter: 'threadView', lifecycleHooks: { _willDelete() { this.messaging.browser.clearTimeout(this.loaderTimeout); diff --git a/addons/mail/static/src/models/thread_view_topbar.js b/addons/mail/static/src/models/thread_view_topbar.js index 1e2411ab203..1378b098092 100644 --- a/addons/mail/static/src/models/thread_view_topbar.js +++ b/addons/mail/static/src/models/thread_view_topbar.js @@ -1,11 +1,22 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'ThreadViewTopbar', + template: 'mail.ThreadViewTopbar', + templateGetter: 'threadViewTopbar', + componentSetup() { + useRefToModel({ fieldName: 'guestNameInputRef', refName: 'guestNameInput' }); + useRefToModel({ fieldName: 'inviteButtonRef', refName: 'inviteButton' }); + useRefToModel({ fieldName: 'threadNameInputRef', refName: 'threadNameInput' }); + useRefToModel({ fieldName: 'threadDescriptionInputRef', refName: 'threadDescriptionInput' }); + useUpdateToModel({ methodName: 'onComponentUpdate' }); + }, lifecycleHooks: { _created() { document.addEventListener('click', this._onClickCaptureGlobal, true); diff --git a/addons/mail/static/src/models/welcome_view.js b/addons/mail/static/src/models/welcome_view.js index 63b53489eb0..385e5fc765a 100644 --- a/addons/mail/static/src/models/welcome_view.js +++ b/addons/mail/static/src/models/welcome_view.js @@ -1,5 +1,7 @@ /** @odoo-module **/ +import { useRefToModel } from '@mail/component_hooks/use_ref_to_model'; +import { useUpdateToModel } from '@mail/component_hooks/use_update_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; import { clear } from '@mail/model/model_field_command'; @@ -11,6 +13,12 @@ const getNextGuestNameInputId = (function () { registerModel({ name: 'WelcomeView', + template: 'mail.WelcomeView', + templateGetter: 'welcomeView', + componentSetup() { + useRefToModel({ fieldName: 'guestNameInputRef', modelName: 'WelcomeView', refName: 'guestNameInput' }); + useUpdateToModel({ methodName: 'onComponentUpdate', modelName: 'WelcomeView' }); + }, recordMethods: { /** * Updates guest if needed then displays the thread view instead of the diff --git a/addons/mail/static/src/utils/messaging_component.js b/addons/mail/static/src/utils/messaging_component.js index 52df0da3461..e692cfd0329 100644 --- a/addons/mail/static/src/utils/messaging_component.js +++ b/addons/mail/static/src/utils/messaging_component.js @@ -89,11 +89,11 @@ export function registerMessagingComponent(ComponentClass) { * unpatched as the main purpose of this method is to clean up the registry * when using one-off components in tests. * - * @param {function} ComponentClass the constructor of the component to be + * @param {function} componentName the constructor of the component to be * unregistered. Its name will be used as its key in the registry. */ -export function unregisterMessagingComponent(ComponentClass) { - delete componentRegistry[ComponentClass.name]; +export function unregisterMessagingComponent(componentName) { + delete componentRegistry[componentName]; } /** diff --git a/addons/mail/static/tests/qunit_suite_tests/components/discuss_tests.js b/addons/mail/static/tests/qunit_suite_tests/components/discuss_tests.js index 16ed43bb7ba..8ea07247586 100644 --- a/addons/mail/static/tests/qunit_suite_tests/components/discuss_tests.js +++ b/addons/mail/static/tests/qunit_suite_tests/components/discuss_tests.js @@ -68,10 +68,11 @@ QUnit.test('discuss should be marked as closed when the component is unmounted', QUnit.test('messaging not initialized', async function (assert) { assert.expect(1); + const messaginginitializedDeferred = makeTestPromise(); const { openDiscuss } = await start({ async mockRPC(route) { if (route === '/mail/init_messaging') { - await makeTestPromise(); // simulate messaging never initialized + await messaginginitializedDeferred; // simulate messaging never initialized } }, waitUntilMessagingCondition: 'created', @@ -82,6 +83,7 @@ QUnit.test('messaging not initialized', async function (assert) { 1, "should display messaging not initialized" ); + messaginginitializedDeferred.resolve(); // ensure proper teardown }); QUnit.test('messaging becomes initialized', async function (assert) { diff --git a/addons/mail/static/tests/qunit_suite_tests/components/messaging_menu_tests.js b/addons/mail/static/tests/qunit_suite_tests/components/messaging_menu_tests.js index f47c5d0d4d4..01b6f1e53fd 100644 --- a/addons/mail/static/tests/qunit_suite_tests/components/messaging_menu_tests.js +++ b/addons/mail/static/tests/qunit_suite_tests/components/messaging_menu_tests.js @@ -50,11 +50,11 @@ QUnit.test('[technical] messaging not created then becomes created', async funct QUnit.test('messaging not initialized', async function (assert) { assert.expect(2); + const messaginginitializedDeferred = makeTestPromise(); const { click } = await start({ async mockRPC(route) { if (route === '/mail/init_messaging') { - // simulate messaging never initialized - return new Promise(resolve => {}); + await messaginginitializedDeferred; // simulate messaging never initialized } }, waitUntilMessagingCondition: 'created', @@ -71,6 +71,7 @@ QUnit.test('messaging not initialized', async function (assert) { "Please wait...", "should prompt loading when opening messaging menu" ); + messaginginitializedDeferred.resolve(); // ensure proper teardown }); QUnit.test('messaging becomes initialized', async function (assert) { diff --git a/addons/mail/static/tests/qunit_suite_tests/widgets/form_renderer_tests.js b/addons/mail/static/tests/qunit_suite_tests/widgets/form_renderer_tests.js index 7d839597a16..e5ad9ce941d 100644 --- a/addons/mail/static/tests/qunit_suite_tests/widgets/form_renderer_tests.js +++ b/addons/mail/static/tests/qunit_suite_tests/widgets/form_renderer_tests.js @@ -11,7 +11,7 @@ import { } from '@mail/../tests/helpers/test_utils'; import fieldRegistry from 'web.field_registry'; -import { dom, nextTick } from 'web.test_utils'; +import { dom, makeTestPromise, nextTick } from 'web.test_utils'; import { registerCleanup } from "@web/../tests/helpers/cleanup"; const { triggerEvent } = dom; @@ -82,6 +82,7 @@ QUnit.test('[technical] keep spinner on transition from messaging non-created to */ assert.expect(4); + const messaginginitializedDeferred = makeTestPromise(); const pyEnv = await startServer(); const messagingBeforeCreationDeferred = makeDeferred(); const resPartnerId1 = pyEnv['res.partner'].create({ @@ -100,7 +101,7 @@ QUnit.test('[technical] keep spinner on transition from messaging non-created to messagingBeforeCreationDeferred, async mockRPC(route, args) { if (route === '/mail/init_messaging') { - await new Promise(() => {}); // simulate messaging never initialized + await messaginginitializedDeferred; // simulate messaging never initialized } }, serverData: { views }, @@ -135,11 +136,13 @@ QUnit.test('[technical] keep spinner on transition from messaging non-created to '.o_ChatterContainer_noChatter', "chatter container should still not display any chatter when messaging not initialized" ); + messaginginitializedDeferred.resolve(); // ensure proper teardown }); QUnit.test('spinner when messaging is created but not initialized', async function (assert) { assert.expect(3); + const messaginginitializedDeferred = makeTestPromise(); const pyEnv = await startServer(); const resPartnerId1 = pyEnv['res.partner'].create({ display_name: "second partner", @@ -156,7 +159,7 @@ QUnit.test('spinner when messaging is created but not initialized', async functi const { openView } = await start({ async mockRPC(route, args) { if (route === '/mail/init_messaging') { - await new Promise(() => {}); // simulate messaging never initialized + await messaginginitializedDeferred; // simulate messaging never initialized } }, serverData: { views }, @@ -182,6 +185,7 @@ QUnit.test('spinner when messaging is created but not initialized', async functi "Please wait...", "chatter container should display spinner when messaging not yet initialized" ); + messaginginitializedDeferred.resolve(); // ensure proper teardown }); QUnit.test('transition non-initialized messaging to initialized messaging: display spinner then chatter', async function (assert) { diff --git a/addons/snailmail/__manifest__.py b/addons/snailmail/__manifest__.py index c49d4b66988..8b8665b2f99 100644 --- a/addons/snailmail/__manifest__.py +++ b/addons/snailmail/__manifest__.py @@ -36,7 +36,6 @@ Allows users to send documents by post 'snailmail/static/src/js/snailmail_external_layout.js', ], 'web.assets_backend': [ - 'snailmail/static/src/components/*/*.js', 'snailmail/static/src/components/*/*.scss', 'snailmail/static/src/components/*/*.xml', ], diff --git a/addons/snailmail/static/src/components/snailmail_error/snailmail_error.js b/addons/snailmail/static/src/components/snailmail_error/snailmail_error.js deleted file mode 100644 index 4133588ad23..00000000000 --- a/addons/snailmail/static/src/components/snailmail_error/snailmail_error.js +++ /dev/null @@ -1,31 +0,0 @@ -/** @odoo-module **/ - -import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -const { Component } = owl; - -export class SnailmailErrorView extends Component { - - /** - * @override - */ - setup() { - useComponentToModel({ fieldName: 'component' }); - } - - /** - * @returns {SnailmailErrorView} - */ - get snailmailErrorView() { - return this.props.record; - } - -} - -Object.assign(SnailmailErrorView, { - props: { record: Object }, - template: 'snailmail.SnailmailErrorView', -}); - -registerMessagingComponent(SnailmailErrorView); diff --git a/addons/snailmail/static/src/components/snailmail_notification_popover_content_view/snailmail_notification_popover_content_view.js b/addons/snailmail/static/src/components/snailmail_notification_popover_content_view/snailmail_notification_popover_content_view.js deleted file mode 100644 index 77d6c23614f..00000000000 --- a/addons/snailmail/static/src/components/snailmail_notification_popover_content_view/snailmail_notification_popover_content_view.js +++ /dev/null @@ -1,24 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -const { Component } = owl; - -export class SnailmailNotificationPopoverContentView extends Component { - - /** - * @returns {SnailmailNotificationPopoverContentView} - */ - get snailmailNotificationPopoverContentView() { - return this.props.record; - } - -} - -Object.assign(SnailmailNotificationPopoverContentView, { - props: { record: Object }, - template: 'snailmail.SnailmailNotificationPopoverContentView', -}); - -registerMessagingComponent(SnailmailNotificationPopoverContentView); - diff --git a/addons/snailmail/static/src/models/snailmail_error_view.js b/addons/snailmail/static/src/models/snailmail_error_view.js index 7bf1f5b02b9..1c67d732536 100644 --- a/addons/snailmail/static/src/models/snailmail_error_view.js +++ b/addons/snailmail/static/src/models/snailmail_error_view.js @@ -1,10 +1,16 @@ /** @odoo-module **/ +import { useComponentToModel } from '@mail/component_hooks/use_component_to_model'; import { registerModel } from '@mail/model/model_core'; import { attr, one } from '@mail/model/model_field'; registerModel({ name: 'SnailmailErrorView', + template: 'snailmail.SnailmailErrorView', + templateGetter: 'snailmailErrorView', + componentSetup() { + useComponentToModel({ fieldName: 'component' }); + }, recordMethods: { /** * Returns whether the given html element is inside this snailmail error view. diff --git a/addons/snailmail/static/src/models/snailmail_notification_popover_content_view.js b/addons/snailmail/static/src/models/snailmail_notification_popover_content_view.js index 1161527622e..b4d1220f789 100644 --- a/addons/snailmail/static/src/models/snailmail_notification_popover_content_view.js +++ b/addons/snailmail/static/src/models/snailmail_notification_popover_content_view.js @@ -6,6 +6,8 @@ import { clear } from '@mail/model/model_field_command'; registerModel({ name: 'SnailmailNotificationPopoverContentView', + template: 'snailmail.SnailmailNotificationPopoverContentView', + templateGetter: 'snailmailNotificationPopoverContentView', fields: { iconClass: attr({ compute() { diff --git a/addons/website_livechat/__manifest__.py b/addons/website_livechat/__manifest__.py index ae3dc016f95..a3be57a0308 100644 --- a/addons/website_livechat/__manifest__.py +++ b/addons/website_livechat/__manifest__.py @@ -46,7 +46,6 @@ Allow website visitors to chat with the collaborators. This module also brings a 'website_livechat/static/src/js/systray_items/*.js', ], 'web.assets_backend': [ - 'website_livechat/static/src/components/*/*.js', 'website_livechat/static/src/components/*/*.scss', 'website_livechat/static/src/components/*/*.xml', ], diff --git a/addons/website_livechat/static/src/components/visitor_banner/visitor_banner.js b/addons/website_livechat/static/src/components/visitor_banner/visitor_banner.js deleted file mode 100644 index df571b6bff2..00000000000 --- a/addons/website_livechat/static/src/components/visitor_banner/visitor_banner.js +++ /dev/null @@ -1,23 +0,0 @@ -/** @odoo-module **/ - -import { registerMessagingComponent } from '@mail/utils/messaging_component'; - -const { Component } = owl; - -export class VisitorBannerView extends Component { - - /** - * @returns {VisitorBannerView} - */ - get visitorBannerView() { - return this.props.record; - } - -} - -Object.assign(VisitorBannerView, { - props: { record: Object }, - template: 'website_livechat.VisitorBannerView', -}); - -registerMessagingComponent(VisitorBannerView); diff --git a/addons/website_livechat/static/src/models/visitor_banner_view.js b/addons/website_livechat/static/src/models/visitor_banner_view.js index d37b24203ce..f14df3ec751 100644 --- a/addons/website_livechat/static/src/models/visitor_banner_view.js +++ b/addons/website_livechat/static/src/models/visitor_banner_view.js @@ -5,6 +5,8 @@ import { one } from '@mail/model/model_field'; registerModel({ name: 'VisitorBannerView', + template: 'website_livechat.VisitorBannerView', + templateGetter: 'visitorBannerView', fields: { owner: one('ThreadView', { identifying: true,