diff --git a/addons/account/static/tests/account_move_form_tests.js b/addons/account/static/tests/account_move_form_tests.js index d8ebe943046..3303110b3b0 100644 --- a/addons/account/static/tests/account_move_form_tests.js +++ b/addons/account/static/tests/account_move_form_tests.js @@ -32,7 +32,7 @@ QUnit.module("Views", {}, function (hooks) { }); patchWithCleanup(AccountMoveFormRenderer.prototype, { saveBeforeTabChange() { - this._super(); + super.saveBeforeTabChange(); assert.step("tab saved"); }, }); diff --git a/addons/barcodes/static/tests/basic/float_scannable_field_test.js b/addons/barcodes/static/tests/basic/float_scannable_field_test.js index 200899074f5..6edcd7dcceb 100644 --- a/addons/barcodes/static/tests/basic/float_scannable_field_test.js +++ b/addons/barcodes/static/tests/basic/float_scannable_field_test.js @@ -104,7 +104,7 @@ QUnit.module("Fields", (hooks) => { patchWithCleanup(FormController.prototype, { onPagerUpdate() { assert.step("update"); - return this._super.apply(this, arguments); + return super.onPagerUpdate(...arguments); }, }); diff --git a/addons/barcodes_gs1_nomenclature/static/src/js/barcode_parser.js b/addons/barcodes_gs1_nomenclature/static/src/js/barcode_parser.js index 803579ca3e8..18d3197fcb6 100644 --- a/addons/barcodes_gs1_nomenclature/static/src/js/barcode_parser.js +++ b/addons/barcodes_gs1_nomenclature/static/src/js/barcode_parser.js @@ -7,7 +7,7 @@ export class GS1BarcodeError extends Error {}; export const FNC1_CHAR = String.fromCharCode(29); -patch(BarcodeParser, "barcodes_gs1_nomenclature.BarcodeParser static", { +patch(BarcodeParser, { barcodeNomenclatureFields: [ ...BarcodeParser.barcodeNomenclatureFields, "is_gs1_nomenclature", @@ -21,14 +21,14 @@ patch(BarcodeParser, "barcodes_gs1_nomenclature.BarcodeParser static", { ], }); -patch(BarcodeParser.prototype, "barcodes_gs1_nomenclature.BarcodeParser", { +patch(BarcodeParser.prototype, { /** * Convert YYMMDD GS1 date into a Date object * * @param {string} gs1Date YYMMDD string date, length must be 6 * @returns {Date} */ - gs1_date_to_date: function(gs1Date) { + gs1_date_to_date(gs1Date) { // See 7.12 Determination of century in dates: // https://www.gs1.org/sites/default/files/docs/barcodes/GS1_General_Specifications.pdfDetermination of century const now = new Date(); @@ -58,7 +58,7 @@ patch(BarcodeParser.prototype, "barcodes_gs1_nomenclature.BarcodeParser", { * @param {Object} rule Matched Barcode Rule * @returns {Object|null} */ - parse_gs1_rule_pattern: function(match, rule) { + parse_gs1_rule_pattern(match, rule) { const result = { rule: Object.assign({}, rule), ai: match[1], @@ -103,7 +103,7 @@ patch(BarcodeParser.prototype, "barcodes_gs1_nomenclature.BarcodeParser", { * @param {string} barcode * @returns {Array} Array of object */ - gs1_decompose_extanded: function(barcode) { + gs1_decompose_extanded(barcode) { const results = []; const rules = this.nomenclature.rules.filter(rule => rule.encoding === 'gs1-128'); const separatorReg = FNC1_CHAR + "?"; @@ -137,10 +137,10 @@ patch(BarcodeParser.prototype, "barcodes_gs1_nomenclature.BarcodeParser", { * @override * @returns {Object|Array|null} If nomenclature is GS1, returns an array or null */ - parse_barcode: function(barcode){ + parse_barcode(barcode) { if (this.nomenclature && this.nomenclature.is_gs1_nomenclature) { return this.gs1_decompose_extanded(barcode); } - return this._super(...arguments); + return super.parse_barcode(...arguments); }, }); diff --git a/addons/barcodes_gs1_nomenclature/static/src/js/barcode_service.js b/addons/barcodes_gs1_nomenclature/static/src/js/barcode_service.js index c657a280343..b8024596b69 100644 --- a/addons/barcodes_gs1_nomenclature/static/src/js/barcode_service.js +++ b/addons/barcodes_gs1_nomenclature/static/src/js/barcode_service.js @@ -7,12 +7,12 @@ import { barcodeService } from '@barcodes/barcode_service'; import { FNC1_CHAR } from "@barcodes_gs1_nomenclature/js/barcode_parser"; -patch(barcodeService, 'barcodes_gs1_nomenclature', { +patch(barcodeService, { // Use the regex given by the session, else use an impossible one gs1SeparatorRegex: new RegExp(session.gs1_group_separator_encodings || '.^', 'g'), - cleanBarcode: function(barcode) { + cleanBarcode(barcode) { barcode = barcode.replace(barcodeService.gs1SeparatorRegex, FNC1_CHAR); - return this._super(barcode); + return super.cleanBarcode(barcode); }, }); diff --git a/addons/base_automation/static/tests/base_automation_error_dialog.js b/addons/base_automation/static/tests/base_automation_error_dialog.js index 31a4643f245..f0bac34dfc4 100644 --- a/addons/base_automation/static/tests/base_automation_error_dialog.js +++ b/addons/base_automation/static/tests/base_automation_error_dialog.js @@ -78,7 +78,7 @@ QUnit.module("base_automation", {}, function () { errorContext, "Received the correct error context" ); - this._super(); + super.setup(); }, }); diff --git a/addons/base_import/static/tests/import_action_tests.js b/addons/base_import/static/tests/import_action_tests.js index 644c9fa1ef1..6966374e672 100644 --- a/addons/base_import/static/tests/import_action_tests.js +++ b/addons/base_import/static/tests/import_action_tests.js @@ -1054,7 +1054,7 @@ QUnit.module("Base Import Tests", (hooks) => { patchWithCleanup(ImportBlockUI.prototype, { setup() { - this._super(); + super.setup(); if (this.props.message === "Importing") { assert.step("Block UI received the right text"); } @@ -1063,7 +1063,7 @@ QUnit.module("Base Import Tests", (hooks) => { patchWithCleanup(ImportDataProgress.prototype, { setup() { - this._super(); + super.setup(); useEffect( () => { if (this.props.importProgress.step === 1) { @@ -1146,7 +1146,7 @@ QUnit.module("Base Import Tests", (hooks) => { patchWithCleanup(ImportBlockUI.prototype, { setup() { - this._super(); + super.setup(); if (this.props.message === "Testing") { assert.step("Block UI received the right text"); } @@ -1155,7 +1155,7 @@ QUnit.module("Base Import Tests", (hooks) => { patchWithCleanup(ImportDataProgress.prototype, { setup() { - this._super(); + super.setup(); useEffect( () => { if (this.props.importProgress.step === 1) { diff --git a/addons/bus/static/tests/assets_watchdog_tests.js b/addons/bus/static/tests/assets_watchdog_tests.js index 5b8e6563731..6f1adebc887 100644 --- a/addons/bus/static/tests/assets_watchdog_tests.js +++ b/addons/bus/static/tests/assets_watchdog_tests.js @@ -24,7 +24,7 @@ QUnit.module("Bus Assets WatchDog", (hooks) => { serviceRegistry.add("multi_tab", multiTabService); patchWithCleanup(browser, { setTimeout(fn) { - return this._super(fn, 0); + return super.setTimeout(fn, 0); }, location: { reload: () => assert.step("reloadPage"), diff --git a/addons/bus/static/tests/bus_tests.js b/addons/bus/static/tests/bus_tests.js index 8bf403d4e8e..66a2c256d69 100644 --- a/addons/bus/static/tests/bus_tests.js +++ b/addons/bus/static/tests/bus_tests.js @@ -113,8 +113,7 @@ QUnit.module( window, { setTimeout: (callback) => oldSetTimeout(callback, 0), - }, - { pure: true } + } ); const pyEnv = await startServer(); @@ -217,7 +216,7 @@ QUnit.module( if (eventName === "pagehide") { return; } - this._super(eventName, callback); + super.addEventListener(eventName, callback); }, }); const secondEnv = await makeTestEnv({ activateMockServer: true }); @@ -255,22 +254,22 @@ QUnit.module( QUnit.test("two tabs calling addChannel simultaneously", async function (assert) { assert.expect(5); - const channelPatch = { + const channelPatch = () => ({ addChannel(channel) { assert.step("Tab " + this.__tabId__ + ": addChannel " + channel); - this._super.apply(this, arguments); + super.addChannel(...arguments); }, deleteChannel(channel) { assert.step("Tab " + this.__tabId__ + ": deleteChannel " + channel); - this._super.apply(this, arguments); + super.deleteChannel(...arguments); }, - }; + }); const firstTabEnv = await makeTestEnv({ activateMockServer: true }); const secondTabEnv = await makeTestEnv({ activateMockServer: true }); firstTabEnv.services["bus_service"].__tabId__ = 1; secondTabEnv.services["bus_service"].__tabId__ = 2; - patchWithCleanup(firstTabEnv.services["bus_service"], channelPatch); - patchWithCleanup(secondTabEnv.services["bus_service"], channelPatch); + patchWithCleanup(firstTabEnv.services["bus_service"], channelPatch()); + patchWithCleanup(secondTabEnv.services["bus_service"], channelPatch()); firstTabEnv.services["bus_service"].addChannel("alpha"); secondTabEnv.services["bus_service"].addChannel("alpha"); firstTabEnv.services["bus_service"].addChannel("beta"); @@ -391,7 +390,7 @@ QUnit.module( assert.step(`${action} - ${data["lastNotificationId"]}`); updateLastNotificationDeferred.resolve(); } - return this._super(...arguments); + return super._onClientMessage(...arguments); }, }); const env1 = await makeTestEnv(); @@ -426,7 +425,7 @@ QUnit.module( let connectionOpenedDeferred = makeDeferred(); patchWebsocketWorkerWithCleanup({ _initializeConnection(client, data) { - this._super(client, data); + super._initializeConnection(client, data); connectionInitializedDeferred.resolve(); }, }); @@ -466,7 +465,7 @@ QUnit.module( let websocketConnectedDeferred = makeDeferred(); patchWebsocketWorkerWithCleanup({ _initializeConnection(client, data) { - this._super(client, data); + super._initializeConnection(client, data); connectionInitializedDeferred.resolve(); }, }); @@ -503,7 +502,7 @@ QUnit.module( patchWithCleanup(busParametersService, { start() { return { - ...this._super(...arguments), + ...super.start(...arguments), serverURL, }; }, @@ -517,8 +516,7 @@ QUnit.module( websocketCreatedDeferred.resolve(); return new EventTarget(); }, - }, - { pure: true } + } ); const env = await makeTestEnv(); env.services["bus_service"].start(); @@ -573,7 +571,7 @@ QUnit.module( let openDeferred = makeDeferred(); const worker = patchWebsocketWorkerWithCleanup({ _onWebsocketOpen() { - this._super(); + super._onWebsocketOpen(); openDeferred.resolve(); }, _sendToServer({ event_name }) { @@ -589,14 +587,13 @@ QUnit.module( patchWithCleanup(worker.websocket, { close(code = WEBSOCKET_CLOSE_CODES.CLEAN, reason) { this.readyState = 2; - const _super = this._super; if (code === WEBSOCKET_CLOSE_CODES.CLEAN) { closeDeferred.then(() => { // Simulate that the connection could not be closed cleanly. - _super(WEBSOCKET_CLOSE_CODES.ABNORMAL_CLOSURE, reason); + super.close(WEBSOCKET_CLOSE_CODES.ABNORMAL_CLOSURE, reason); }); } else { - _super(code, reason); + super.close(code, reason); } }, }); @@ -659,8 +656,7 @@ QUnit.module( assert.step("worker creation"); return new originalWorker(url, options); }, - }, - { pure: true } + } ); patchWithCleanup(window.console, { warn(message) { diff --git a/addons/bus/static/tests/helpers/mock_server.js b/addons/bus/static/tests/helpers/mock_server.js index bd665b069fb..d8c7737ec69 100644 --- a/addons/bus/static/tests/helpers/mock_server.js +++ b/addons/bus/static/tests/helpers/mock_server.js @@ -6,15 +6,15 @@ import { patchWebsocketWorkerWithCleanup } from "@bus/../tests/helpers/mock_webs import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "bus", { +patch(MockServer.prototype, { init() { - this._super(...arguments); + super.init(...arguments); Object.assign(this, TEST_USER_IDS); const self = this; this.websocketWorker = patchWebsocketWorkerWithCleanup({ _sendToServer(message) { self._performWebsocketRequest(message); - this._super(message); + super._sendToServer(message); }, }); this.notificationsToBeResolved = []; diff --git a/addons/bus/static/tests/helpers/mock_server/models/ir_websocket.js b/addons/bus/static/tests/helpers/mock_server/models/ir_websocket.js index 4af5bfdfbe3..635fb079a19 100644 --- a/addons/bus/static/tests/helpers/mock_server/models/ir_websocket.js +++ b/addons/bus/static/tests/helpers/mock_server/models/ir_websocket.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "bus/models/ir_websocket", { +patch(MockServer.prototype, { /** * Simulates `_update_presence` on `ir.websocket`. * diff --git a/addons/bus/static/tests/helpers/mock_websocket.js b/addons/bus/static/tests/helpers/mock_websocket.js index 1ab5e229ee0..53f3eb76f49 100644 --- a/addons/bus/static/tests/helpers/mock_websocket.js +++ b/addons/bus/static/tests/helpers/mock_websocket.js @@ -69,8 +69,7 @@ export function patchWebsocketWorkerWithCleanup(params = {}) { WebSocket: function () { return new WebSocketMock(); }, - }, - { pure: true } + } ); patchWithCleanup(websocketWorker || WebsocketWorker.prototype, params); websocketWorker = websocketWorker || new WebsocketWorker(); @@ -85,8 +84,7 @@ export function patchWebsocketWorkerWithCleanup(params = {}) { }); return sharedWorker; }, - }, - { pure: true } + } ); registerCleanup(() => { if (websocketWorker) { diff --git a/addons/bus/static/tests/multi_tab_service_tests.js b/addons/bus/static/tests/multi_tab_service_tests.js index 3766f2bf104..e3dbac45e81 100644 --- a/addons/bus/static/tests/multi_tab_service_tests.js +++ b/addons/bus/static/tests/multi_tab_service_tests.js @@ -27,7 +27,7 @@ QUnit.module("bus", function () { if (eventName === "pagehide") { return; } - this._super(eventName, callback); + super.addEventListener(eventName, callback); }, }); const secondTabEnv = await makeTestEnv(); @@ -95,7 +95,7 @@ QUnit.module("bus", function () { if (eventName === "pagehide") { return; } - this._super(eventName, callback); + super.addEventListener(eventName, callback); }, }); const secondTabEnv = await makeTestEnv(); diff --git a/addons/bus/static/tests/simple_notification_tests.js b/addons/bus/static/tests/simple_notification_tests.js index b6e943fa62b..5a809d990f5 100644 --- a/addons/bus/static/tests/simple_notification_tests.js +++ b/addons/bus/static/tests/simple_notification_tests.js @@ -70,7 +70,7 @@ QUnit.test("receive and display simple notification as sticky", async (assert) = * Sticky notifications are removed after a delay. If the notification is still * present when this delay is set to 0 it means it is a sticky one. */ - return this._super(fn, 0); + return super.setTimeout(fn, 0); }, }); await afterNextRender(() => { diff --git a/addons/calendar/static/src/activity/activity_list_popover_item_patch.js b/addons/calendar/static/src/activity/activity_list_popover_item_patch.js index 4de8acefde0..6cac8b80019 100644 --- a/addons/calendar/static/src/activity/activity_list_popover_item_patch.js +++ b/addons/calendar/static/src/activity/activity_list_popover_item_patch.js @@ -3,9 +3,9 @@ import { ActivityListPopoverItem } from "@mail/core/web/activity_list_popover_item"; import { patch } from "@web/core/utils/patch"; -patch(ActivityListPopoverItem.prototype, "calendar", { +patch(ActivityListPopoverItem.prototype, { get hasEditButton() { - return this._super() && !this.props.activity.calendar_event_id; + return super.hasEditButton && !this.props.activity.calendar_event_id; }, async onClickReschedule() { diff --git a/addons/calendar/static/src/activity/activity_menu_patch.js b/addons/calendar/static/src/activity/activity_menu_patch.js index 3a7b27c8e2b..0b27afa961f 100644 --- a/addons/calendar/static/src/activity/activity_menu_patch.js +++ b/addons/calendar/static/src/activity/activity_menu_patch.js @@ -5,9 +5,9 @@ import { patch } from "@web/core/utils/patch"; import { deserializeDateTime, formatDateTime } from "@web/core/l10n/dates"; import { localization } from "@web/core/l10n/localization"; -patch(ActivityMenu.prototype, "calendar", { +patch(ActivityMenu.prototype, { async fetchSystrayActivities() { - await this._super(); + await super.fetchSystrayActivities(); for (const group of Object.values(this.store.activityGroups)) { if (group.type === "meeting") { for (const meeting of group.meetings) { @@ -31,7 +31,7 @@ patch(ActivityMenu.prototype, "calendar", { clearBreadcrumbs: true, }); } else { - this._super(...arguments); + super.openActivityGroup(...arguments); } }, }); diff --git a/addons/calendar/static/src/activity/activity_patch.js b/addons/calendar/static/src/activity/activity_patch.js index 5807b1ea545..299800e00e7 100644 --- a/addons/calendar/static/src/activity/activity_patch.js +++ b/addons/calendar/static/src/activity/activity_patch.js @@ -4,9 +4,9 @@ import { Activity } from "@mail/core/web/activity"; import { useService } from "@web/core/utils/hooks"; import { patch } from "@web/core/utils/patch"; -patch(Activity.prototype, "calendar", { +patch(Activity.prototype, { setup() { - this._super(); + super.setup(); this.orm = useService("orm"); }, async onClickReschedule() { @@ -20,7 +20,7 @@ patch(Activity.prototype, "calendar", { await this.orm.call("mail.activity", "unlink_w_meeting", [[this.props.data.id]]); this.props.onUpdate(); } else { - this._super(); + super.unlink(); } }, }); diff --git a/addons/calendar/static/src/activity/activity_service_patch.js b/addons/calendar/static/src/activity/activity_service_patch.js index 75f995a887c..b1197765dc4 100644 --- a/addons/calendar/static/src/activity/activity_service_patch.js +++ b/addons/calendar/static/src/activity/activity_service_patch.js @@ -3,9 +3,9 @@ import { ActivityService } from "@mail/core/web/activity_service"; import { patch } from "@web/core/utils/patch"; -patch(ActivityService.prototype, "calendar/activity_service", { +patch(ActivityService.prototype, { insert(data) { - const activity = this._super(...arguments); + const activity = super.insert(...arguments); const { calendar_event_id: calendarEventId } = data; if (calendarEventId) { activity["calendar_event_id"] = calendarEventId; diff --git a/addons/calendar/static/tests/activity_widget_tests.js b/addons/calendar/static/tests/activity_widget_tests.js index d48ca054cf5..ba51161ad8a 100644 --- a/addons/calendar/static/tests/activity_widget_tests.js +++ b/addons/calendar/static/tests/activity_widget_tests.js @@ -50,7 +50,7 @@ QUnit.test("list activity widget: reschedule button in dropdown", async (assert) const { openView } = await start({ serverData: { views } }); patchWithCleanup(ListController.prototype, { setup() { - this._super(); + super.setup(); const selectRecord = this.props.selectRecord; this.props.selectRecord = (...args) => { assert.step(`select_record ${JSON.stringify(args)}`); diff --git a/addons/calendar/static/tests/calendar_notification_tests.js b/addons/calendar/static/tests/calendar_notification_tests.js index 02fdf6e891c..2aaf4e49837 100644 --- a/addons/calendar/static/tests/calendar_notification_tests.js +++ b/addons/calendar/static/tests/calendar_notification_tests.js @@ -27,7 +27,7 @@ QUnit.module("Calendar Notification", (hooks) => { serviceRegistry.add("multi_tab", multiTabService); patchWithCleanup(browser, { setTimeout(fn) { - this._super(fn, 0); + super.setTimeout(fn, 0); }, }); }); diff --git a/addons/calendar/static/tests/helpers/mock_server/models/calendar_event.js b/addons/calendar/static/tests/helpers/mock_server/models/calendar_event.js index 30ec4379d8a..e5da1cd3747 100644 --- a/addons/calendar/static/tests/helpers/mock_server/models/calendar_event.js +++ b/addons/calendar/static/tests/helpers/mock_server/models/calendar_event.js @@ -1,9 +1,9 @@ /** @odoo-module **/ -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { MockServer } from '@web/../tests/helpers/mock_server'; -patch(MockServer.prototype, 'calendar/models/calendar_event', { +patch(MockServer.prototype, { /** * @override */ @@ -12,6 +12,6 @@ patch(MockServer.prototype, 'calendar/models/calendar_event', { if (args.model === 'calendar.event' && args.method === 'check_access_rights') { return true; } - return this._super(...arguments); + return super._performRPC(...arguments); }, }); diff --git a/addons/calendar/static/tests/helpers/mock_server/models/mail_activity.js b/addons/calendar/static/tests/helpers/mock_server/models/mail_activity.js index 359c82defec..b008c192c3c 100644 --- a/addons/calendar/static/tests/helpers/mock_server/models/mail_activity.js +++ b/addons/calendar/static/tests/helpers/mock_server/models/mail_activity.js @@ -3,10 +3,10 @@ // ensure mail override is applied first. import '@mail/../tests/helpers/mock_server/models/mail_activity'; -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { MockServer } from '@web/../tests/helpers/mock_server'; -patch(MockServer.prototype, 'calendar/models/mail_activity', { +patch(MockServer.prototype, { //-------------------------------------------------------------------------- // Private //-------------------------------------------------------------------------- @@ -25,6 +25,6 @@ patch(MockServer.prototype, 'calendar/models/mail_activity', { target: 'current', }; } - return this._super(...arguments); + return super._performRPC(...arguments); }, }); diff --git a/addons/calendar/static/tests/helpers/mock_server/models/res_users.js b/addons/calendar/static/tests/helpers/mock_server/models/res_users.js index 58078fafdfd..7c48a20d1f6 100644 --- a/addons/calendar/static/tests/helpers/mock_server/models/res_users.js +++ b/addons/calendar/static/tests/helpers/mock_server/models/res_users.js @@ -3,12 +3,12 @@ // ensure mail override is applied first. import '@mail/../tests/helpers/mock_server/models/res_users'; -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { MockServer } from '@web/../tests/helpers/mock_server'; import { datetime_to_str } from '@web/legacy/js/core/time'; -patch(MockServer.prototype, 'calendar/models/res_users', { +patch(MockServer.prototype, { /** * Simulates `_systray_get_calendar_event_domain` on `res.users`. * @@ -41,7 +41,7 @@ patch(MockServer.prototype, 'calendar/models/res_users', { * @override */ _mockResUsersSystrayGetActivities() { - const activities = this._super(...arguments); + const activities = super._mockResUsersSystrayGetActivities(...arguments); const meetingsLines = this.pyEnv['calendar.event'].searchRead( this._mockResUsers_SystrayGetCalendarEventDomain(), { diff --git a/addons/crm/static/src/activity_menu_patch.js b/addons/crm/static/src/activity_menu_patch.js index 7055c05230b..77b6e164de9 100644 --- a/addons/crm/static/src/activity_menu_patch.js +++ b/addons/crm/static/src/activity_menu_patch.js @@ -3,7 +3,7 @@ import { ActivityMenu } from "@mail/core/web/activity_menu"; import { patch } from "@web/core/utils/patch"; -patch(ActivityMenu.prototype, "crm", { +patch(ActivityMenu.prototype, { availableViews(group) { if (group.model === "crm.lead") { return [ @@ -16,7 +16,7 @@ patch(ActivityMenu.prototype, "crm", { [false, "activity"], ]; } - return this._super(...arguments); + return super.availableViews(...arguments); }, openActivityGroup(group, filter = "all") { @@ -38,7 +38,7 @@ patch(ActivityMenu.prototype, "crm", { clearBreadcrumbs: true, }); } else { - return this._super(group, filter); + return super.openActivityGroup(group, filter); } }, }); diff --git a/addons/crm/static/tests/mock_server.js b/addons/crm/static/tests/mock_server.js index 91c7174fda8..5fee80c3efe 100644 --- a/addons/crm/static/tests/mock_server.js +++ b/addons/crm/static/tests/mock_server.js @@ -4,7 +4,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; import { deserializeDateTime } from "@web/core/l10n/dates"; -patch(MockServer.prototype, "CRM", { +patch(MockServer.prototype, { //-------------------------------------------------------------------------- // Private //-------------------------------------------------------------------------- @@ -51,6 +51,6 @@ patch(MockServer.prototype, "CRM", { } return message; } - return this._super(...arguments); + return super._performRPC(...arguments); }, }); diff --git a/addons/crm_iap_mine/static/src/js/tours/crm_iap_lead.js b/addons/crm_iap_mine/static/src/js/tours/crm_iap_lead.js index 220e5198574..e1cd582c47a 100644 --- a/addons/crm_iap_mine/static/src/js/tours/crm_iap_lead.js +++ b/addons/crm_iap_mine/static/src/js/tours/crm_iap_lead.js @@ -9,9 +9,9 @@ import "@crm/js/tours/crm"; import { patch } from "@web/core/utils/patch"; var _t = core._t; -patch(registry.category("web_tour.tours").get("crm_tour"), "patch_crm_tour", { +patch(registry.category("web_tour.tours").get("crm_tour"), { steps() { - const originalSteps = this._super(); + const originalSteps = super.steps(); const DragOppToWonStepIndex = originalSteps.findIndex( (step) => step.id === "drag_opportunity_to_won_step" ); diff --git a/addons/event_booth_sale/static/src/js/sale_product_field.js b/addons/event_booth_sale/static/src/js/sale_product_field.js index 4b0648a8e0a..9be68a1f8ae 100644 --- a/addons/event_booth_sale/static/src/js/sale_product_field.js +++ b/addons/event_booth_sale/static/src/js/sale_product_field.js @@ -5,24 +5,24 @@ import { x2ManyCommands } from "@web/core/orm_service"; import { patch } from "@web/core/utils/patch"; -patch(SaleOrderLineProductField.prototype, 'event_booth_sale', { +patch(SaleOrderLineProductField.prototype, { async _onProductUpdate() { - this._super(...arguments); + super._onProductUpdate(...arguments); if (this.props.record.data.product_type === 'event_booth') { this._openEventBoothConfigurator(false); } }, _editLineConfiguration() { - this._super(...arguments); + super._editLineConfiguration(...arguments); if (this.props.record.data.product_type === 'event_booth') { this._openEventBoothConfigurator(true); } }, get isConfigurableLine() { - return this._super(...arguments) || this.props.record.data.product_type === 'event_booth'; + return super.isConfigurableLine || this.props.record.data.product_type === 'event_booth'; }, async _openEventBoothConfigurator(edit) { diff --git a/addons/event_sale/static/src/js/sale_product_field.js b/addons/event_sale/static/src/js/sale_product_field.js index 781221765a9..fc3be005959 100644 --- a/addons/event_sale/static/src/js/sale_product_field.js +++ b/addons/event_sale/static/src/js/sale_product_field.js @@ -4,24 +4,24 @@ import { patch } from "@web/core/utils/patch"; import { SaleOrderLineProductField } from '@sale/js/sale_product_field'; -patch(SaleOrderLineProductField.prototype, 'event_sale', { +patch(SaleOrderLineProductField.prototype, { async _onProductUpdate() { - this._super(...arguments); + super._onProductUpdate(...arguments); if (this.props.record.data.product_type === 'event') { this._openEventConfigurator(); } }, _editLineConfiguration() { - this._super(...arguments); + super._editLineConfiguration(...arguments); if (this.props.record.data.product_type === 'event') { this._openEventConfigurator(); } }, get isConfigurableLine() { - return this._super(...arguments) || this.props.record.data.product_type === 'event'; + return super.isConfigurableLine || this.props.record.data.product_type === 'event'; }, async _openEventConfigurator() { diff --git a/addons/google_calendar/static/src/views/google_calendar/common/google_calendar_common_popover.js b/addons/google_calendar/static/src/views/google_calendar/common/google_calendar_common_popover.js index 39c11612ea0..fd6c61a1163 100644 --- a/addons/google_calendar/static/src/views/google_calendar/common/google_calendar_common_popover.js +++ b/addons/google_calendar/static/src/views/google_calendar/common/google_calendar_common_popover.js @@ -3,8 +3,8 @@ import { AttendeeCalendarCommonPopover } from "@calendar/views/attendee_calendar/common/attendee_calendar_common_popover"; import { patch } from "@web/core/utils/patch"; -patch(AttendeeCalendarCommonPopover.prototype, "google_calendar_google_calendar_common_popover", { +patch(AttendeeCalendarCommonPopover.prototype, { get isEventArchivable() { - return this._super() || (this.isCurrentUserOrganizer && this.props.record.rawRecord.google_id); + return super.isEventArchivable || (this.isCurrentUserOrganizer && this.props.record.rawRecord.google_id); }, }); diff --git a/addons/google_calendar/static/src/views/google_calendar/google_calendar_controller.js b/addons/google_calendar/static/src/views/google_calendar/google_calendar_controller.js index 4b20516be77..7194b8479ad 100644 --- a/addons/google_calendar/static/src/views/google_calendar/google_calendar_controller.js +++ b/addons/google_calendar/static/src/views/google_calendar/google_calendar_controller.js @@ -5,9 +5,9 @@ import { patch } from "@web/core/utils/patch"; import { useService } from "@web/core/utils/hooks"; import { ConfirmationDialog, AlertDialog } from "@web/core/confirmation_dialog/confirmation_dialog"; -patch(AttendeeCalendarController.prototype, "google_calendar_google_calendar_controller", { +patch(AttendeeCalendarController.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.dialog = useService("dialog"); this.notification = useService("notification"); }, diff --git a/addons/google_calendar/static/src/views/google_calendar/google_calendar_model.js b/addons/google_calendar/static/src/views/google_calendar/google_calendar_model.js index faf8ffd9a40..b5affaff4ae 100644 --- a/addons/google_calendar/static/src/views/google_calendar/google_calendar_model.js +++ b/addons/google_calendar/static/src/views/google_calendar/google_calendar_model.js @@ -3,13 +3,13 @@ import { AttendeeCalendarModel } from "@calendar/views/attendee_calendar/attendee_calendar_model"; import { patch } from "@web/core/utils/patch"; -patch(AttendeeCalendarModel, "google_calendar_google_calendar_model", { +patch(AttendeeCalendarModel, { services: [...AttendeeCalendarModel.services, "rpc"], }); -patch(AttendeeCalendarModel.prototype, "google_calendar_google_calendar_model_functions", { +patch(AttendeeCalendarModel.prototype, { setup(params, { rpc }) { - this._super(...arguments); + super.setup(...arguments); this.rpc = rpc; this.googleIsSync = true; this.googlePendingSync = false; @@ -19,9 +19,8 @@ patch(AttendeeCalendarModel.prototype, "google_calendar_google_calendar_model_fu * @override */ async updateData() { - const _super = this._super.bind(this); if (this.googlePendingSync) { - return _super(...arguments); + return super.updateData(...arguments); } try { await Promise.race([ @@ -35,7 +34,7 @@ patch(AttendeeCalendarModel.prototype, "google_calendar_google_calendar_model_fu console.error("Could not synchronize Google events now.", error); this.googlePendingSync = false; } - return _super(...arguments); + return super.updateData(...arguments); }, async syncGoogleCalendar(silent = false) { diff --git a/addons/google_calendar/static/tests/google_calendar_mock_server.js b/addons/google_calendar/static/tests/google_calendar_mock_server.js index abf4b7e848d..75b694854e0 100644 --- a/addons/google_calendar/static/tests/google_calendar_mock_server.js +++ b/addons/google_calendar/static/tests/google_calendar_mock_server.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "google_calendar_mock_server", { +patch(MockServer.prototype, { /** * Simulate the creation of a custom appointment type * by receiving a list of slots. @@ -13,6 +13,6 @@ patch(MockServer.prototype, "google_calendar_mock_server", { if (route === '/google_calendar/sync_data') { return Promise.resolve({status: 'no_new_event_from_google'}); } - return this._super(...arguments); + return super._performRPC(...arguments); }, }); diff --git a/addons/hr/static/src/components/avatar_card/avatar_card_popover_patch.js b/addons/hr/static/src/components/avatar_card/avatar_card_popover_patch.js index 001e4d0a313..bc0ecf571fc 100644 --- a/addons/hr/static/src/components/avatar_card/avatar_card_popover_patch.js +++ b/addons/hr/static/src/components/avatar_card/avatar_card_popover_patch.js @@ -6,12 +6,12 @@ import { useService } from "@web/core/utils/hooks"; export const patchAvatarCardPopover = { setup() { - this._super(); + super.setup(); this.userInfoTemplate = "hr.avatarCardUserInfos", this.actionService = useService("action"); }, get fieldNames(){ - let fields = this._super(); + let fields = super.fieldNames; return fields.concat([ "work_phone", "work_email", @@ -34,4 +34,4 @@ export const patchAvatarCardPopover = { } }; -patch(AvatarCardPopover.prototype, "hr", patchAvatarCardPopover); +export const unpatchAvatarCardPopover = patch(AvatarCardPopover.prototype, patchAvatarCardPopover); diff --git a/addons/hr/static/src/core/common/persona_model_patch.js b/addons/hr/static/src/core/common/persona_model_patch.js index 157bbdf1216..809b821c0d0 100644 --- a/addons/hr/static/src/core/common/persona_model_patch.js +++ b/addons/hr/static/src/core/common/persona_model_patch.js @@ -4,6 +4,6 @@ import { Persona } from "@mail/core/common/persona_model"; import { patch } from "@web/core/utils/patch"; -patch(Persona.prototype, "hr", { +patch(Persona.prototype, { employeeId: undefined, }); diff --git a/addons/hr/static/src/views/open_chat_hook.js b/addons/hr/static/src/views/open_chat_hook.js index 10c6847135c..1c00ed21963 100644 --- a/addons/hr/static/src/views/open_chat_hook.js +++ b/addons/hr/static/src/views/open_chat_hook.js @@ -3,16 +3,16 @@ import { helpers } from "@mail/core/web/open_chat_hook"; import { patch } from "@web/core/utils/patch"; -patch(helpers, "hr_m2x_avatar_employee", { +patch(helpers, { SUPPORTED_M2X_AVATAR_MODELS: [ ...helpers.SUPPORTED_M2X_AVATAR_MODELS, "hr.employee", "hr.employee.public", ], - buildOpenChatParams: function (resModel, id) { + buildOpenChatParams(resModel, id) { if (["hr.employee", "hr.employee.public"].includes(resModel)) { return { employeeId: id }; } - return this._super(...arguments); - }, + return super.buildOpenChatParams(...arguments); + } }); diff --git a/addons/hr/static/tests/disable_patch.js b/addons/hr/static/tests/disable_patch.js index c409ae06566..fe053bd927c 100644 --- a/addons/hr/static/tests/disable_patch.js +++ b/addons/hr/static/tests/disable_patch.js @@ -1,6 +1,5 @@ /** @odoo-module */ -import { unpatch } from "@web/core/utils/patch"; -import { AvatarCardPopover } from "@mail/discuss/web/avatar_card/avatar_card_popover"; +import { unpatchAvatarCardPopover } from "@hr/components/avatar_card/avatar_card_popover_patch"; -unpatch(AvatarCardPopover.prototype, "hr"); +unpatchAvatarCardPopover(); diff --git a/addons/hr/static/tests/tours/user_modify_own_profile_tour.js b/addons/hr/static/tests/tours/user_modify_own_profile_tour.js index 9d764c59bd9..e5edfeee38b 100644 --- a/addons/hr/static/tests/tours/user_modify_own_profile_tour.js +++ b/addons/hr/static/tests/tours/user_modify_own_profile_tour.js @@ -8,7 +8,7 @@ import { patch } from "@web/core/utils/patch"; * As 'hr' changes the flow a bit and displays the user preferences form in a full view instead of * a modal, we adapt the steps of the original tour accordingly. */ -patch(registry.category("web_tour.tours").get("mail/static/tests/tours/user_modify_own_profile_tour.js"), "patch_user_modify_own_profile_tour", { +patch(registry.category("web_tour.tours").get("mail/static/tests/tours/user_modify_own_profile_tour.js"), { steps() { return [ { diff --git a/addons/hr_holidays/static/src/persona_service_patch.js b/addons/hr_holidays/static/src/persona_service_patch.js index 0e70684eb38..6661c6e5066 100644 --- a/addons/hr_holidays/static/src/persona_service_patch.js +++ b/addons/hr_holidays/static/src/persona_service_patch.js @@ -8,13 +8,13 @@ import { sprintf } from "@web/core/utils/strings"; const { DateTime } = luxon; -patch(personaService, "hr_holidays", { +patch(personaService, { dependencies: [...new Set([...personaService.dependencies, "user"])], }); -patch(PersonaService.prototype, "hr_holidays", { +patch(PersonaService.prototype, { setup(env, services) { - this._super(env, services); + super.setup(env, services); this.userService = services.user; }, diff --git a/addons/hr_holidays/static/src/thread_patch.js b/addons/hr_holidays/static/src/thread_patch.js index 58cbbe7f54e..cdc66f92c7b 100644 --- a/addons/hr_holidays/static/src/thread_patch.js +++ b/addons/hr_holidays/static/src/thread_patch.js @@ -4,9 +4,9 @@ import { Thread } from "@mail/core/common/thread"; import { useService } from "@web/core/utils/hooks"; import { patch } from "@web/core/utils/patch"; -patch(Thread.prototype, "hr_holidays", { +patch(Thread.prototype, { setup() { - this._super(); + super.setup(); this.personaService = useService("mail.persona"); }, }); diff --git a/addons/hr_holidays/static/tests/helpers/mock_server/models/res_partner.js b/addons/hr_holidays/static/tests/helpers/mock_server/models/res_partner.js index 5b3764f9ad0..0e8b6a76d7d 100644 --- a/addons/hr_holidays/static/tests/helpers/mock_server/models/res_partner.js +++ b/addons/hr_holidays/static/tests/helpers/mock_server/models/res_partner.js @@ -5,14 +5,14 @@ import '@mail/../tests/helpers/mock_server/models/res_partner'; // ensure mail o import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, 'hr_holidays/models/res_partner', { +patch(MockServer.prototype, { /** * Overrides to add out of office to employees. * * @override */ _mockResPartnerMailPartnerFormat(ids) { - const partnerFormats = this._super(...arguments); + const partnerFormats = super._mockResPartnerMailPartnerFormat(...arguments); const partners = this.getRecords( 'res.partner', [['id', 'in', ids]], diff --git a/addons/hr_homeworking/static/src/calendar/common/calendar_common_renderer.js b/addons/hr_homeworking/static/src/calendar/common/calendar_common_renderer.js index a61514b663b..8eb631d6212 100644 --- a/addons/hr_homeworking/static/src/calendar/common/calendar_common_renderer.js +++ b/addons/hr_homeworking/static/src/calendar/common/calendar_common_renderer.js @@ -3,9 +3,10 @@ import { AttendeeCalendarCommonRenderer } from "@calendar/views/attendee_calendar/common/attendee_calendar_common_renderer" import { patch } from "@web/core/utils/patch"; import { renderToString } from "@web/core/utils/render"; -patch(AttendeeCalendarCommonRenderer.prototype, "hr_homeworking_calendar_common_renderer", { + +patch(AttendeeCalendarCommonRenderer.prototype, { get options(){ - let a = Object.assign(this._super(), { + let a = Object.assign(super.options, { columnHeaderHtml: function(date) { if (this.props.model.scale === 'week'){ return "
" + moment(date).format("ddd DD") +"
" + renderToString(this.constructor.HeaderCalendarTemplate, {date: date, today : new Date()}); @@ -31,7 +32,7 @@ patch(AttendeeCalendarCommonRenderer.prototype, "hr_homeworking_calendar_common_ }) }, fcEventToRecord(event) { - const res = this._super(...arguments); + const res = super.fcEventToRecord(...arguments); res.homework = event.homework; return res; }, @@ -53,7 +54,7 @@ patch(AttendeeCalendarCommonRenderer.prototype, "hr_homeworking_calendar_common_ return events; }, mapRecordsToEvents() { - let event = this._super(...arguments); + let event = super.mapRecordsToEvents(...arguments); let work = []; if (this.props.model.multiCalendar) { for (const day in this.props.model.worklocations) { @@ -114,7 +115,7 @@ patch(AttendeeCalendarCommonRenderer.prototype, "hr_homeworking_calendar_common_ const {children } = new DOMParser().parseFromString(content, "text/html").body box.appendChild(...children) } - this._super(...arguments); + super.onDayRender(...arguments); }, onEventRender(info) { const { el, event } = info; @@ -149,14 +150,14 @@ patch(AttendeeCalendarCommonRenderer.prototype, "hr_homeworking_calendar_common_ const { children } = domParser.parseFromString(injectedContentStr, "text/html").body; el.querySelector(".fc-content").replaceWith(...children); } else { - this._super(...arguments); + super.onEventRender(...arguments); } }, onDblClick(info) { if (info.event.extendedProps.worklocation) { this.onClick(info); } else { - this._super(...arguments); + super.onDblClick(...arguments); } }, onClick(info){ @@ -185,7 +186,7 @@ patch(AttendeeCalendarCommonRenderer.prototype, "hr_homeworking_calendar_common_ this.openPopover(info.el, wl); this.highlightEvent(info.event, "o_cw_custom_highlight"); } else { - this._super(...arguments); + super.onClick(...arguments); } }, onDateClick(info){ @@ -193,12 +194,11 @@ patch(AttendeeCalendarCommonRenderer.prototype, "hr_homeworking_calendar_common_ info.homework = true this.props.createRecord(this.fcEventToRecord(info)); } else { - this._super(...arguments) + super.onDateClick(...arguments) } } -}, +}); -AttendeeCalendarCommonRenderer.WorklocationTemplate = "hr.homeworking.CalendarCommonRenderer.worklocation", -AttendeeCalendarCommonRenderer.HeaderCalendarTemplate = "hr.homeworking.CalendarCommonRenderer.buttonWorklocation", -AttendeeCalendarCommonRenderer.ButtonWorklocationTemplate = "hr.homeworking.CalendarCommonRenderer.buttonWorklocation", -) +AttendeeCalendarCommonRenderer.WorklocationTemplate = "hr.homeworking.CalendarCommonRenderer.worklocation"; +AttendeeCalendarCommonRenderer.HeaderCalendarTemplate = "hr.homeworking.CalendarCommonRenderer.buttonWorklocation"; +AttendeeCalendarCommonRenderer.ButtonWorklocationTemplate = "hr.homeworking.CalendarCommonRenderer.buttonWorklocation"; diff --git a/addons/hr_homeworking/static/src/calendar/common/calendar_model.js b/addons/hr_homeworking/static/src/calendar/common/calendar_model.js index ce5b449e4c7..b1ff3a4ae74 100644 --- a/addons/hr_homeworking/static/src/calendar/common/calendar_model.js +++ b/addons/hr_homeworking/static/src/calendar/common/calendar_model.js @@ -4,7 +4,7 @@ import { AttendeeCalendarModel } from "@calendar/views/attendee_calendar/attende import { serializeDateTime, deserializeDate } from "@web/core/l10n/dates"; import { patch } from "@web/core/utils/patch"; -patch(AttendeeCalendarModel.prototype, "calendar_model_calendarApp", { +patch(AttendeeCalendarModel.prototype, { fetchEventLocation(data) { let attendeeIds; const filters = data.filterSections.partner_ids.filters; @@ -92,7 +92,7 @@ patch(AttendeeCalendarModel.prototype, "calendar_model_calendarApp", { * @override */ async updateData(data){ - await this._super(...arguments) + await super.updateData(...arguments) this.partnerColorMap = this.mapPartnersToColor(data); data.worklocations = await this.loadWorkLocations(data); } diff --git a/addons/hr_homeworking/static/src/calendar/common/popover/calendar_common_popover.js b/addons/hr_homeworking/static/src/calendar/common/popover/calendar_common_popover.js index 24cada5a218..fffd44b71a4 100644 --- a/addons/hr_homeworking/static/src/calendar/common/popover/calendar_common_popover.js +++ b/addons/hr_homeworking/static/src/calendar/common/popover/calendar_common_popover.js @@ -4,10 +4,10 @@ import { patch } from "@web/core/utils/patch"; import { AttendeeCalendarCommonPopover } from "@calendar/views/attendee_calendar/common/attendee_calendar_common_popover"; import { Field } from "@web/views/fields/field" -patch(AttendeeCalendarCommonPopover.prototype, "hr_homeworking_calendar_common_popover",{ +patch(AttendeeCalendarCommonPopover.prototype, { setup() { this.fieldNames = ["work_location_id", "work_location_name", "work_location_type", "employee_id", "weekday", "weekly", "start_date", "employee_name"]; - this._super(...arguments) + super.setup(...arguments) }, isWorkLocationEvent(){ return this.props.record.rawRecord['resModel'] === 'hr.employee.location'; @@ -19,19 +19,19 @@ patch(AttendeeCalendarCommonPopover.prototype, "hr_homeworking_calendar_common_p return this.isWorkLocationEvent() && this.props.record.userId === this.slot.record.model.user.userId; }, get isEventEditable() { - return ('resModel' in this.props.record.rawRecord) || this._super(...arguments) + return ('resModel' in this.props.record.rawRecord) || super.isEventEditable; }, get isEventViewable() { - return !('resModel' in this.props.record.rawRecord) || this._super(...arguments) + return !('resModel' in this.props.record.rawRecord) || super.isEventViewable; }, get isEventDeletable() { - return ('resModel' in this.props.record.rawRecord) || this._super(...arguments) + return ('resModel' in this.props.record.rawRecord) || super.isEventDeletable; }, get displayAttendeeAnswerChoice() { - return !('resModel' in this.props.record.rawRecord) && this._super(...arguments) + return !('resModel' in this.props.record.rawRecord) && super.displayAttendeeAnswerChoice; }, get isCurrentUserAttendee() { - return !('resModel' in this.props.record.rawRecord) && this._super(...arguments) + return !('resModel' in this.props.record.rawRecord) && super.isCurrentUserAttendee; } }) diff --git a/addons/hr_homeworking/static/src/calendar/hr_homeworking_calendar_controller.js b/addons/hr_homeworking/static/src/calendar/hr_homeworking_calendar_controller.js index 46ad4db6e34..d3b4b3ae7b8 100644 --- a/addons/hr_homeworking/static/src/calendar/hr_homeworking_calendar_controller.js +++ b/addons/hr_homeworking/static/src/calendar/hr_homeworking_calendar_controller.js @@ -6,9 +6,9 @@ import { ConfirmationDialog } from "@web/core/confirmation_dialog/confirmation_d import { AttendeeCalendarController } from "@calendar/views/attendee_calendar/attendee_calendar_controller" import { serializeDate} from "@web/core/l10n/dates"; -patch(AttendeeCalendarController.prototype, "hr_homeworking_calendar_controller",{ +patch(AttendeeCalendarController.prototype, { setup() { - this._super() + super.setup() this.action = useService("action"); }, async editRecord(record, context = {}, shouldFetchFormViewId = true) { @@ -26,7 +26,7 @@ patch(AttendeeCalendarController.prototype, "hr_homeworking_calendar_controller" }, }); } - return this._super(...arguments) + return super.editRecord(...arguments) }, createRecord(record) { if (record.homework) { @@ -42,7 +42,7 @@ patch(AttendeeCalendarController.prototype, "hr_homeworking_calendar_controller" }, }); } else { - return this._super(record); + return super.createRecord(record); } }, deleteRecord(record) { @@ -64,7 +64,7 @@ patch(AttendeeCalendarController.prototype, "hr_homeworking_calendar_controller" }); } } else { - this._super(...arguments) + super.deleteRecord(...arguments) } }, diff --git a/addons/hr_homeworking/static/tests/hr_org_chart_tests.js b/addons/hr_homeworking/static/tests/hr_org_chart_tests.js index e01d7c24a83..d74ea3c547e 100644 --- a/addons/hr_homeworking/static/tests/hr_org_chart_tests.js +++ b/addons/hr_homeworking/static/tests/hr_org_chart_tests.js @@ -3,11 +3,11 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "hr_homeworking", { +patch(MockServer.prototype, { async _performRPC(route, args) { if (args.method === "get_worklocation") { return Promise.resolve() } - return this._super(...arguments); + return super._performRPC(...arguments); }, }); \ No newline at end of file diff --git a/addons/im_livechat/static/src/chat_window/chat_window_patch.js b/addons/im_livechat/static/src/chat_window/chat_window_patch.js index 1a299cc5b5b..a005d139ee2 100644 --- a/addons/im_livechat/static/src/chat_window/chat_window_patch.js +++ b/addons/im_livechat/static/src/chat_window/chat_window_patch.js @@ -4,9 +4,9 @@ import { ChatWindow } from "@mail/core/common/chat_window"; import { patch } from "@web/core/utils/patch"; -patch(ChatWindow.prototype, "im_livechat", { +patch(ChatWindow.prototype, { close(options) { - this._super(options); + super.close(options); if ( this.thread?.type === "livechat" && this.thread.isLoaded && diff --git a/addons/im_livechat/static/src/composer/composer_patch.js b/addons/im_livechat/static/src/composer/composer_patch.js index 49c072e6020..733b2011cf7 100644 --- a/addons/im_livechat/static/src/composer/composer_patch.js +++ b/addons/im_livechat/static/src/composer/composer_patch.js @@ -4,13 +4,13 @@ import { Composer } from "@mail/core/common/composer"; import { patch } from "@web/core/utils/patch"; -patch(Composer.prototype, "im_livechat", { +patch(Composer.prototype, { get allowUpload() { - return this.thread?.type !== "livechat" && this._super(); + return this.thread?.type !== "livechat" && super.allowUpload; }, onKeydown(ev) { - this._super(ev); + super.onKeydown(ev); if ( ev.key === "Tab" && this.thread?.type === "livechat" && diff --git a/addons/im_livechat/static/src/composer/suggestion_service_patch.js b/addons/im_livechat/static/src/composer/suggestion_service_patch.js index 4941fe26560..e3f8b635e45 100644 --- a/addons/im_livechat/static/src/composer/suggestion_service_patch.js +++ b/addons/im_livechat/static/src/composer/suggestion_service_patch.js @@ -6,11 +6,11 @@ import { cleanTerm } from "@mail/utils/common/format"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(SuggestionService.prototype, "im_livechat", { +patch(SuggestionService.prototype, { getSupportedDelimiters(thread) { return thread?.model !== "discuss.channel" || thread.type === "livechat" - ? [...this._super(...arguments), [":"]] - : this._super(...arguments); + ? [...super.getSupportedDelimiters(...arguments), [":"]] + : super.getSupportedDelimiters(...arguments); }, /** * Returns suggestions that match the given search term from specified type. @@ -27,7 +27,7 @@ patch(SuggestionService.prototype, "im_livechat", { if (delimiter === ":") { return this.searchCannedResponseSuggestions(cleanTerm(term), sort); } - return this._super(...arguments); + return super.searchSuggestions(...arguments); }, searchCannedResponseSuggestions(cleanedSearchTerm, sort) { diff --git a/addons/im_livechat/static/src/core/channel_member_list_patch.js b/addons/im_livechat/static/src/core/channel_member_list_patch.js index 22101747f16..3dfd7500d31 100644 --- a/addons/im_livechat/static/src/core/channel_member_list_patch.js +++ b/addons/im_livechat/static/src/core/channel_member_list_patch.js @@ -3,8 +3,8 @@ import { ChannelMemberList } from "@mail/discuss/core/common/channel_member_list"; import { patch } from "@web/core/utils/patch"; -patch(ChannelMemberList.prototype, "im_livechat", { +patch(ChannelMemberList.prototype, { canOpenChatWith(member) { - return this._super(member) && !member.persona.is_public; + return super.canOpenChatWith(member) && !member.persona.is_public; }, }); diff --git a/addons/im_livechat/static/src/core/channel_member_service_patch.js b/addons/im_livechat/static/src/core/channel_member_service_patch.js index f29dbb41763..93c37882231 100644 --- a/addons/im_livechat/static/src/core/channel_member_service_patch.js +++ b/addons/im_livechat/static/src/core/channel_member_service_patch.js @@ -3,10 +3,10 @@ import { ChannelMemberService } from "@mail/core/common/channel_member_service"; import { patch } from "@web/core/utils/patch"; -patch(ChannelMemberService.prototype, "im_livechat", { +patch(ChannelMemberService.prototype, { getName(member) { if (member.thread.type !== "livechat") { - return this._super(member); + return super.getName(member); } if (member.persona.user_livechat_username) { return member.persona.user_livechat_username; @@ -14,6 +14,6 @@ patch(ChannelMemberService.prototype, "im_livechat", { if (member.persona.is_public) { return member.thread.anonymous_name; } - return this._super(member); + return super.getName(member); }, }); diff --git a/addons/im_livechat/static/src/core/store_service_patch.js b/addons/im_livechat/static/src/core/store_service_patch.js index 4af864acd1d..c859043644a 100644 --- a/addons/im_livechat/static/src/core/store_service_patch.js +++ b/addons/im_livechat/static/src/core/store_service_patch.js @@ -5,9 +5,9 @@ import { Store } from "@mail/core/common/store_service"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(Store.prototype, "im_livechat", { +patch(Store.prototype, { setup(env) { - this._super(env); + super.setup(env); this.discuss.livechat = { extraClass: "o-mail-DiscussSidebarCategory-livechat", id: "livechat", diff --git a/addons/im_livechat/static/src/core/thread_model_patch.js b/addons/im_livechat/static/src/core/thread_model_patch.js index 48fa1ee2ebc..685040ef0d9 100644 --- a/addons/im_livechat/static/src/core/thread_model_patch.js +++ b/addons/im_livechat/static/src/core/thread_model_patch.js @@ -5,37 +5,37 @@ import { Thread } from "@mail/core/common/thread_model"; import { patch } from "@web/core/utils/patch"; -patch(Thread.prototype, "im_livechat", { +patch(Thread.prototype, { get isChannel() { - return this.type === "livechat" || this._super(); + return this.type === "livechat" || super.isChannel; }, get hasMemberList() { - return this.type === "livechat" || this._super(); + return this.type === "livechat" || super.hasMemberList; }, get isChatChannel() { - return this.type === "livechat" || this._super(); + return this.type === "livechat" || super.isChatChannel; }, get allowSetLastSeenMessage() { - return this.type === "livechat" || this._super(); + return this.type === "livechat" || super.allowSetLastSeenMessage; }, get allowReactions() { - return this.type === "livechat" ? false : this._super(); + return this.type === "livechat" ? false : super.allowReactions; }, get allowReplies() { - return this.type === "livechat" ? false : this._super(); + return this.type === "livechat" ? false : super.allowReplies; }, get correspondents() { - return this._super().filter((correspondent) => !correspondent.is_bot); + return super.correspondents.filter((correspondent) => !correspondent.is_bot); }, get correspondent() { - let correspondent = this._super(); + let correspondent = super.correspondent; if (this.type === "livechat" && !correspondent) { // For livechat threads, the correspondent is the first // channel member that is not the operator. @@ -52,7 +52,7 @@ patch(Thread.prototype, "im_livechat", { get displayName() { if (this.type !== "livechat" || !this.correspondent) { - return this._super(); + return super.displayName; } if (!this.correspondent.is_public && this.correspondent.country) { return `${this.getMemberName(this.correspondent)} (${this.correspondent.country.name})`; @@ -67,7 +67,7 @@ patch(Thread.prototype, "im_livechat", { get imgUrl() { if (this.type !== "livechat") { - return this._super(); + return super.imgUrl; } return this.correspondent && !this.correspondent.is_public ? `/web/image/res.partner/${this.correspondent.id}/avatar_128` @@ -80,7 +80,7 @@ patch(Thread.prototype, "im_livechat", { */ getMemberName(persona) { if (this.type !== "livechat") { - return this._super(persona); + return super.getMemberName(persona); } if (persona.user_livechat_username) { return persona.user_livechat_username; @@ -88,6 +88,6 @@ patch(Thread.prototype, "im_livechat", { if (persona.is_public && this.anonymous_name) { return this.anonymous_name; } - return this._super(persona); + return super.getMemberName(persona); }, }); diff --git a/addons/im_livechat/static/src/core/thread_service_patch.js b/addons/im_livechat/static/src/core/thread_service_patch.js index d944f2a5623..3ed40af68af 100644 --- a/addons/im_livechat/static/src/core/thread_service_patch.js +++ b/addons/im_livechat/static/src/core/thread_service_patch.js @@ -6,10 +6,10 @@ import { assignDefined, createLocalId } from "@mail/utils/common/misc"; import { patch } from "@web/core/utils/patch"; -patch(ThreadService.prototype, "im_livechat", { +patch(ThreadService.prototype, { insert(data) { const isUnknown = !(createLocalId(data.model, data.id) in this.store.threads); - const thread = this._super(data); + const thread = super.insert(data); if (thread.type === "livechat") { if (data?.channel) { assignDefined(thread, data.channel, ["anonymous_name"]); @@ -34,7 +34,7 @@ patch(ThreadService.prototype, "im_livechat", { * @param {boolean} pushState */ setDiscussThread(thread, pushState) { - this._super(thread, pushState); + super.setDiscussThread(thread, pushState); if (this.ui.isSmall && thread.type === "livechat") { this.store.discuss.activeTab = "livechat"; } @@ -43,29 +43,29 @@ patch(ThreadService.prototype, "im_livechat", { if (thread.type === "livechat") { removeFromArray(this.store.discuss.livechat.threads, thread.localId); } - this._super(thread); + super.remove(thread); }, canLeave(thread) { - return thread.type !== "livechat" && this._super(thread); + return thread.type !== "livechat" && super.canLeave(thread); }, canUnpin(thread) { if (thread.type === "livechat") { return thread.message_unread_counter === 0; } - return this._super(thread); + return super.canUnpin(thread); }, getCounter(thread) { if (thread.type === "livechat") { return thread.message_unread_counter; } - return this._super(thread); + return super.getCounter(thread); }, sortChannels() { - this._super(); + super.sortChannels(); // Live chats are sorted by most recent interest date time in the sidebar. this.store.discuss.livechat.threads.sort((localId_1, localId_2) => { const thread1 = this.store.threads[localId_1]; diff --git a/addons/im_livechat/static/src/embed/chat_window/chat_window_patch.js b/addons/im_livechat/static/src/embed/chat_window/chat_window_patch.js index fe781641644..f8b370e7a56 100644 --- a/addons/im_livechat/static/src/embed/chat_window/chat_window_patch.js +++ b/addons/im_livechat/static/src/embed/chat_window/chat_window_patch.js @@ -12,9 +12,9 @@ import { patch } from "@web/core/utils/patch"; Object.assign(ChatWindow.components, { FeedbackPanel }); -patch(ChatWindow.prototype, "im_livechat", { +patch(ChatWindow.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.livechatService = useService("im_livechat.livechat"); this.chatbotService = useState(useService("im_livechat.chatbot")); this.livechatState = useState({ @@ -24,13 +24,13 @@ patch(ChatWindow.prototype, "im_livechat", { close() { if (this.thread?.type !== "livechat") { - return this._super(); + return super.close(); } if (this.livechatService.state === SESSION_STATE.PERSISTED) { this.livechatState.hasFeedbackPanel = true; this.chatWindowService.show(this.props.chatWindow); } else { - this._super(); + super.close(); } this.livechatService.leaveSession(); this.chatbotService.stop(); diff --git a/addons/im_livechat/static/src/embed/core/composer_patch.js b/addons/im_livechat/static/src/embed/core/composer_patch.js index 1d4b9911d88..56cc7d93d41 100644 --- a/addons/im_livechat/static/src/embed/core/composer_patch.js +++ b/addons/im_livechat/static/src/embed/core/composer_patch.js @@ -7,10 +7,10 @@ import { Composer } from "@mail/core/common/composer"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(Composer.prototype, "im_livechat", { +patch(Composer.prototype, { get placeholder() { if (this.thread?.type !== "livechat") { - return this._super(); + return super.placeholder; } return options.input_placeholder || _t("Say something..."); }, diff --git a/addons/im_livechat/static/src/embed/core/disabled_features.js b/addons/im_livechat/static/src/embed/core/disabled_features.js index 3b7ccd9df99..ec863b4d0c4 100644 --- a/addons/im_livechat/static/src/embed/core/disabled_features.js +++ b/addons/im_livechat/static/src/embed/core/disabled_features.js @@ -9,25 +9,25 @@ import { ThreadService } from "@mail/core/common/thread_service"; import { patch } from "@web/core/utils/patch"; -patch(Composer.prototype, "im_livechat/disabled", { +patch(Composer.prototype, { get allowUpload() { return false; }, }); -patch(MessageModel.prototype, "im_livechat/disabled", { +patch(MessageModel.prototype, { get hasActions() { return false; }, }); -patch(Thread.prototype, "im_livechat/disabled", { +patch(Thread.prototype, { get hasMemberList() { return false; }, }); -patch(ThreadService.prototype, "im_livechat/disabled", { +patch(ThreadService.prototype, { async fetchNewMessages(thread) { return; }, @@ -36,9 +36,9 @@ patch(ThreadService.prototype, "im_livechat/disabled", { }, }); -patch(Store.prototype, "im_livechat/disabled", { +patch(Store.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.hasLinkPreviewFeature = false; }, }); diff --git a/addons/im_livechat/static/src/embed/core/message_model_patch.js b/addons/im_livechat/static/src/embed/core/message_model_patch.js index a33777f444b..2bbabb3b442 100644 --- a/addons/im_livechat/static/src/embed/core/message_model_patch.js +++ b/addons/im_livechat/static/src/embed/core/message_model_patch.js @@ -5,10 +5,10 @@ import { Message } from "@mail/core/common/message_model"; import { patch } from "@web/core/utils/patch"; import { session } from "@web/session"; -patch(Message.prototype, "im_livechat", { +patch(Message.prototype, { get isSelfAuthored() { if (this.originThread.type !== "livechat") { - return this._super(); + return super.isSelfAuthored; } return !this.author || this.author?.id === session.livechatData.options.current_partner_id; }, diff --git a/addons/im_livechat/static/src/embed/core/message_service_patch.js b/addons/im_livechat/static/src/embed/core/message_service_patch.js index 42242af8a82..ec539614d70 100644 --- a/addons/im_livechat/static/src/embed/core/message_service_patch.js +++ b/addons/im_livechat/static/src/embed/core/message_service_patch.js @@ -6,9 +6,9 @@ import { MessageService } from "@mail/core/common/message_service"; import { patch } from "@web/core/utils/patch"; -patch(MessageService.prototype, "im_livechat", { +patch(MessageService.prototype, { insert(data) { - const message = this._super(data); + const message = super.insert(data); if (data.chatbotStep) { message.chatbotStep = new ChatbotStep(data.chatbotStep); } diff --git a/addons/im_livechat/static/src/embed/core/messaging_service_patch.js b/addons/im_livechat/static/src/embed/core/messaging_service_patch.js index b1ab293fd74..06982367374 100644 --- a/addons/im_livechat/static/src/embed/core/messaging_service_patch.js +++ b/addons/im_livechat/static/src/embed/core/messaging_service_patch.js @@ -5,7 +5,7 @@ import { Messaging } from "@mail/core/common/messaging_service"; import { patch } from "@web/core/utils/patch"; import { session } from "@web/session"; -patch(Messaging.prototype, "im_livechat", { +patch(Messaging.prototype, { initialize() { if (session.livechatData?.options.current_partner_id) { this.store.user = this.personaService.insert({ diff --git a/addons/im_livechat/static/src/embed/core/thread_model_patch.js b/addons/im_livechat/static/src/embed/core/thread_model_patch.js index 9117ee97f1e..4c5cb825512 100644 --- a/addons/im_livechat/static/src/embed/core/thread_model_patch.js +++ b/addons/im_livechat/static/src/embed/core/thread_model_patch.js @@ -5,27 +5,27 @@ import { Thread } from "@mail/core/common/thread_model"; import { patch } from "@web/core/utils/patch"; import { session } from "@web/session"; -patch(Thread.prototype, "im_livechat", { +patch(Thread.prototype, { chatbotScriptId: null, get isChannel() { - return this.type === "livechat" || this._super(); + return this.type === "livechat" || super.isChannel; }, get isChatChannel() { - return this.type === "livechat" || this._super(); + return this.type === "livechat" || super.isChatChannel; }, get isLastMessageFromCustomer() { if (this.type !== "livechat") { - return this._super(); + return super.isLastMessageFromCustomer; } return this.newestMessage?.isSelfAuthored; }, get imgUrl() { if (this.type !== "livechat") { - return this._super(); + return super.imgUrl; } return `${session.origin}/im_livechat/operator/${this.operator.id}/avatar`; }, diff --git a/addons/im_livechat/static/src/embed/core/thread_service_patch.js b/addons/im_livechat/static/src/embed/core/thread_service_patch.js index 803bad01c4a..89a6c12533b 100644 --- a/addons/im_livechat/static/src/embed/core/thread_service_patch.js +++ b/addons/im_livechat/static/src/embed/core/thread_service_patch.js @@ -19,7 +19,7 @@ threadService.dependencies.push( "notification" ); -patch(ThreadService.prototype, "im_livechat", { +patch(ThreadService.prototype, { TEMPORARY_ID: "livechat_temporary_thread", /** @@ -32,7 +32,7 @@ patch(ThreadService.prototype, "im_livechat", { * }} services */ setup(env, services) { - this._super(env, services); + super.setup(env, services); this.livechatService = services["im_livechat.livechat"]; this.chatWindowService = services["mail.chat_window"]; this.chatbotService = services["im_livechat.chatbot"]; @@ -41,14 +41,14 @@ patch(ThreadService.prototype, "im_livechat", { getMessagePostRoute(thread) { if (thread.type !== "livechat") { - return this._super(...arguments); + return super.getMessagePostRoute(...arguments); } return "/im_livechat/chat_post"; }, async getMessagePostParams({ thread, body }) { if (thread.type !== "livechat") { - return this._super(...arguments); + return super.getMessagePostParams(...arguments); } return { uuid: thread.uuid, @@ -60,7 +60,6 @@ patch(ThreadService.prototype, "im_livechat", { * @returns {Promise c.threadLocalId === thread.localId); if ( this.livechatService.state !== SESSION_STATE.PERSISTED && @@ -80,7 +79,7 @@ patch(ThreadService.prototype, "im_livechat", { await this.chatbotService.postWelcomeSteps(); } } - const message = await _super(thread, body, params); + const message = await super.post(thread, body, params); if (!message) { this.notificationService.add(_t("Session expired... Please refresh and try again.")); this.chatWindowService.close(chatWindow); @@ -111,7 +110,7 @@ patch(ThreadService.prototype, "im_livechat", { insert(data) { const isUnknown = !(createLocalId(data.model, data.id) in this.store.threads); - const thread = this._super(...arguments); + const thread = super.insert(...arguments); if (thread.type === "livechat" && isUnknown) { if ( this.livechatService.displayWelcomeMessage && @@ -154,7 +153,7 @@ patch(ThreadService.prototype, "im_livechat", { }, async update(thread, data) { - this._super(...arguments); + super.update(...arguments); if (data.operator_pid) { thread.operator = this.personaService.insert({ type: "partner", @@ -166,7 +165,7 @@ patch(ThreadService.prototype, "im_livechat", { avatarUrl(author, thread) { if (thread.type !== "livechat") { - return this._super(...arguments); + return super.avatarUrl(...arguments); } const isFromOperator = author && author.id !== this.livechatService.options.current_partner_id; diff --git a/addons/im_livechat/static/src/embed/core_ui/message_patch.js b/addons/im_livechat/static/src/embed/core_ui/message_patch.js index 5a9fde798fc..7b77431a1b3 100644 --- a/addons/im_livechat/static/src/embed/core_ui/message_patch.js +++ b/addons/im_livechat/static/src/embed/core_ui/message_patch.js @@ -7,9 +7,9 @@ import { session } from "@web/session"; Message.props.push("isTypingMessage?"); -patch(Message.prototype, "im_livechat", { +patch(Message.prototype, { setup() { - this._super(); + super.setup(); this.session = session; }, diff --git a/addons/im_livechat/static/src/embed/core_ui/thread_patch.js b/addons/im_livechat/static/src/embed/core_ui/thread_patch.js index 9d67f649661..a83e4d97449 100644 --- a/addons/im_livechat/static/src/embed/core_ui/thread_patch.js +++ b/addons/im_livechat/static/src/embed/core_ui/thread_patch.js @@ -8,9 +8,9 @@ import { useService } from "@web/core/utils/hooks"; import { patch } from "@web/core/utils/patch"; import { session } from "@web/session"; -patch(Thread.prototype, "im_livechat", { +patch(Thread.prototype, { setup() { - this._super(); + super.setup(); this.session = session; this.chatbotService = useState(useService("im_livechat.chatbot")); this.livechatService = useState(useService("im_livechat.livechat")); diff --git a/addons/im_livechat/static/src/embed/external/bus_parameters_service_patch.js b/addons/im_livechat/static/src/embed/external/bus_parameters_service_patch.js index d10872985eb..b28cfcbf17e 100644 --- a/addons/im_livechat/static/src/embed/external/bus_parameters_service_patch.js +++ b/addons/im_livechat/static/src/embed/external/bus_parameters_service_patch.js @@ -6,10 +6,10 @@ import { serverUrl } from "@im_livechat/embed/livechat_data"; import { patch } from "@web/core/utils/patch"; -patch(busParametersService, "im_livechat", { +patch(busParametersService, { start() { return { - ...this._super(...arguments), + ...super.start(...arguments), serverURL: serverUrl.replace(/\/+$/, ""), }; }, diff --git a/addons/im_livechat/static/src/embed/external/emoji_loader_patch.js b/addons/im_livechat/static/src/embed/external/emoji_loader_patch.js index 47e6ee1bab5..d9d64b05ba6 100644 --- a/addons/im_livechat/static/src/embed/external/emoji_loader_patch.js +++ b/addons/im_livechat/static/src/embed/external/emoji_loader_patch.js @@ -7,7 +7,7 @@ import { memoize } from "@web/core/utils/functions"; import { patch } from "@web/core/utils/patch"; import { session } from "@web/session"; -patch(loader, "im_livechat/emoji_loader", { +patch(loader, { loadEmoji: memoize(() => loadBundle({ jsLibs: [`${session.origin}/im_livechat/emoji_bundle`], diff --git a/addons/im_livechat/static/src/embed/frontend/overlay_container_patch.js b/addons/im_livechat/static/src/embed/frontend/overlay_container_patch.js index a0f1fd66e11..9f3ba2a2a27 100644 --- a/addons/im_livechat/static/src/embed/frontend/overlay_container_patch.js +++ b/addons/im_livechat/static/src/embed/frontend/overlay_container_patch.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { OverlayContainer } from "@web/core/overlay/overlay_container"; -patch(OverlayContainer.prototype, "im_livechat", { +patch(OverlayContainer.prototype, { isVisible(overlay) { const targetInShadow = overlay.props.target?.getRootNode() instanceof ShadowRoot; return targetInShadow ? this.env.inShadow : !this.env.inShadow; diff --git a/addons/im_livechat/static/src/js/im_livechat_chatbot_steps_one2many.js b/addons/im_livechat/static/src/js/im_livechat_chatbot_steps_one2many.js index 3a613e4236d..aa4bc00a575 100644 --- a/addons/im_livechat/static/src/js/im_livechat_chatbot_steps_one2many.js +++ b/addons/im_livechat/static/src/js/im_livechat_chatbot_steps_one2many.js @@ -12,7 +12,7 @@ import { ListRenderer } from "@web/views/list/list_renderer"; const fieldRegistry = registry.category("fields"); -patch(X2ManyFieldDialog.prototype, "chatbot_script_step_sequence", { +patch(X2ManyFieldDialog.prototype, { /** * Dirty patching of the 'X2ManyFieldDialog'. * It is done to force the "save and new" to close the dialog first, and then click again on @@ -24,7 +24,7 @@ patch(X2ManyFieldDialog.prototype, "chatbot_script_step_sequence", { */ async save({ saveAndNew }) { if (this.record.resModel !== "chatbot.script.step") { - return this._super(...arguments); + return super.save(...arguments); } if (await this.record.checkValidity()) { diff --git a/addons/im_livechat/static/src/messaging_menu/messaging_menu_patch.js b/addons/im_livechat/static/src/messaging_menu/messaging_menu_patch.js index 81095560c0f..fa8aa035dcc 100644 --- a/addons/im_livechat/static/src/messaging_menu/messaging_menu_patch.js +++ b/addons/im_livechat/static/src/messaging_menu/messaging_menu_patch.js @@ -5,12 +5,12 @@ import { MessagingMenu } from "@mail/core/web/messaging_menu"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(MessagingMenu.prototype, "im_livechat", { +patch(MessagingMenu.prototype, { /** * @override */ tabToThreadType(tab) { - const threadTypes = this._super(tab); + const threadTypes = super.tabToThreadType(tab); if (tab === "chat" && !this.ui.isSmall) { threadTypes.push("livechat"); } @@ -23,7 +23,7 @@ patch(MessagingMenu.prototype, "im_livechat", { * @override */ get tabs() { - const items = this._super(); + const items = super.tabs; const hasLivechats = Object.values(this.store.threads).some( ({ type }) => type === "livechat" ); diff --git a/addons/im_livechat/static/src/web/message_patch.js b/addons/im_livechat/static/src/web/message_patch.js index 945f365807e..22e0ea451ab 100644 --- a/addons/im_livechat/static/src/web/message_patch.js +++ b/addons/im_livechat/static/src/web/message_patch.js @@ -5,10 +5,10 @@ import "@mail/discuss/core/web/message_patch"; // dependency ordering import { patch } from "@web/core/utils/patch"; -patch(Message.prototype, "im_livechat/web", { +patch(Message.prototype, { hasOpenChatFeature() { return this.message.originThread?.channel?.channel_type === "livechat" ? false - : this._super(); + : super.hasOpenChatFeature(); }, }); diff --git a/addons/im_livechat/static/tests/embed/helper/test_utils.js b/addons/im_livechat/static/tests/embed/helper/test_utils.js index 217a61f967e..532afa60916 100644 --- a/addons/im_livechat/static/tests/embed/helper/test_utils.js +++ b/addons/im_livechat/static/tests/embed/helper/test_utils.js @@ -69,10 +69,10 @@ export async function loadDefaultConfig() { return livechatChannelId; } -patch(App.prototype, "im_livechat", { +patch(App.prototype, { mount() { registerCleanup(() => this.destroy()); - return this._super(...arguments); + return super.mount(...arguments); }, }); @@ -108,7 +108,7 @@ export async function start({ mockRPC } = {}) { const livechatButtonAvailableDeferred = makeDeferred(); patchWithCleanup(LivechatButton.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); onMounted(() => livechatButtonAvailableDeferred.resolve()); }, }); diff --git a/addons/im_livechat/static/tests/helpers/mock_server/controllers/main.js b/addons/im_livechat/static/tests/helpers/mock_server/controllers/main.js index e40c7e073c6..99d46a296b3 100644 --- a/addons/im_livechat/static/tests/helpers/mock_server/controllers/main.js +++ b/addons/im_livechat/static/tests/helpers/mock_server/controllers/main.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "im_livechat/controllers/main", { +patch(MockServer.prototype, { /** * @override */ @@ -50,7 +50,7 @@ patch(MockServer.prototype, "im_livechat/controllers/main", { if (route === "/im_livechat/chat_history") { return this._mockRouteImLivechatChatHistory(args.uuid, args.last_id, args.limit); } - return this._super(...arguments); + return super._performRPC(...arguments); }, /** * Simulates the `/im_livechat/get_session` route. diff --git a/addons/im_livechat/static/tests/helpers/mock_server/models/discuss_channel.js b/addons/im_livechat/static/tests/helpers/mock_server/models/discuss_channel.js index da9a785f403..fc25ed2bc03 100644 --- a/addons/im_livechat/static/tests/helpers/mock_server/models/discuss_channel.js +++ b/addons/im_livechat/static/tests/helpers/mock_server/models/discuss_channel.js @@ -5,12 +5,12 @@ import "@mail/../tests/helpers/mock_server/models/discuss_channel"; // ensure ma import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "im_livechat/models/discuss_channel", { +patch(MockServer.prototype, { /** * @override */ _mockDiscussChannelChannelInfo(ids) { - const channelInfos = this._super(...arguments); + const channelInfos = super._mockDiscussChannelChannelInfo(...arguments); for (const channelInfo of channelInfos) { const channel = this.getRecords("discuss.channel", [["id", "=", channelInfo.id]])[0]; channelInfo["channel"]["anonymous_name"] = channel.anonymous_name; diff --git a/addons/im_livechat/static/tests/helpers/mock_server/models/discuss_channel_member.js b/addons/im_livechat/static/tests/helpers/mock_server/models/discuss_channel_member.js index dd53606863e..daa72c3f67f 100644 --- a/addons/im_livechat/static/tests/helpers/mock_server/models/discuss_channel_member.js +++ b/addons/im_livechat/static/tests/helpers/mock_server/models/discuss_channel_member.js @@ -5,7 +5,7 @@ import "@mail/../tests/helpers/mock_server/models/discuss_channel_member"; // en import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "im_livechat/models/discuss_channel_member", { +patch(MockServer.prototype, { /** * @override */ @@ -37,6 +37,6 @@ patch(MockServer.prototype, "im_livechat/models/discuss_channel_member", { } return data; } - return this._super(ids); + return super._mockDiscussChannelMember_GetPartnerData(ids); }, }); diff --git a/addons/im_livechat/static/tests/helpers/mock_server/models/im_livechat_channel.js b/addons/im_livechat/static/tests/helpers/mock_server/models/im_livechat_channel.js index 5e12919eb4f..6f7f07f9a18 100644 --- a/addons/im_livechat/static/tests/helpers/mock_server/models/im_livechat_channel.js +++ b/addons/im_livechat/static/tests/helpers/mock_server/models/im_livechat_channel.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "im_livechat/models/im_livechat_channel", { +patch(MockServer.prototype, { /** * Simulates `_compute_available_operator_ids` on `im_livechat.channel`. * diff --git a/addons/im_livechat/static/tests/helpers/mock_server/models/res_partner.js b/addons/im_livechat/static/tests/helpers/mock_server/models/res_partner.js index baadd9610c3..b64cf6a305c 100644 --- a/addons/im_livechat/static/tests/helpers/mock_server/models/res_partner.js +++ b/addons/im_livechat/static/tests/helpers/mock_server/models/res_partner.js @@ -5,7 +5,7 @@ import "@mail/../tests/helpers/mock_server/models/res_partner"; // ensure mail o import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "im_livechat/models/res_partner", { +patch(MockServer.prototype, { /** * @override */ @@ -19,13 +19,13 @@ patch(MockServer.prototype, "im_livechat/models/res_partner", { ["channel_type", "=", "livechat"], ["channel_member_ids", "in", members.map((member) => member.id)], ]); - return [...this._super(ids), ...livechats]; + return [...super._mockResPartner_GetChannelsAsMember(ids), ...livechats]; }, /** * @override */ _mockResPartnerSearchForChannelInvite(search_term, channel_id, limit = 30) { - const result = this._super(search_term, channel_id, limit); + const result = super._mockResPartnerSearchForChannelInvite(search_term, channel_id, limit); const [channel] = this.pyEnv["discuss.channel"].searchRead([["id", "=", channel_id]]); if (channel.channel_type !== "livechat") { return result; diff --git a/addons/l10n_ar/static/src/js/tours/account.js b/addons/l10n_ar/static/src/js/tours/account.js index 76788c03131..913ef9db984 100644 --- a/addons/l10n_ar/static/src/js/tours/account.js +++ b/addons/l10n_ar/static/src/js/tours/account.js @@ -3,9 +3,9 @@ import { patch } from "@web/core/utils/patch"; import { registry } from "@web/core/registry"; import "@account/js/tours/account"; -patch(registry.category("web_tour.tours").get("account_tour"), "patch_account_tour", { +patch(registry.category("web_tour.tours").get("account_tour"), { steps() { - const originalSteps = this._super(); + const originalSteps = super.steps(); // Remove the step suggesting to change the name as it is done another way (document number) const filteredSteps = originalSteps.filter((step) => step.trigger != "input[name=name]"); const stepIndex = filteredSteps.findIndex((step) => step.trigger == 'div[name=partner_id] input'); diff --git a/addons/l10n_co_pos/static/src/overrides/components/payment_screen/payment_screen.js b/addons/l10n_co_pos/static/src/overrides/components/payment_screen/payment_screen.js index 37698fe1e6e..d80c8cba763 100644 --- a/addons/l10n_co_pos/static/src/overrides/components/payment_screen/payment_screen.js +++ b/addons/l10n_co_pos/static/src/overrides/components/payment_screen/payment_screen.js @@ -3,9 +3,8 @@ import { PaymentScreen } from "@point_of_sale/app/screens/payment_screen/payment_screen"; import { patch } from "@web/core/utils/patch"; -patch(PaymentScreen.prototype, "l10n_co_pos.PaymentScreen", { +patch(PaymentScreen.prototype, { async _postPushOrderResolve(order, order_server_ids) { - const _super = this._super; try { if (this.pos.is_colombian_country()) { const result = await this.orm.searchRead( @@ -18,6 +17,6 @@ patch(PaymentScreen.prototype, "l10n_co_pos.PaymentScreen", { } catch { // FIXME this doesn't seem correct but is equivalent to return in finally which we had before. } - return _super(...arguments); + return super._postPushOrderResolve(...arguments); }, }); diff --git a/addons/l10n_co_pos/static/src/overrides/models/pos.js b/addons/l10n_co_pos/static/src/overrides/models/pos.js index 018be37fb42..2920c05824d 100644 --- a/addons/l10n_co_pos/static/src/overrides/models/pos.js +++ b/addons/l10n_co_pos/static/src/overrides/models/pos.js @@ -4,15 +4,15 @@ import { PosStore } from "@point_of_sale/app/store/pos_store"; import { Order } from "@point_of_sale/app/store/models"; import { patch } from "@web/core/utils/patch"; -patch(PosStore.prototype, "l10n_co_pos.PosStore", { +patch(PosStore.prototype, { is_colombian_country() { return this.company.country?.code === "CO"; }, }); -patch(Order.prototype, "l10n_co_pos.Order", { +patch(Order.prototype, { export_for_printing() { - const result = this._super(...arguments); + const result = super.export_for_printing(...arguments); result.l10n_co_dian = this.get_l10n_co_dian(); return result; }, @@ -23,7 +23,7 @@ patch(Order.prototype, "l10n_co_pos.Order", { return this.l10n_co_dian; }, wait_for_push_order() { - var result = this._super(...arguments); + var result = super.wait_for_push_order(...arguments); result = Boolean(result || this.pos.is_colombian_country()); return result; }, diff --git a/addons/l10n_fr_pos_cert/static/src/js/Chrome.js b/addons/l10n_fr_pos_cert/static/src/js/Chrome.js index e1c7a4b479b..e856a3f5e42 100644 --- a/addons/l10n_fr_pos_cert/static/src/js/Chrome.js +++ b/addons/l10n_fr_pos_cert/static/src/js/Chrome.js @@ -5,9 +5,9 @@ import { patch } from "@web/core/utils/patch"; import { ClosePosPopup } from "@point_of_sale/app/navbar/closing_popup/closing_popup"; import { onMounted } from "@odoo/owl"; -patch(Chrome.prototype, "l10n_fr_pos_cert.Chrome", { +patch(Chrome.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); onMounted(async () => { if (this.pos.is_french_country() && this.pos.pos_session.start_at) { const now = Date.now(); diff --git a/addons/l10n_fr_pos_cert/static/src/js/PaymentScreen.js b/addons/l10n_fr_pos_cert/static/src/js/PaymentScreen.js index 45f73d0b438..a243b237ce4 100644 --- a/addons/l10n_fr_pos_cert/static/src/js/PaymentScreen.js +++ b/addons/l10n_fr_pos_cert/static/src/js/PaymentScreen.js @@ -3,9 +3,8 @@ import { PaymentScreen } from "@point_of_sale/app/screens/payment_screen/payment_screen"; import { patch } from "@web/core/utils/patch"; -patch(PaymentScreen.prototype, "l10n_fr_pos_cert.PaymentScreen", { +patch(PaymentScreen.prototype, { async _postPushOrderResolve(order, order_server_ids) { - const _super = this._super; try { if (this.pos.is_french_country()) { const result = await this.orm.searchRead( @@ -18,6 +17,6 @@ patch(PaymentScreen.prototype, "l10n_fr_pos_cert.PaymentScreen", { } catch { // FIXME this doesn't seem correct but is equivalent to return in finally which we had before. } - return _super(...arguments); + return super._postPushOrderResolve(...arguments); }, }); diff --git a/addons/l10n_fr_pos_cert/static/src/js/Popups/ClosePosPopup.js b/addons/l10n_fr_pos_cert/static/src/js/Popups/ClosePosPopup.js index c3c4615fcec..d305ff6b1c5 100644 --- a/addons/l10n_fr_pos_cert/static/src/js/Popups/ClosePosPopup.js +++ b/addons/l10n_fr_pos_cert/static/src/js/Popups/ClosePosPopup.js @@ -3,7 +3,7 @@ import { ClosePosPopup } from "@point_of_sale/app/navbar/closing_popup/closing_popup"; import { patch } from "@web/core/utils/patch"; -patch(ClosePosPopup.prototype, "l10n_fr_pos_cert.ClosePosPopup", { +patch(ClosePosPopup.prototype, { sessionIsOutdated() { let isOutdated = false; if (this.pos.is_french_country() && this.pos.pos_session.start_at) { @@ -15,6 +15,6 @@ patch(ClosePosPopup.prototype, "l10n_fr_pos_cert.ClosePosPopup", { return isOutdated; }, canCancel() { - return this._super(...arguments) && !this.sessionIsOutdated(); + return super.canCancel(...arguments) && !this.sessionIsOutdated(); }, }); diff --git a/addons/l10n_fr_pos_cert/static/src/js/TicketScreen.js b/addons/l10n_fr_pos_cert/static/src/js/TicketScreen.js index 81f004dbbc3..a0ed674e2d0 100644 --- a/addons/l10n_fr_pos_cert/static/src/js/TicketScreen.js +++ b/addons/l10n_fr_pos_cert/static/src/js/TicketScreen.js @@ -3,8 +3,8 @@ import { TicketScreen } from "@point_of_sale/app/screens/ticket_screen/ticket_screen"; import { patch } from "@web/core/utils/patch"; -patch(TicketScreen.prototype, "l10n_fr_pos_cert.TicketScreen", { +patch(TicketScreen.prototype, { shouldHideDeleteButton() { - return this.pos.is_french_country() || this._super(...arguments); + return this.pos.is_french_country() || super.shouldHideDeleteButton(...arguments); } }); diff --git a/addons/l10n_fr_pos_cert/static/src/js/pos.js b/addons/l10n_fr_pos_cert/static/src/js/pos.js index 1fc222e52e2..cbc3a915acc 100644 --- a/addons/l10n_fr_pos_cert/static/src/js/pos.js +++ b/addons/l10n_fr_pos_cert/static/src/js/pos.js @@ -7,7 +7,7 @@ import { patch } from "@web/core/utils/patch"; import { sprintf } from "@web/core/utils/strings"; import { ErrorPopup } from "@point_of_sale/app/errors/popups/error_popup"; -patch(PosStore.prototype, "l10n_fr_pos_cert.PosStore", { +patch(PosStore.prototype, { is_french_country() { var french_countries = ["FR", "MF", "MQ", "NC", "PF", "RE", "GF", "GP", "TF"]; if (!this.company.country) { @@ -20,19 +20,19 @@ patch(PosStore.prototype, "l10n_fr_pos_cert.PosStore", { return french_countries.includes(this.company.country?.code); }, disallowLineQuantityChange() { - const result = this._super(...arguments); + const result = super.disallowLineQuantityChange(...arguments); return this.is_french_country() || result; }, }); -patch(Order.prototype, "l10n_fr_pos_cert.Order", { +patch(Order.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.l10n_fr_hash = this.l10n_fr_hash || false; this.save_to_db(); }, export_for_printing() { - var result = this._super(...arguments); + var result = super.export_for_printing(...arguments); result.l10n_fr_hash = this.get_l10n_fr_hash(); return result; }, @@ -43,16 +43,16 @@ patch(Order.prototype, "l10n_fr_pos_cert.Order", { return this.l10n_fr_hash; }, wait_for_push_order() { - var result = this._super(...arguments); + var result = super.wait_for_push_order(...arguments); result = Boolean(result || this.pos.is_french_country()); return result; }, }); -patch(Orderline.prototype, "l10n_fr_pos_cert.Orderline", { +patch(Orderline.prototype, { can_be_merged_with(orderline) { if (!this.pos.is_french_country()) { - return this._super(...arguments); + return super.can_be_merged_with(...arguments); } const order = this.pos.get_order(); const orderlines = order.orderlines; @@ -61,7 +61,7 @@ patch(Orderline.prototype, "l10n_fr_pos_cert.Orderline", { if (lastOrderline.product.id !== orderline.product.id || lastOrderline.quantity < 0) { return false; } else { - return this._super(...arguments); + return super.can_be_merged_with(...arguments); } }, }); diff --git a/addons/l10n_gcc_pos/static/src/overrides/components/order_receipt/order_receipt.js b/addons/l10n_gcc_pos/static/src/overrides/components/order_receipt/order_receipt.js index a59d713d5a2..35620c73f08 100644 --- a/addons/l10n_gcc_pos/static/src/overrides/components/order_receipt/order_receipt.js +++ b/addons/l10n_gcc_pos/static/src/overrides/components/order_receipt/order_receipt.js @@ -3,9 +3,9 @@ import { OrderReceipt } from "@point_of_sale/app/screens/receipt_screen/receipt/receipt"; import { patch } from "@web/core/utils/patch"; -patch(OrderReceipt.prototype, "l10n_gcc_pos.OrderReceipt", { +patch(OrderReceipt.prototype, { get receiptEnv() { - const receipt_render_env = this._super(...arguments); + const receipt_render_env = super.receiptEnv; const receipt = receipt_render_env.receipt; const country = receipt_render_env.order.pos.company.country; receipt.is_gcc_country = country diff --git a/addons/l10n_in_pos/static/src/overrides/models/orderline.js b/addons/l10n_in_pos/static/src/overrides/models/orderline.js index 4a8f14762aa..96acdb8984c 100644 --- a/addons/l10n_in_pos/static/src/overrides/models/orderline.js +++ b/addons/l10n_in_pos/static/src/overrides/models/orderline.js @@ -3,9 +3,9 @@ import { Orderline } from "@point_of_sale/app/store/models"; import { patch } from "@web/core/utils/patch"; -patch(Orderline.prototype, "l10n_in_pos.Orderline", { +patch(Orderline.prototype, { export_for_printing() { - const line = this._super(...arguments); + const line = super.export_for_printing(...arguments); line.l10n_in_hsn_code = this.get_product().l10n_in_hsn_code; return line; }, diff --git a/addons/l10n_sa_pos/static/src/overrides/models/models.js b/addons/l10n_sa_pos/static/src/overrides/models/models.js index c95a7734598..1f25d57ce87 100644 --- a/addons/l10n_sa_pos/static/src/overrides/models/models.js +++ b/addons/l10n_sa_pos/static/src/overrides/models/models.js @@ -3,9 +3,9 @@ import { Order } from "@point_of_sale/app/store/models"; import { patch } from "@web/core/utils/patch"; -patch(Order.prototype, "l10n_sa_pos.Order", { +patch(Order.prototype, { export_for_printing() { - const result = this._super(...arguments); + const result = super.export_for_printing(...arguments); if (this.pos.company.country && this.pos.company.country.code === "SA") { result.is_settlement = this.is_settlement(); if (!result.is_settlement) { diff --git a/addons/mail/static/src/core/web/chat_window_patch.js b/addons/mail/static/src/core/web/chat_window_patch.js index b208fe2c7e6..398765919e3 100644 --- a/addons/mail/static/src/core/web/chat_window_patch.js +++ b/addons/mail/static/src/core/web/chat_window_patch.js @@ -5,9 +5,9 @@ import { ChatWindow } from "@mail/core/common/chat_window"; import { useService } from "@web/core/utils/hooks"; import { patch } from "@web/core/utils/patch"; -patch(ChatWindow.prototype, "mail/core/web", { +patch(ChatWindow.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.actionService = useService("action"); }, }); diff --git a/addons/mail/static/src/core/web/chat_window_service_patch.js b/addons/mail/static/src/core/web/chat_window_service_patch.js index 3c8b2f08934..6d737a24ea8 100644 --- a/addons/mail/static/src/core/web/chat_window_service_patch.js +++ b/addons/mail/static/src/core/web/chat_window_service_patch.js @@ -4,9 +4,8 @@ import { ChatWindowService } from "@mail/core/common/chat_window_service"; import { patch } from "@web/core/utils/patch"; -patch(ChatWindowService.prototype, "mail/core/web", { +patch(ChatWindowService.prototype, { async close() { - const _super = this._super.bind(this); if (this.ui.isSmall && !this.store.discuss.isActive) { // If we are in mobile and discuss is not open, it means the // chat window was opened from the messaging menu. In that @@ -16,6 +15,6 @@ patch(ChatWindowService.prototype, "mail/core/web", { // ensure messaging menu is opened before chat window is closed await Promise.resolve(); } - await _super(...arguments); + await super.close(...arguments); }, }); diff --git a/addons/mail/static/src/core/web/dialog_patch.js b/addons/mail/static/src/core/web/dialog_patch.js index 7dd8f7f40a0..bda6c05ca9a 100644 --- a/addons/mail/static/src/core/web/dialog_patch.js +++ b/addons/mail/static/src/core/web/dialog_patch.js @@ -3,7 +3,7 @@ import { Dialog } from "@web/core/dialog/dialog"; import { patch } from "@web/core/utils/patch"; -patch(Dialog.prototype, "mail/views/web", { +patch(Dialog.prototype, { /** * @override */ @@ -11,6 +11,6 @@ patch(Dialog.prototype, "mail/views/web", { if (this.data.model === "mail.compose.message") { return; } - this._super(); + super.onEscape(); }, }); diff --git a/addons/mail/static/src/core/web/message_patch.js b/addons/mail/static/src/core/web/message_patch.js index 2c0440de132..f4f7d9aebca 100644 --- a/addons/mail/static/src/core/web/message_patch.js +++ b/addons/mail/static/src/core/web/message_patch.js @@ -14,9 +14,9 @@ import fieldUtils from "@web/legacy/js/fields/field_utils"; const format = fieldUtils.format const formatters = registry.category("formatters"); -patch(Message.prototype, "mail/core/web", { +patch(Message.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.action = useService("action"); this.userService = useService("user"); }, diff --git a/addons/mail/static/src/core/web/thread_model_patch.js b/addons/mail/static/src/core/web/thread_model_patch.js index 5d0187dd935..65ae6937a70 100644 --- a/addons/mail/static/src/core/web/thread_model_patch.js +++ b/addons/mail/static/src/core/web/thread_model_patch.js @@ -4,7 +4,7 @@ import { Thread } from "@mail/core/common/thread_model"; import { patch } from "@web/core/utils/patch"; -patch(Thread.prototype, "mail/core/web", { +patch(Thread.prototype, { /** * @returns {import("@mail/core/web/activity_model").Activity[]} */ diff --git a/addons/mail/static/src/core/web/thread_service_patch.js b/addons/mail/static/src/core/web/thread_service_patch.js index 0f6a2e5f6ba..d7a139a1cbd 100644 --- a/addons/mail/static/src/core/web/thread_service_patch.js +++ b/addons/mail/static/src/core/web/thread_service_patch.js @@ -12,9 +12,9 @@ import { patch } from "@web/core/utils/patch"; let nextId = 1; -patch(ThreadService.prototype, "mail/core/web", { +patch(ThreadService.prototype, { setup(env, services) { - this._super(env, services); + super.setup(env, services); this.action = services.action; /** @type {import("@mail/core/common/attachment_service").AttachmentService} */ this.attachmentService = services["mail.attachment"]; @@ -182,7 +182,7 @@ patch(ThreadService.prototype, "mail/core/web", { if (chatWindow) { this.chatWindowService.close(chatWindow); } - this._super(...arguments); + super.leaveChannel(...arguments); }, async loadMoreFollowers(thread) { const followers = await this.orm.call(thread.model, "message_get_followers", [ @@ -217,7 +217,7 @@ patch(ThreadService.prototype, "mail/core/web", { }); return; } - this._super(thread, replaceNewMessageChatWindow); + super.open(thread, replaceNewMessageChatWindow); }, /** * @param {import("@mail/core/common/follower_model").Follower} follower @@ -240,7 +240,7 @@ patch(ThreadService.prototype, "mail/core/web", { if (chatWindow) { this.chatWindowService.close(chatWindow); } - this._super(...arguments); + super.unpin(...arguments); }, _openChatWindow(thread, replaceNewMessageChatWindow) { const chatWindow = this.chatWindowService.insert({ @@ -256,7 +256,7 @@ patch(ThreadService.prototype, "mail/core/web", { }, }); -patch(threadService, "mail/core/web", { +patch(threadService, { dependencies: [ ...threadService.dependencies, "action", diff --git a/addons/mail/static/src/discuss/call/common/discuss_patch.js b/addons/mail/static/src/discuss/call/common/discuss_patch.js index 5dedbc80c69..e63122be6d6 100644 --- a/addons/mail/static/src/discuss/call/common/discuss_patch.js +++ b/addons/mail/static/src/discuss/call/common/discuss_patch.js @@ -8,9 +8,9 @@ import { patch } from "@web/core/utils/patch"; Object.assign(Discuss.components, { Call }); -patch(Discuss.prototype, "discuss/call/common", { +patch(Discuss.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.rtc = useRtc(); }, }); diff --git a/addons/mail/static/src/discuss/call/public/discuss_public_patch.js b/addons/mail/static/src/discuss/call/public/discuss_public_patch.js index 2d41d3ad26f..a2aebdea775 100644 --- a/addons/mail/static/src/discuss/call/public/discuss_public_patch.js +++ b/addons/mail/static/src/discuss/call/public/discuss_public_patch.js @@ -6,13 +6,13 @@ import { useRtc } from "@mail/discuss/call/common/rtc_hook"; import { browser } from "@web/core/browser/browser"; import { patch } from "@web/core/utils/patch"; -patch(DiscussPublic.prototype, "discuss/call/public", { +patch(DiscussPublic.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.rtc = useRtc(); }, async displayChannel() { - this._super(); + super.displayChannel(); const video = browser.localStorage.getItem("discuss_call_preview_join_video"); const mute = browser.localStorage.getItem("discuss_call_preview_join_mute"); if (this.thread.defaultDisplayMode === "video_full_screen") { diff --git a/addons/mail/static/src/discuss/call/web/discuss_patch.js b/addons/mail/static/src/discuss/call/web/discuss_patch.js index 792fc3abd62..d0c2b05cdf9 100644 --- a/addons/mail/static/src/discuss/call/web/discuss_patch.js +++ b/addons/mail/static/src/discuss/call/web/discuss_patch.js @@ -5,9 +5,9 @@ import { useChildSubEnv, useEffect, useState } from "@odoo/owl"; import { patch } from "@web/core/utils/patch"; -patch(Discuss.prototype, "discuss/call/web", { +patch(Discuss.prototype, { setup(...args) { - this._super(...args); + super.setup(...args); const state = useState({ openInviteButton: 0 }); useChildSubEnv({ onStartMeeting: () => { diff --git a/addons/mail/static/src/discuss/core/common/attachment_model_patch.js b/addons/mail/static/src/discuss/core/common/attachment_model_patch.js index 464f34913bc..0f962364af5 100644 --- a/addons/mail/static/src/discuss/core/common/attachment_model_patch.js +++ b/addons/mail/static/src/discuss/core/common/attachment_model_patch.js @@ -4,12 +4,12 @@ import { Attachment } from "@mail/core/common/attachment_model"; import { patch } from "@web/core/utils/patch"; -patch(Attachment.prototype, "discuss/core/common", { +patch(Attachment.prototype, { get isDeletable() { if (this.message && this.originThread?.model === "discuss.channel") { return this.message.editable; } - return this._super(); + return super.isDeletable; }, get urlRoute() { if (!this.accessToken && this.originThread?.model === "discuss.channel") { @@ -17,6 +17,6 @@ patch(Attachment.prototype, "discuss/core/common", { ? `/discuss/channel/${this.originThread.id}/image/${this.id}` : `/discuss/channel/${this.originThread.id}/attachment/${this.id}`; } - return this._super(); + return super.urlRoute; }, }); diff --git a/addons/mail/static/src/discuss/core/common/suggestion_service_patch.js b/addons/mail/static/src/discuss/core/common/suggestion_service_patch.js index f1f9068eaf3..ccbcfdce13c 100644 --- a/addons/mail/static/src/discuss/core/common/suggestion_service_patch.js +++ b/addons/mail/static/src/discuss/core/common/suggestion_service_patch.js @@ -8,9 +8,9 @@ import { patch } from "@web/core/utils/patch"; const commandRegistry = registry.category("discuss.channel_commands"); -patch(SuggestionService.prototype, "discuss/core/common", { +patch(SuggestionService.prototype, { getSupportedDelimiters(thread) { - const res = this._super(thread); + const res = super.getSupportedDelimiters(thread); return thread?.model === "discuss.channel" ? [...res, ["/", 0]] : res; }, /** @@ -20,7 +20,7 @@ patch(SuggestionService.prototype, "discuss/core/common", { if (delimiter === "/") { return this.searchChannelCommand(cleanTerm(term), thread, sort); } - return this._super(...arguments); + return super.searchSuggestions(...arguments); }, searchChannelCommand(cleanedSearchTerm, thread, sort) { if (!thread.isChannel) { diff --git a/addons/mail/static/src/discuss/core/common/thread_model_patch.js b/addons/mail/static/src/discuss/core/common/thread_model_patch.js index 5bc95913af3..8b12c3f76d9 100644 --- a/addons/mail/static/src/discuss/core/common/thread_model_patch.js +++ b/addons/mail/static/src/discuss/core/common/thread_model_patch.js @@ -6,7 +6,7 @@ import { assignDefined } from "@mail/utils/common/misc"; import { patch } from "@web/core/utils/patch"; import { url } from "@web/core/utils/urls"; -patch(Thread.prototype, "discuss/core/common", { +patch(Thread.prototype, { get imgUrl() { if (this.type === "channel" || this.type === "group") { return url( @@ -17,6 +17,6 @@ patch(Thread.prototype, "discuss/core/common", { if (this.type === "chat") { return `/web/image/res.partner/${this.chatPartnerId}/avatar_128`; } - return this._super(); + return super.imgUrl; }, }); diff --git a/addons/mail/static/src/discuss/core/common/thread_service_patch.js b/addons/mail/static/src/discuss/core/common/thread_service_patch.js index aa767df06d5..0f0f77bf723 100644 --- a/addons/mail/static/src/discuss/core/common/thread_service_patch.js +++ b/addons/mail/static/src/discuss/core/common/thread_service_patch.js @@ -7,7 +7,7 @@ import { patch } from "@web/core/utils/patch"; const commandRegistry = registry.category("discuss.channel_commands"); -patch(ThreadService.prototype, "discuss/core/common", { +patch(ThreadService.prototype, { /** * @override * @param {import("@mail/core/common/thread_model").Thread} thread @@ -25,6 +25,6 @@ patch(ThreadService.prototype, "discuss/core/common", { return; } } - return this._super(...arguments); + return super.post(...arguments); }, }); diff --git a/addons/mail/static/src/discuss/core/web/chat_window_service_patch.js b/addons/mail/static/src/discuss/core/web/chat_window_service_patch.js index 7cba830605e..2b3d8760917 100644 --- a/addons/mail/static/src/discuss/core/web/chat_window_service_patch.js +++ b/addons/mail/static/src/discuss/core/web/chat_window_service_patch.js @@ -4,13 +4,13 @@ import { ChatWindowService } from "@mail/core/common/chat_window_service"; import { patch } from "@web/core/utils/patch"; -patch(ChatWindowService.prototype, "discuss/core/web", { +patch(ChatWindowService.prototype, { close(chatWindow) { - this._super(...arguments); + super.close(...arguments); this.notifyState(chatWindow); }, hide(chatWindow) { - this._super(...arguments); + super.hide(...arguments); this.notifyState(chatWindow); }, notifyState(chatWindow) { @@ -29,15 +29,15 @@ patch(ChatWindowService.prototype, "discuss/core/web", { } }, open() { - const chatWindow = this._super(...arguments); + const chatWindow = super.open(...arguments); this.notifyState(chatWindow); }, show(chatWindow) { - this._super(...arguments); + super.show(...arguments); this.notifyState(chatWindow); }, toggleFold(chatWindow) { - this._super(...arguments); + super.toggleFold(...arguments); this.notifyState(chatWindow); }, }); diff --git a/addons/mail/static/src/discuss/core/web/message_patch.js b/addons/mail/static/src/discuss/core/web/message_patch.js index 9d33c241ecb..4b8bbf033b7 100644 --- a/addons/mail/static/src/discuss/core/web/message_patch.js +++ b/addons/mail/static/src/discuss/core/web/message_patch.js @@ -7,13 +7,13 @@ import { markEventHandled } from "@web/core/utils/misc"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(Message.prototype, "discuss/core/web", { +patch(Message.prototype, { getAuthorText() { - return this.hasOpenChatFeature() ? _t("Open chat") : this._super(); + return this.hasOpenChatFeature() ? _t("Open chat") : super.getAuthorText(); }, hasAuthorClickable() { return ( - this._super() && + super.hasAuthorClickable() && this.message.author.type !== "guest" && this.message.originThread?.channel?.channel_type !== "chat" ); @@ -27,6 +27,6 @@ patch(Message.prototype, "discuss/core/web", { this.threadService.openChat({ partnerId: this.message.author.id }); return; } - return this._super(ev); + return super.onClickAuthor(ev); }, }); diff --git a/addons/mail/static/src/discuss/gif_picker/common/composer_patch.js b/addons/mail/static/src/discuss/gif_picker/common/composer_patch.js index 14346fbd7e4..fc0b8b1987f 100644 --- a/addons/mail/static/src/discuss/gif_picker/common/composer_patch.js +++ b/addons/mail/static/src/discuss/gif_picker/common/composer_patch.js @@ -15,7 +15,7 @@ Object.assign(Composer.components, { GifPicker }); /** @type {Composer} */ const composerPatch = { setup() { - this._super(); + super.setup(); Object.assign(this.KEYBOARD, { GIF: "Gif" }); onExternalClick("gif-picker", () => (this.state.keyboard = this.KEYBOARD.NONE)); this.ui = useState(useService("ui")); @@ -30,7 +30,7 @@ const composerPatch = { */ isEventHandledByPicker(ev) { return ( - this._super(ev) || + super.isEventHandledByPicker(ev) || isEventHandled(ev, "Composer.onClickAddGif") || isEventHandled(ev, "GifPicker.onClick") ); @@ -53,4 +53,4 @@ const composerPatch = { }); }, }; -patch(Composer.prototype, "GifPicker", composerPatch); +patch(Composer.prototype, composerPatch); diff --git a/addons/mail/static/src/discuss/message_pin/common/message_patch.js b/addons/mail/static/src/discuss/message_pin/common/message_patch.js index 533db7afaee..f20f6e64d2e 100644 --- a/addons/mail/static/src/discuss/message_pin/common/message_patch.js +++ b/addons/mail/static/src/discuss/message_pin/common/message_patch.js @@ -6,13 +6,13 @@ import { useMessagePinService } from "@mail/discuss/message_pin/common/message_p import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(Message, "discuss/message_pin/common", { +patch(Message, { components: { ...Message.components }, }); -patch(Message.prototype, "discuss/message_pin/common", { +patch(Message.prototype, { setup() { - this._super(); + super.setup(); this.messagePinService = useMessagePinService(); }, onClickPin() { @@ -24,7 +24,7 @@ patch(Message.prototype, "discuss/message_pin/common", { } }, get attClass() { - const res = this._super(); + const res = super.attClass; return Object.assign(res, { "o-cancelSelfAuthored": this.env.pinnedPanel, "mt-1": res["mt-1"] && !this.env.pinnedPanel, @@ -32,7 +32,7 @@ patch(Message.prototype, "discuss/message_pin/common", { }); }, get isAlignedRight() { - return !this.env.pinnedPanel && this._super(); + return !this.env.pinnedPanel && super.isAlignedRight; }, getPinOptionText() { return this.messagePinService.getPinnedAt(this.message.id) ? _t("Unpin") : _t("Pin"); @@ -41,6 +41,6 @@ patch(Message.prototype, "discuss/message_pin/common", { if (this.env.pinnedPanel) { return true; } - return this._super(); + return super.shouldDisplayAuthorName; }, }); diff --git a/addons/mail/static/src/discuss/message_pin/common/thread_patch.js b/addons/mail/static/src/discuss/message_pin/common/thread_patch.js index 182b28f76e5..24f4f5516ff 100644 --- a/addons/mail/static/src/discuss/message_pin/common/thread_patch.js +++ b/addons/mail/static/src/discuss/message_pin/common/thread_patch.js @@ -4,7 +4,7 @@ import { Thread } from "@mail/core/common/thread"; import { patch } from "@web/core/utils/patch"; -patch(Thread.prototype, "discuss/message_pin/common", { +patch(Thread.prototype, { /** * @override * @param {MouseEvent} ev diff --git a/addons/mail/static/src/discuss/typing/common/composer_patch.js b/addons/mail/static/src/discuss/typing/common/composer_patch.js index 9dbbc2fdd5c..604f6038316 100644 --- a/addons/mail/static/src/discuss/typing/common/composer_patch.js +++ b/addons/mail/static/src/discuss/typing/common/composer_patch.js @@ -13,16 +13,16 @@ const commandRegistry = registry.category("discuss.channel_commands"); export const SHORT_TYPING = 5000; export const LONG_TYPING = 50000; -patch(Composer, "discuss/typing/common", { +patch(Composer, { components: { ...Composer.components, Typing }, }); -patch(Composer.prototype, "discuss/typing/common", { +patch(Composer.prototype, { /** * @override */ setup() { - this._super(); + super.setup(); this.typingNotified = false; this.stopTypingDebounced = useDebounced(this.stopTyping.bind(this), SHORT_TYPING); }, @@ -71,7 +71,7 @@ patch(Composer.prototype, "discuss/typing/common", { * @override */ async sendMessage() { - await this._super(); + await super.sendMessage(); this.stopTyping(); }, stopTyping() { diff --git a/addons/mail/static/src/discuss/typing/common/thread_icon_patch.js b/addons/mail/static/src/discuss/typing/common/thread_icon_patch.js index 39d13a00e80..6cebe4ad343 100644 --- a/addons/mail/static/src/discuss/typing/common/thread_icon_patch.js +++ b/addons/mail/static/src/discuss/typing/common/thread_icon_patch.js @@ -6,16 +6,16 @@ import { useTypingService } from "@mail/discuss/typing/common/typing_service"; import { patch } from "@web/core/utils/patch"; -patch(ThreadIcon, "discuss/typing/common", { +patch(ThreadIcon, { components: { ...ThreadIcon.components, Typing }, }); -patch(ThreadIcon.prototype, "discuss/typing/common", { +patch(ThreadIcon.prototype, { /** * @override */ setup() { - this._super(); + super.setup(); this.typingService = useTypingService(); }, }); diff --git a/addons/mail/static/src/js/onchange_on_keydown.js b/addons/mail/static/src/js/onchange_on_keydown.js index ff904245dee..af400e12385 100644 --- a/addons/mail/static/src/js/onchange_on_keydown.js +++ b/addons/mail/static/src/js/onchange_on_keydown.js @@ -14,9 +14,9 @@ const { useEffect } = owl; * (or 2 seconds by default) when typing ends. * */ -const onchangeOnKeydownMixin = { +const onchangeOnKeydownMixin = () => ({ setup() { - this._super(...arguments); + super.setup(...arguments); if (this.props.onchangeOnKeydown) { const input = this.input || this.textareaRef; @@ -34,10 +34,10 @@ const onchangeOnKeydownMixin = { const input = this.input || this.textareaRef; input.el.dispatchEvent(new Event("change")); }, -}; +}); -patch(CharField.prototype, "char_field_onchange_on_keydown", onchangeOnKeydownMixin); -patch(TextField.prototype, "text_field_onchange_on_keydown", onchangeOnKeydownMixin); +patch(CharField.prototype, onchangeOnKeydownMixin()); +patch(TextField.prototype, onchangeOnKeydownMixin()); CharField.props = { ...CharField.props, diff --git a/addons/mail/static/src/views/web/composer_patch.js b/addons/mail/static/src/views/web/composer_patch.js index 5bfdb5213d7..0da29eb6225 100644 --- a/addons/mail/static/src/views/web/composer_patch.js +++ b/addons/mail/static/src/views/web/composer_patch.js @@ -4,7 +4,7 @@ import { Composer } from "@mail/core/common/composer"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(Composer.prototype, "web", { +patch(Composer.prototype, { get placeholder() { if (this.thread && this.thread.model !== "discuss.channel") { if (this.props.type === "message") { @@ -13,6 +13,6 @@ patch(Composer.prototype, "web", { return _t("Log an internal note..."); } } - return this._super(); + return super.placeholder; }, }); diff --git a/addons/mail/static/src/views/web/fields/properties_field/property_value.js b/addons/mail/static/src/views/web/fields/properties_field/property_value.js index ddfdf89ef8b..63913766fe6 100644 --- a/addons/mail/static/src/views/web/fields/properties_field/property_value.js +++ b/addons/mail/static/src/views/web/fields/properties_field/property_value.js @@ -10,9 +10,9 @@ import { PropertyValue } from "@web/views/fields/properties/property_value"; * Allow to open the chatter of the user when we click on the avatar of a Many2one * property (like we do for many2one_avatar_user widget). */ -patch(PropertyValue.prototype, "mail/views/web", { +patch(PropertyValue.prototype, { setup() { - this._super(); + super.setup(); if (this.env.services["mail.thread"]) { // work only for the res.users model diff --git a/addons/mail/static/src/views/web/form/form_compiler.js b/addons/mail/static/src/views/web/form/form_compiler.js index 9885a737e39..36290bc1ea0 100644 --- a/addons/mail/static/src/views/web/form/form_compiler.js +++ b/addons/mail/static/src/views/web/form/form_compiler.js @@ -80,10 +80,10 @@ registry.category("form_compilers").add("attachment_preview_compiler", { fn: compileAttachmentPreview, }); -patch(FormCompiler.prototype, "mail/views/web", { +patch(FormCompiler.prototype, { compile(node, params) { // TODO no chatter if in dialog? - const res = this._super(node, params); + const res = super.compile(node, params); const chatterContainerHookXml = res.querySelector(".o-mail-Form-chatter"); if (!chatterContainerHookXml) { return res; // no chatter, keep the result as it is diff --git a/addons/mail/static/src/views/web/form/form_controller.js b/addons/mail/static/src/views/web/form/form_controller.js index b22d269596a..5d19dde2473 100644 --- a/addons/mail/static/src/views/web/form/form_controller.js +++ b/addons/mail/static/src/views/web/form/form_controller.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { FormController } from "@web/views/form/form_controller"; -patch(FormController.prototype, "mail/views/web", { +patch(FormController.prototype, { onWillLoadRoot(nextConfiguration) { const isSameThread = this.model.root?.resId === nextConfiguration.resId && diff --git a/addons/mail/static/src/views/web/form/form_renderer.js b/addons/mail/static/src/views/web/form/form_renderer.js index 3afedc54ccd..d7bfd29569b 100644 --- a/addons/mail/static/src/views/web/form/form_renderer.js +++ b/addons/mail/static/src/views/web/form/form_renderer.js @@ -12,9 +12,9 @@ import { patch } from "@web/core/utils/patch"; import { useDebounced } from "@web/core/utils/timing"; import { FormRenderer } from "@web/views/form/form_renderer"; -patch(FormRenderer.prototype, "mail/views/web", { +patch(FormRenderer.prototype, { setup() { - this._super(); + super.setup(); this.mailComponents = { AttachmentView, Chatter, @@ -48,7 +48,7 @@ patch(FormRenderer.prototype, "mail/views/web", { }, }); -patch(FormRenderer.props, "mail/views/web", { +patch(FormRenderer.props, { // Template props : added by the FormCompiler saveButtonClicked: { type: Function, optional: true }, }); diff --git a/addons/mail/static/src/views/web/list_renderer.js b/addons/mail/static/src/views/web/list_renderer.js index e29d2fe468a..9f76b3dd702 100644 --- a/addons/mail/static/src/views/web/list_renderer.js +++ b/addons/mail/static/src/views/web/list_renderer.js @@ -3,9 +3,9 @@ import { patch } from "@web/core/utils/patch"; import { ListRenderer } from "@web/views/list/list_renderer"; -patch(ListRenderer.prototype, "mail/views/web", { +patch(ListRenderer.prototype, { getPropertyFieldColumns(_, list) { - const columns = this._super(...arguments); + const columns = super.getPropertyFieldColumns(...arguments); for (const column of columns) { const { relation, type } = list.fields[column.name]; if (relation === "res.users") { diff --git a/addons/mail/static/tests/activity/activity_tests.js b/addons/mail/static/tests/activity/activity_tests.js index 1455e7bd675..1767beb83e1 100644 --- a/addons/mail/static/tests/activity/activity_tests.js +++ b/addons/mail/static/tests/activity/activity_tests.js @@ -521,7 +521,7 @@ QUnit.test("activity click on edit", async (assert) => { assert.strictEqual(action.type, "ir.actions.act_window"); assert.strictEqual(action.res_model, "mail.activity"); assert.strictEqual(action.res_id, activityId); - return this._super(...arguments); + return super.doAction(...arguments); }, }); assert.containsOnce($, ".o-mail-Activity"); diff --git a/addons/mail/static/tests/discuss/call/call_tests.js b/addons/mail/static/tests/discuss/call/call_tests.js index 21428a16f56..093471d678c 100644 --- a/addons/mail/static/tests/discuss/call/call_tests.js +++ b/addons/mail/static/tests/discuss/call/call_tests.js @@ -129,8 +129,7 @@ QUnit.test("should display invitations", async (assert) => { assert.step("play_sound_effect"); } }, - }, - { pure: true } + } ); const pyEnv = await startServer(); const channelId = pyEnv["discuss.channel"].create({ name: "General" }); diff --git a/addons/mail/static/tests/discuss/message_pin/pinned_messages_tests.js b/addons/mail/static/tests/discuss/message_pin/pinned_messages_tests.js index bd7a9427eee..9ac166d73c2 100644 --- a/addons/mail/static/tests/discuss/message_pin/pinned_messages_tests.js +++ b/addons/mail/static/tests/discuss/message_pin/pinned_messages_tests.js @@ -88,7 +88,7 @@ QUnit.test("Jump to message", async (assert) => { // make scroll behavior instantaneous. patchWithCleanup(Element.prototype, { scrollIntoView() { - return this._super(true); + return super.scrollIntoView(true); }, }); const pyEnv = await startServer(); @@ -119,7 +119,7 @@ QUnit.test("Jump to message from notification", async (assert) => { // make scroll behavior instantaneous. patchWithCleanup(Element.prototype, { scrollIntoView() { - return this._super(true); + return super.scrollIntoView(true); }, }); const pyEnv = await startServer(); diff --git a/addons/mail/static/tests/discuss_app/jump_to_present_tests.js b/addons/mail/static/tests/discuss_app/jump_to_present_tests.js index 7d38f6e4ef0..66b4cfaeafc 100644 --- a/addons/mail/static/tests/discuss_app/jump_to_present_tests.js +++ b/addons/mail/static/tests/discuss_app/jump_to_present_tests.js @@ -17,7 +17,7 @@ QUnit.test("Basic jump to present when scrolling to outdated messages", async (a // make scroll behavior instantaneous. patchWithCleanup(Element.prototype, { scrollIntoView() { - return this._super(true); + return super.scrollIntoView(true); }, }); const pyEnv = await startServer(); @@ -56,7 +56,7 @@ QUnit.test("Jump to old reply should prompt jump to presence", async (assert) => // make scroll behavior instantaneous. patchWithCleanup(Element.prototype, { scrollIntoView() { - return this._super(true); + return super.scrollIntoView(true); }, }); const pyEnv = await startServer(); diff --git a/addons/mail/static/tests/helpers/mock_server/controllers/discuss.js b/addons/mail/static/tests/helpers/mock_server/controllers/discuss.js index 63f9e072cb9..4edf422e161 100644 --- a/addons/mail/static/tests/helpers/mock_server/controllers/discuss.js +++ b/addons/mail/static/tests/helpers/mock_server/controllers/discuss.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/controllers/discuss", { +patch(MockServer.prototype, { /** * @override */ @@ -29,7 +29,7 @@ patch(MockServer.prototype, "mail/controllers/discuss", { size: attachment.file_size, }; } - return this._super(...arguments); + return super.performRPC(...arguments); }, /** * @override @@ -179,7 +179,7 @@ patch(MockServer.prototype, "mail/controllers/discuss", { if (route === "/discuss/gif/favorites") { return [[]]; } - return this._super(route, args); + return super._performRPC(route, args); }, /** * Simulates the `/discuss/channel/pinned_messages` route. diff --git a/addons/mail/static/tests/helpers/mock_server/mock_server.js b/addons/mail/static/tests/helpers/mock_server/mock_server.js index 6b56b4602ef..18826240ede 100644 --- a/addons/mail/static/tests/helpers/mock_server/mock_server.js +++ b/addons/mail/static/tests/helpers/mock_server/mock_server.js @@ -4,9 +4,9 @@ import { registry } from "@web/core/registry"; import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/mock_server_main", { +patch(MockServer.prototype, { async performRPC(route, args) { - const rpcResult = await this._super(route, args); + const rpcResult = await super.performRPC(route, args); const methodName = args.method || route; const callbackFn = registry.category("mock_server_callbacks").get(`${args.model}/${methodName}`, null) || diff --git a/addons/mail/static/tests/helpers/mock_server/models/discuss_channel.js b/addons/mail/static/tests/helpers/mock_server/models/discuss_channel.js index 6b8fa0b1478..a3506f40a6b 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/discuss_channel.js +++ b/addons/mail/static/tests/helpers/mock_server/models/discuss_channel.js @@ -9,7 +9,7 @@ import { formatDate } from "@web/core/l10n/dates"; import { Command } from "@mail/../tests/helpers/command"; const { DateTime } = luxon; -patch(MockServer.prototype, "mail/models/discuss_channel", { +patch(MockServer.prototype, { async _performRPC(route, args) { if (args.model === "discuss.channel" && args.method === "execute_command_help") { return this._mockDiscussChannelExecuteCommandHelp(args.args[0], args.model); @@ -113,7 +113,7 @@ patch(MockServer.prototype, "mail/models/discuss_channel", { if (args.model === "discuss.channel" && args.method === "get_mention_suggestions") { return this._mockDiscussChannelGetMentionSuggestions(args); } - return this._super(route, args); + return super._performRPC(route, args); }, /** diff --git a/addons/mail/static/tests/helpers/mock_server/models/discuss_channel_member.js b/addons/mail/static/tests/helpers/mock_server/models/discuss_channel_member.js index c212702bfa7..40afb99204d 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/discuss_channel_member.js +++ b/addons/mail/static/tests/helpers/mock_server/models/discuss_channel_member.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/discuss_channel_member", { +patch(MockServer.prototype, { /** * Simulates `notify_typing` on `discuss.channel.member`. * diff --git a/addons/mail/static/tests/helpers/mock_server/models/discuss_channel_rtc_session.js b/addons/mail/static/tests/helpers/mock_server/models/discuss_channel_rtc_session.js index a43734cc4ea..af38bfedbe5 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/discuss_channel_rtc_session.js +++ b/addons/mail/static/tests/helpers/mock_server/models/discuss_channel_rtc_session.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/discuss_channel_rtc_session", { +patch(MockServer.prototype, { /** * Simulates `_mail_rtc_session_format` on `discuss.channel.rtc.session`. * diff --git a/addons/mail/static/tests/helpers/mock_server/models/ir_attachment.js b/addons/mail/static/tests/helpers/mock_server/models/ir_attachment.js index 1f5ce729063..ecfe8eac565 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/ir_attachment.js +++ b/addons/mail/static/tests/helpers/mock_server/models/ir_attachment.js @@ -3,13 +3,13 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/ir_attachment", { +patch(MockServer.prototype, { async _performRPC(route, args) { if (args.model === "ir.attachment" && args.method === "register_as_main_attachment") { const ids = args.args[0]; return this._mockIrAttachmentRegisterAsMainAttachment(ids); } - return this._super(route, args); + return super._performRPC(route, args); }, /** * Simulates `_attachment_format` on `ir.attachment`. diff --git a/addons/mail/static/tests/helpers/mock_server/models/ir_websocket.js b/addons/mail/static/tests/helpers/mock_server/models/ir_websocket.js index 4b395e349e3..c747eaf29f9 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/ir_websocket.js +++ b/addons/mail/static/tests/helpers/mock_server/models/ir_websocket.js @@ -6,7 +6,7 @@ import "@bus/../tests/helpers/mock_server"; import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/ir_websocket", { +patch(MockServer.prototype, { /** * Simulates `_get_im_status` on `ir.websocket`. * @@ -15,7 +15,7 @@ patch(MockServer.prototype, "mail/models/ir_websocket", { * should be monitored. */ _mockIrWebsocket__getImStatus(imStatusIdsByModel) { - const imStatus = this._super(imStatusIdsByModel); + const imStatus = super._mockIrWebsocket__getImStatus(imStatusIdsByModel); const { "mail.guest": guestIds } = imStatusIdsByModel; if (guestIds) { imStatus["Guest"] = this.pyEnv["mail.guest"].searchRead([["id", "in", guestIds]], { diff --git a/addons/mail/static/tests/helpers/mock_server/models/mail_activity.js b/addons/mail/static/tests/helpers/mock_server/models/mail_activity.js index 6442629d3c3..cc13252b118 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/mail_activity.js +++ b/addons/mail/static/tests/helpers/mock_server/models/mail_activity.js @@ -7,7 +7,7 @@ import { serializeDate, deserializeDate } from "@web/core/l10n/dates"; const { DateTime} = luxon; -patch(MockServer.prototype, "mail/models/mail_activity", { +patch(MockServer.prototype, { async _performRPC(route, args) { if (args.model === "mail.activity" && args.method === "action_feedback") { const ids = args.args[0]; @@ -26,7 +26,7 @@ patch(MockServer.prototype, "mail/models/mail_activity", { const domain = args.args[1] || args.kwargs.domain; return this._mockMailActivityGetActivityData(res_model, domain); } - return this._super(route, args); + return super._performRPC(route, args); }, /** * Simulates `activity_format` on `mail.activity`. diff --git a/addons/mail/static/tests/helpers/mock_server/models/mail_followers.js b/addons/mail/static/tests/helpers/mock_server/models/mail_followers.js index c6af0f7714a..0db6fffe34c 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/mail_followers.js +++ b/addons/mail/static/tests/helpers/mock_server/models/mail_followers.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/mail_followers", { +patch(MockServer.prototype, { /** * Simulates `_format_for_chatter` on `mail.followers`. * diff --git a/addons/mail/static/tests/helpers/mock_server/models/mail_link_preview.js b/addons/mail/static/tests/helpers/mock_server/models/mail_link_preview.js index 6c2eddd7673..2a161104199 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/mail_link_preview.js +++ b/addons/mail/static/tests/helpers/mock_server/models/mail_link_preview.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/mail_link_preview", { +patch(MockServer.prototype, { /** * Simulates the `_link_preview_format` method of `mail.link.preview`. * diff --git a/addons/mail/static/tests/helpers/mock_server/models/mail_message.js b/addons/mail/static/tests/helpers/mock_server/models/mail_message.js index db7130b963d..dfdce96a77a 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/mail_message.js +++ b/addons/mail/static/tests/helpers/mock_server/models/mail_message.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/mail_message", { +patch(MockServer.prototype, { async _performRPC(route, args) { if (args.model === "mail.message" && args.method === "mark_all_as_read") { const domain = args.args[0] || args.kwargs.domain; @@ -24,7 +24,7 @@ patch(MockServer.prototype, "mail/models/mail_message", { if (args.model === "mail.message" && args.method === "unstar_all") { return this._mockMailMessageUnstarAll(); } - return this._super(route, args); + return super._performRPC(route, args); }, /** * Simulates `_message_reaction` on `mail.message`. diff --git a/addons/mail/static/tests/helpers/mock_server/models/mail_notification.js b/addons/mail/static/tests/helpers/mock_server/models/mail_notification.js index 458259bfdf5..ae2d5af6c30 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/mail_notification.js +++ b/addons/mail/static/tests/helpers/mock_server/models/mail_notification.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/mail_notification", { +patch(MockServer.prototype, { /** * Simulates `_filtered_for_web_client` on `mail.notification`. * diff --git a/addons/mail/static/tests/helpers/mock_server/models/mail_thread.js b/addons/mail/static/tests/helpers/mock_server/models/mail_thread.js index 26359cb187b..37603b9ea0c 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/mail_thread.js +++ b/addons/mail/static/tests/helpers/mock_server/models/mail_thread.js @@ -5,7 +5,7 @@ import { MockServer } from "@web/../tests/helpers/mock_server"; import { datetime_to_str } from "@web/legacy/js/core/time"; -patch(MockServer.prototype, "mail/models/mail_thread", { +patch(MockServer.prototype, { async _performRPC(route, args) { if (args.method === "message_subscribe") { const ids = args.args[0]; @@ -37,7 +37,7 @@ patch(MockServer.prototype, "mail/models/mail_thread", { args.kwargs.notification_type ); } - return this._super(route, args); + return super._performRPC(route, args); }, /** * Simulates `_message_compute_author` on `mail.thread`. diff --git a/addons/mail/static/tests/helpers/mock_server/models/mail_tracking_value.js b/addons/mail/static/tests/helpers/mock_server/models/mail_tracking_value.js index 8984c5059bb..9111d4f08ee 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/mail_tracking_value.js +++ b/addons/mail/static/tests/helpers/mock_server/models/mail_tracking_value.js @@ -3,12 +3,12 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/mail_tracking_value", { +patch(MockServer.prototype, { /** * @override */ init(data, options) { - this._super(data, options); + super.init(data, options); if (this.currentPartnerId && this.models && "res.partner" in this.models) { this.currentPartner = this.getRecords("res.partner", [ ["id", "=", this.currentPartnerId], @@ -29,7 +29,7 @@ patch(MockServer.prototype, "mail/models/mail_tracking_value", { */ mockWrite(model) { const initialTrackedFieldValuesByRecordId = this._mockMailThread_TrackPrepare(model); - const mockWriteResult = this._super(...arguments); + const mockWriteResult = super.mockWrite(...arguments); if (initialTrackedFieldValuesByRecordId) { this._mockMailThread_TrackFinalize(model, initialTrackedFieldValuesByRecordId); } diff --git a/addons/mail/static/tests/helpers/mock_server/models/models.js b/addons/mail/static/tests/helpers/mock_server/models/models.js index 6bd9c7dd1f8..602ea1193f5 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/models.js +++ b/addons/mail/static/tests/helpers/mock_server/models/models.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/models", { +patch(MockServer.prototype, { /** * Simulates `_mail_track` on `base` * diff --git a/addons/mail/static/tests/helpers/mock_server/models/res_fake.js b/addons/mail/static/tests/helpers/mock_server/models/res_fake.js index 66ee4e520e8..59c1dd91f53 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/res_fake.js +++ b/addons/mail/static/tests/helpers/mock_server/models/res_fake.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/res_fake", { +patch(MockServer.prototype, { /** * Simulates `_message_get_suggested_recipients` on `res.fake`. * @@ -42,6 +42,6 @@ patch(MockServer.prototype, "mail/models/res_fake", { if (model === "res.fake") { return new Map(ids.map((id) => [id, "Custom Default Subject"])); } - return this._super(model, ids); + return super.mockMailThread_MessageComputeSubject(model, ids); }, }); diff --git a/addons/mail/static/tests/helpers/mock_server/models/res_partner.js b/addons/mail/static/tests/helpers/mock_server/models/res_partner.js index d59b158a27d..4416a56053e 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/res_partner.js +++ b/addons/mail/static/tests/helpers/mock_server/models/res_partner.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/res_partner", { +patch(MockServer.prototype, { async _performRPC(route, args) { if (args.model === "res.partner" && args.method === "im_search") { const name = args.args[0] || args.kwargs.search; @@ -26,7 +26,7 @@ patch(MockServer.prototype, "mail/models/res_partner", { ) { return this._mockResPartnerGetMentionSuggestionsFromChannel(args); } - return this._super(route, args); + return super._performRPC(route, args); }, /** diff --git a/addons/mail/static/tests/helpers/mock_server/models/res_users.js b/addons/mail/static/tests/helpers/mock_server/models/res_users.js index ad75994afe8..66607c181e6 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/res_users.js +++ b/addons/mail/static/tests/helpers/mock_server/models/res_users.js @@ -4,12 +4,12 @@ import { patch } from "@web/core/utils/patch"; import { date_to_str } from "@web/legacy/js/core/time"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/res_users", { +patch(MockServer.prototype, { async _performRPC(route, args) { if (args.model === "res.users" && args.method === "systray_get_activities") { return this._mockResUsersSystrayGetActivities(); } - return this._super(route, args); + return super._performRPC(route, args); }, /** * Simulates `_init_messaging` on `res.users`. diff --git a/addons/mail/static/tests/helpers/mock_server/models/res_users_settings.js b/addons/mail/static/tests/helpers/mock_server/models/res_users_settings.js index b81fbe5083a..3df7a0c5e10 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/res_users_settings.js +++ b/addons/mail/static/tests/helpers/mock_server/models/res_users_settings.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/res_users_settings", { +patch(MockServer.prototype, { async _performRPC(route, args) { if (args.model === "res.users.settings" && args.method === "_find_or_create_for_user") { const user_id = args.args[0][0]; @@ -14,7 +14,7 @@ patch(MockServer.prototype, "mail/models/res_users_settings", { const newSettings = args.kwargs.new_settings; return this._mockResUsersSettingsSetResUsersSettings(id, newSettings); } - return this._super(route, args); + return super._performRPC(route, args); }, /** * Simulates `_find_or_create_for_user` on `res.users.settings`. diff --git a/addons/mail/static/tests/helpers/mock_server/models/res_users_settings_volumes.js b/addons/mail/static/tests/helpers/mock_server/models/res_users_settings_volumes.js index 9281a1a6ecb..ae3c5d147a1 100644 --- a/addons/mail/static/tests/helpers/mock_server/models/res_users_settings_volumes.js +++ b/addons/mail/static/tests/helpers/mock_server/models/res_users_settings_volumes.js @@ -6,7 +6,7 @@ import "@bus/../tests/helpers/mock_server"; import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "mail/models/res_users_settings_volumes", { +patch(MockServer.prototype, { /** * Simulates `discuss_users_settings_volume_format` on `res.users.settings.volumes`. * diff --git a/addons/mail/static/tests/helpers/patch_notifications.js b/addons/mail/static/tests/helpers/patch_notifications.js index 23a10406714..80fd385cd74 100644 --- a/addons/mail/static/tests/helpers/patch_notifications.js +++ b/addons/mail/static/tests/helpers/patch_notifications.js @@ -18,7 +18,7 @@ export function patchBrowserNotification(permission = "default", requestPermissi const notificationQueries = []; patchWithCleanup(browser.navigator.permissions, { async query({ name }) { - const result = await this._super(...arguments); + const result = await super.query(...arguments); if (name === "notifications") { Object.defineProperty(result, "state", { get: () => (permission === "default" ? "prompt" : permission), @@ -33,7 +33,7 @@ export function patchBrowserNotification(permission = "default", requestPermissi isPatched: true, requestPermission() { if (!requestPermissionResult) { - return this._super(...arguments); + return super.requestPermission(...arguments); } this.permission = requestPermissionResult; for (const query of notificationQueries) { diff --git a/addons/mail/static/tests/helpers/webclient_setup.js b/addons/mail/static/tests/helpers/webclient_setup.js index e7fda32d540..4001f807e05 100644 --- a/addons/mail/static/tests/helpers/webclient_setup.js +++ b/addons/mail/static/tests/helpers/webclient_setup.js @@ -68,18 +68,17 @@ function getCreateXHR() { let route = ""; const self = this; xhr.status = 200; - patch(xhr, "mail", { + patch(xhr, { open(method, dest) { route = dest; - return this._super(method, dest); + return super.open(method, dest); }, async send(data) { - const _super = this._super; await new Promise(setTimeout); response = JSON.stringify( await self.env.services.rpc(route, { body: data, method: "POST" }) ); - return _super(data); + return super.send(data); }, upload: new EventTarget(), abort() { @@ -139,8 +138,7 @@ export const setupManager = { audio.play = () => {}; return audio; }, - }, - { pure: true } + } ); patchWithCleanup(session, { show_effect: true }); services["messagingValues"] = services["messagingValues"] ?? { diff --git a/addons/mail/static/tests/message/message_reply_tests.js b/addons/mail/static/tests/message/message_reply_tests.js index bb9bee9c686..128d08ff924 100644 --- a/addons/mail/static/tests/message/message_reply_tests.js +++ b/addons/mail/static/tests/message/message_reply_tests.js @@ -32,7 +32,7 @@ QUnit.test("click on message in reply to scroll to the parent message", async (a // make scroll behavior instantaneous. patchWithCleanup(Element.prototype, { scrollIntoView() { - return this._super(true); + return super.scrollIntoView(true); }, }); const pyEnv = await startServer(); diff --git a/addons/mail/static/tests/web/activity/activity_widget_tests.js b/addons/mail/static/tests/web/activity/activity_widget_tests.js index cb291521d87..de44db4da21 100644 --- a/addons/mail/static/tests/web/activity/activity_widget_tests.js +++ b/addons/mail/static/tests/web/activity/activity_widget_tests.js @@ -208,7 +208,7 @@ QUnit.test("list activity widget: open dropdown", async (assert) => { }); patchWithCleanup(ListController.prototype, { setup() { - this._super(); + super.setup(); const selectRecord = this.props.selectRecord; this.props.selectRecord = (...args) => { assert.step(`select_record ${JSON.stringify(args)}`); diff --git a/addons/mass_mailing/static/tests/mailing_mailing_view_form_tests.js b/addons/mass_mailing/static/tests/mailing_mailing_view_form_tests.js index 5eb0e999600..27496675d1f 100644 --- a/addons/mass_mailing/static/tests/mailing_mailing_view_form_tests.js +++ b/addons/mass_mailing/static/tests/mailing_mailing_view_form_tests.js @@ -51,11 +51,11 @@ QUnit.module("mass_mailing", {}, function () { QUnit.test("unregister ResizeObserver on unmount", async (assert) => { patchWithCleanup(MassMailingFullWidthViewController.prototype, { setup() { - this._super(); + super.setup(); patchWithCleanup(this._resizeObserver, { disconnect() { assert.step("disconnect"); - return this._super(...arguments); + return super.disconnect(...arguments); }, }); }, diff --git a/addons/microsoft_calendar/static/src/views/microsoft_calendar/common/microsoft_calendar_common_popover.js b/addons/microsoft_calendar/static/src/views/microsoft_calendar/common/microsoft_calendar_common_popover.js index 0e3e1f4dfc5..154ffdfd742 100644 --- a/addons/microsoft_calendar/static/src/views/microsoft_calendar/common/microsoft_calendar_common_popover.js +++ b/addons/microsoft_calendar/static/src/views/microsoft_calendar/common/microsoft_calendar_common_popover.js @@ -3,8 +3,8 @@ import { AttendeeCalendarCommonPopover } from "@calendar/views/attendee_calendar/common/attendee_calendar_common_popover"; import { patch } from "@web/core/utils/patch"; -patch(AttendeeCalendarCommonPopover.prototype, "microsoft_calendar_microsoft_calendar_common_popover", { +patch(AttendeeCalendarCommonPopover.prototype, { get isEventArchivable() { - return this._super() || (this.isCurrentUserOrganizer && this.props.record.rawRecord.microsoft_id); + return super.isEventArchivable || (this.isCurrentUserOrganizer && this.props.record.rawRecord.microsoft_id); }, }); diff --git a/addons/microsoft_calendar/static/src/views/microsoft_calendar/microsoft_calendar_controller.js b/addons/microsoft_calendar/static/src/views/microsoft_calendar/microsoft_calendar_controller.js index 74cce6fd773..746b663e789 100644 --- a/addons/microsoft_calendar/static/src/views/microsoft_calendar/microsoft_calendar_controller.js +++ b/addons/microsoft_calendar/static/src/views/microsoft_calendar/microsoft_calendar_controller.js @@ -5,9 +5,9 @@ import { patch } from "@web/core/utils/patch"; import { useService } from "@web/core/utils/hooks"; import { ConfirmationDialog, AlertDialog } from "@web/core/confirmation_dialog/confirmation_dialog"; -patch(AttendeeCalendarController.prototype, "microsoft_calendar_microsoft_calendar_controller", { +patch(AttendeeCalendarController.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.dialog = useService("dialog"); this.notification = useService("notification"); }, diff --git a/addons/microsoft_calendar/static/src/views/microsoft_calendar/microsoft_calendar_model.js b/addons/microsoft_calendar/static/src/views/microsoft_calendar/microsoft_calendar_model.js index b24f27a27b9..e214e91542d 100644 --- a/addons/microsoft_calendar/static/src/views/microsoft_calendar/microsoft_calendar_model.js +++ b/addons/microsoft_calendar/static/src/views/microsoft_calendar/microsoft_calendar_model.js @@ -3,13 +3,13 @@ import { AttendeeCalendarModel } from "@calendar/views/attendee_calendar/attendee_calendar_model"; import { patch } from "@web/core/utils/patch"; -patch(AttendeeCalendarModel, "microsoft_calendar_microsoft_calendar_model", { +patch(AttendeeCalendarModel, { services: [...AttendeeCalendarModel.services, "rpc"], }); -patch(AttendeeCalendarModel.prototype, "microsoft_calendar_microsoft_calendar_model_functions", { +patch(AttendeeCalendarModel.prototype, { setup(params, { rpc }) { - this._super(...arguments); + super.setup(...arguments); this.rpc = rpc; this.microsoftIsSync = true; this.microsoftPendingSync = false; @@ -19,9 +19,8 @@ patch(AttendeeCalendarModel.prototype, "microsoft_calendar_microsoft_calendar_mo * @override */ async updateData() { - const _super = this._super.bind(this); if (this.microsoftPendingSync) { - return _super(...arguments); + return super.updateData(...arguments); } try { await Promise.race([ @@ -35,7 +34,7 @@ patch(AttendeeCalendarModel.prototype, "microsoft_calendar_microsoft_calendar_mo console.error("Could not synchronize microsoft events now.", error); this.microsoftPendingSync = false; } - return _super(...arguments); + return super.updateData(...arguments); }, async syncMicrosoftCalendar(silent = false) { diff --git a/addons/microsoft_calendar/static/tests/microsoft_calendar_mock_server.js b/addons/microsoft_calendar/static/tests/microsoft_calendar_mock_server.js index 49794eccc6c..b60ed3b89b4 100644 --- a/addons/microsoft_calendar/static/tests/microsoft_calendar_mock_server.js +++ b/addons/microsoft_calendar/static/tests/microsoft_calendar_mock_server.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "microsoft_calendar_mock_server", { +patch(MockServer.prototype, { /** * Simulate the creation of a custom appointment type * by receiving a list of slots. @@ -13,6 +13,6 @@ patch(MockServer.prototype, "microsoft_calendar_mock_server", { if (route === '/microsoft_calendar/sync_data') { return Promise.resolve({status: 'no_new_event_from_microsoft'}); } - return this._super(...arguments); + return super._performRPC(...arguments); }, }); diff --git a/addons/mrp/static/src/mrp_forecasted/forecasted_buttons.js b/addons/mrp/static/src/mrp_forecasted/forecasted_buttons.js index 6aecd3a799b..9bdca5b3152 100644 --- a/addons/mrp/static/src/mrp_forecasted/forecasted_buttons.js +++ b/addons/mrp/static/src/mrp_forecasted/forecasted_buttons.js @@ -1,12 +1,12 @@ /** @odoo-module **/ import { ForecastedButtons } from "@stock/stock_forecasted/forecasted_buttons"; -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; const { onWillStart } = owl; -patch(ForecastedButtons.prototype, 'mrp.ForecastedButtons',{ +patch(ForecastedButtons.prototype, { setup() { - this._super.apply(); + super.setup(); onWillStart(async () =>{ const fields = this.resModel === "product.template" ? ['bom_ids'] : ['bom_ids', 'variant_bom_ids']; const res = (await this.orm.call(this.resModel, 'read', [this.productId], { fields }))[0]; diff --git a/addons/mrp/static/src/mrp_forecasted/forecasted_details.js b/addons/mrp/static/src/mrp_forecasted/forecasted_details.js index 790837c0dd1..e602971dc90 100644 --- a/addons/mrp/static/src/mrp_forecasted/forecasted_details.js +++ b/addons/mrp/static/src/mrp_forecasted/forecasted_details.js @@ -1,11 +1,11 @@ /** @odoo-module **/ import { ForecastedDetails } from '@stock/stock_forecasted/forecasted_details'; -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; -patch(ForecastedDetails.prototype, 'mrp.ForecastedDetails',{ +patch(ForecastedDetails.prototype, { canReserveOperation(line){ - return this._super(line) || line.move_out?.raw_material_production_id; + return super.canReserveOperation(line) || line.move_out?.raw_material_production_id; } }); diff --git a/addons/mrp_subcontracting/static/src/components/bom_overview_components_block/mrp_bom_overview_components_block.js b/addons/mrp_subcontracting/static/src/components/bom_overview_components_block/mrp_bom_overview_components_block.js index 69d1c3a48cf..f329e7586c9 100644 --- a/addons/mrp_subcontracting/static/src/components/bom_overview_components_block/mrp_bom_overview_components_block.js +++ b/addons/mrp_subcontracting/static/src/components/bom_overview_components_block/mrp_bom_overview_components_block.js @@ -4,6 +4,6 @@ import { patch } from "@web/core/utils/patch"; import { BomOverviewComponentsBlock } from "@mrp/components/bom_overview_components_block/mrp_bom_overview_components_block"; import { BomOverviewSpecialLine } from "@mrp/components/bom_overview_special_line/mrp_bom_overview_special_line"; -patch(BomOverviewComponentsBlock, "mrp_subcontracting", { +patch(BomOverviewComponentsBlock, { components: { ...BomOverviewComponentsBlock.components, BomOverviewSpecialLine }, }); diff --git a/addons/mrp_subcontracting/static/src/components/bom_overview_line/mrp_bom_overview_line.js b/addons/mrp_subcontracting/static/src/components/bom_overview_line/mrp_bom_overview_line.js index ac62ea922ce..0148a2a71ff 100644 --- a/addons/mrp_subcontracting/static/src/components/bom_overview_line/mrp_bom_overview_line.js +++ b/addons/mrp_subcontracting/static/src/components/bom_overview_line/mrp_bom_overview_line.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { BomOverviewLine } from "@mrp/components/bom_overview_line/mrp_bom_overview_line"; -patch(BomOverviewLine.prototype, "mrp_subcontracting", { +patch(BomOverviewLine.prototype, { /** * @override */ @@ -11,6 +11,6 @@ patch(BomOverviewLine.prototype, "mrp_subcontracting", { if (routeType == "subcontract") { return this.goToAction(this.data.link_id, this.data.link_model); } - return this._super(...arguments); + return super.goToRoute(...arguments); } }); diff --git a/addons/mrp_subcontracting/static/src/components/bom_overview_special_line/mrp_bom_overview_special_line.js b/addons/mrp_subcontracting/static/src/components/bom_overview_special_line/mrp_bom_overview_special_line.js index e237d5a7a66..b6d59b0624d 100644 --- a/addons/mrp_subcontracting/static/src/components/bom_overview_special_line/mrp_bom_overview_special_line.js +++ b/addons/mrp_subcontracting/static/src/components/bom_overview_special_line/mrp_bom_overview_special_line.js @@ -4,9 +4,9 @@ import { patch } from "@web/core/utils/patch"; import { useService } from "@web/core/utils/hooks"; import { BomOverviewSpecialLine } from "@mrp/components/bom_overview_special_line/mrp_bom_overview_special_line"; -patch(BomOverviewSpecialLine.prototype, "mrp_subcontracting", { +patch(BomOverviewSpecialLine.prototype, { setup() { - this._super.apply(); + super.setup(); this.actionService = useService("action"); }, diff --git a/addons/pos_adyen/static/src/overrides/components/payment_screen/payment_screen.js b/addons/pos_adyen/static/src/overrides/components/payment_screen/payment_screen.js index ed469eeea7f..91388ef8bea 100644 --- a/addons/pos_adyen/static/src/overrides/components/payment_screen/payment_screen.js +++ b/addons/pos_adyen/static/src/overrides/components/payment_screen/payment_screen.js @@ -4,9 +4,9 @@ import { PaymentScreen } from "@point_of_sale/app/screens/payment_screen/payment import { patch } from "@web/core/utils/patch"; import { onMounted } from "@odoo/owl"; -patch(PaymentScreen.prototype, "pos_adyen.PaymentScreen", { +patch(PaymentScreen.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); onMounted(() => { const pendingPaymentLine = this.currentOrder.paymentlines.find( (paymentLine) => diff --git a/addons/pos_adyen/static/src/overrides/models/models.js b/addons/pos_adyen/static/src/overrides/models/models.js index 46ba95fb92e..0b6b3f8e845 100644 --- a/addons/pos_adyen/static/src/overrides/models/models.js +++ b/addons/pos_adyen/static/src/overrides/models/models.js @@ -6,14 +6,14 @@ import { patch } from "@web/core/utils/patch"; register_payment_method("adyen", PaymentAdyen); -patch(Payment.prototype, "pos_adyen.Payment", { +patch(Payment.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.terminalServiceId = this.terminalServiceId || null; }, //@override export_as_JSON() { - const json = this._super(...arguments); + const json = super.export_as_JSON(...arguments); if (json) { json.terminal_service_id = this.terminalServiceId; } @@ -21,7 +21,7 @@ patch(Payment.prototype, "pos_adyen.Payment", { }, //@override init_from_JSON(json) { - this._super(...arguments); + super.init_from_JSON(...arguments); this.terminalServiceId = json.terminal_service_id; }, setTerminalServiceId(id) { diff --git a/addons/pos_discount/static/src/overrides/models/models.js b/addons/pos_discount/static/src/overrides/models/models.js index f04f6087d2f..2ffd1c14c6e 100644 --- a/addons/pos_discount/static/src/overrides/models/models.js +++ b/addons/pos_discount/static/src/overrides/models/models.js @@ -3,7 +3,7 @@ import { Orderline } from "@point_of_sale/app/store/models"; import { patch } from "@web/core/utils/patch"; -patch(Orderline.prototype, "pos_discount.Orderline", { +patch(Orderline.prototype, { /** * Checks if the current line applies for a global discount from `pos_discount.DiscountButton`. * @returns Boolean diff --git a/addons/pos_epson_printer/static/src/overrides/models/models.js b/addons/pos_epson_printer/static/src/overrides/models/models.js index 89be3fd9ea7..4889f2b5936 100644 --- a/addons/pos_epson_printer/static/src/overrides/models/models.js +++ b/addons/pos_epson_printer/static/src/overrides/models/models.js @@ -4,10 +4,10 @@ import { PosStore } from "@point_of_sale/app/store/pos_store"; import { EpsonPrinter } from "@pos_epson_printer/app/epson_printer"; import { patch } from "@web/core/utils/patch"; -patch(PosStore.prototype, "pos_epson_printer.PosStore", { +patch(PosStore.prototype, { after_load_server_data() { var self = this; - return this._super(...arguments).then(function () { + return super.after_load_server_data(...arguments).then(function () { if (self.config.other_devices && self.config.epson_printer_ip) { self.hardwareProxy.printer = new EpsonPrinter({ ip: self.config.epson_printer_ip }); } @@ -17,7 +17,7 @@ patch(PosStore.prototype, "pos_epson_printer.PosStore", { if (config.printer_type === "epson_epos") { return new EpsonPrinter({ ip: config.epson_printer_ip }); } else { - return this._super(...arguments); + return super.create_printer(...arguments); } }, }); diff --git a/addons/pos_hr/static/src/overrides/components/cashier_name/cashier_name.js b/addons/pos_hr/static/src/overrides/components/cashier_name/cashier_name.js index d2f6d645106..d37c2c82df2 100644 --- a/addons/pos_hr/static/src/overrides/components/cashier_name/cashier_name.js +++ b/addons/pos_hr/static/src/overrides/components/cashier_name/cashier_name.js @@ -4,9 +4,9 @@ import { CashierName } from "@point_of_sale/app/navbar/cashier_name/cashier_name import { patch } from "@web/core/utils/patch"; import { useCashierSelector } from "@pos_hr/app/select_cashier_mixin"; -patch(CashierName.prototype, "pos_hr.CashierName", { +patch(CashierName.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.selectCashier = useCashierSelector(); }, //@Override @@ -15,13 +15,13 @@ patch(CashierName.prototype, "pos_hr.CashierName", { const cashier = this.pos.get_cashier(); return `/web/image/hr.employee/${cashier.id}/avatar_128`; } - return this._super(...arguments); + return super.avatar; }, //@Override get cssClass() { if (this.pos.config.module_pos_hr) { return { oe_status: true }; } - return this._super(...arguments); + return super.cssClass; }, }); diff --git a/addons/pos_hr/static/src/overrides/components/navbar/navbar.js b/addons/pos_hr/static/src/overrides/components/navbar/navbar.js index 214506673bd..b504dfc6c2d 100644 --- a/addons/pos_hr/static/src/overrides/components/navbar/navbar.js +++ b/addons/pos_hr/static/src/overrides/components/navbar/navbar.js @@ -3,10 +3,10 @@ import { Navbar } from "@point_of_sale/app/navbar/navbar"; import { patch } from "@web/core/utils/patch"; -patch(Navbar.prototype, "pos_hr.Navbar", { +patch(Navbar.prototype, { get showCashMoveButton() { const { cashier } = this.pos; - return this._super(...arguments) && (!cashier || cashier.role == "manager"); + return super.showCashMoveButton && (!cashier || cashier.role == "manager"); }, get showCloseSessionButton() { return ( diff --git a/addons/pos_hr/static/src/overrides/components/payment_screen/payment_screen.js b/addons/pos_hr/static/src/overrides/components/payment_screen/payment_screen.js index 52a484f3956..f79c069845b 100644 --- a/addons/pos_hr/static/src/overrides/components/payment_screen/payment_screen.js +++ b/addons/pos_hr/static/src/overrides/components/payment_screen/payment_screen.js @@ -3,9 +3,9 @@ import { PaymentScreen } from "@point_of_sale/app/screens/payment_screen/payment_screen"; import { patch } from "@web/core/utils/patch"; -patch(PaymentScreen.prototype, "pos_hr.PaymentScreen", { +patch(PaymentScreen.prototype, { async validateOrder(isForceValidate) { this.currentOrder.cashier = this.pos.get_cashier(); - await this._super(...arguments); + await super.validateOrder(...arguments); }, }); diff --git a/addons/pos_hr/static/src/overrides/models/Chrome.js b/addons/pos_hr/static/src/overrides/models/Chrome.js index a2d989e5c97..22aa7aba5d5 100644 --- a/addons/pos_hr/static/src/overrides/models/Chrome.js +++ b/addons/pos_hr/static/src/overrides/models/Chrome.js @@ -3,9 +3,9 @@ import { Chrome } from "@point_of_sale/app/pos_app"; import { patch } from "@web/core/utils/patch"; -patch(Chrome.prototype, "pos_hr.Chrome", { +patch(Chrome.prototype, { get showCashMoveButton() { const { cashier } = this.pos; - return this._super(...arguments) && (!cashier || cashier.role == "manager"); + return super.showCashMoveButton && (!cashier || cashier.role == "manager"); }, }); diff --git a/addons/pos_hr/static/src/overrides/models/models.js b/addons/pos_hr/static/src/overrides/models/models.js index f24b8f04566..848e0611a01 100644 --- a/addons/pos_hr/static/src/overrides/models/models.js +++ b/addons/pos_hr/static/src/overrides/models/models.js @@ -3,21 +3,21 @@ import { Order } from "@point_of_sale/app/store/models"; import { patch } from "@web/core/utils/patch"; -patch(Order.prototype, "pos_hr.Order", { +patch(Order.prototype, { setup(options) { - this._super(...arguments); + super.setup(...arguments); if (!options.json && this.pos.config.module_pos_hr) { this.cashier = this.pos.get_cashier(); } }, init_from_JSON(json) { - this._super(...arguments); + super.init_from_JSON(...arguments); if (this.pos.config.module_pos_hr && json.employee_id) { this.cashier = this.pos.employee_by_id[json.employee_id]; } }, export_as_JSON() { - const json = this._super(...arguments); + const json = super.export_as_JSON(...arguments); if (this.pos.config.module_pos_hr) { json.employee_id = this.cashier ? this.cashier.id : false; } diff --git a/addons/pos_hr/static/src/overrides/models/pos_store.js b/addons/pos_hr/static/src/overrides/models/pos_store.js index 2da5047588d..48d0db06207 100644 --- a/addons/pos_hr/static/src/overrides/models/pos_store.js +++ b/addons/pos_hr/static/src/overrides/models/pos_store.js @@ -3,15 +3,15 @@ import { patch } from "@web/core/utils/patch"; import { PosStore } from "@point_of_sale/app/store/pos_store"; -patch(PosStore.prototype, "pos_hr.PosStore", { +patch(PosStore.prototype, { async setup() { - await this._super(...arguments); + await super.setup(...arguments); if (this.config.module_pos_hr) { this.showTempScreen("LoginScreen"); } }, async _processData(loadedData) { - await this._super(...arguments); + await super._processData(...arguments); if (this.config.module_pos_hr) { this.employees = loadedData["hr.employee"]; this.employee_by_id = loadedData["employee_by_id"]; @@ -19,7 +19,7 @@ patch(PosStore.prototype, "pos_hr.PosStore", { } }, async after_load_server_data() { - await this._super(...arguments); + await super.after_load_server_data(...arguments); if (this.config.module_pos_hr) { this.hasLoggedIn = !this.config.module_pos_hr; } @@ -54,17 +54,17 @@ patch(PosStore.prototype, "pos_hr.PosStore", { if (this.config.module_pos_hr) { return this.cashier; } - return this._super(...arguments); + return super.get_cashier(...arguments); }, get_cashier_user_id() { if (this.config.module_pos_hr) { return this.cashier.user_id ? this.cashier.user_id : null; } - return this._super(...arguments); + return super.get_cashier_user_id(...arguments); }, async logEmployeeMessage(action, message) { if (!this.config.module_pos_hr) { - this._super(...arguments); + super.logEmployeeMessage(...arguments); return; } await this.orm.call("pos.session", "log_partner_message", [ @@ -80,8 +80,8 @@ patch(PosStore.prototype, "pos_hr.PosStore", { */ shouldShowCashControl() { if (this.config.module_pos_hr) { - return this._super(...arguments) && this.hasLoggedIn; + return super.shouldShowCashControl(...arguments) && this.hasLoggedIn; } - return this._super(...arguments); + return super.shouldShowCashControl(...arguments); }, }); diff --git a/addons/pos_hr_restaurant/static/src/overrides/models/pos_store.js b/addons/pos_hr_restaurant/static/src/overrides/models/pos_store.js index b146d0a5a14..0b0ca1bc422 100644 --- a/addons/pos_hr_restaurant/static/src/overrides/models/pos_store.js +++ b/addons/pos_hr_restaurant/static/src/overrides/models/pos_store.js @@ -4,8 +4,8 @@ import { patch } from "@web/core/utils/patch"; import "@pos_restaurant/overrides/models/pos_store"; import { PosStore } from "@point_of_sale/app/store/pos_store"; -patch(PosStore.prototype, "pos_hr_restaurant.PosStore", { +patch(PosStore.prototype, { shouldResetIdleTimer() { - return this.tempScreen?.name !== "LoginScreen" && this._super(...arguments); + return this.tempScreen?.name !== "LoginScreen" && super.shouldResetIdleTimer(...arguments); }, }); diff --git a/addons/pos_loyalty/static/src/overrides/components/order_summary/order_summary.js b/addons/pos_loyalty/static/src/overrides/components/order_summary/order_summary.js index 2f622240cc7..ac10b72b94e 100644 --- a/addons/pos_loyalty/static/src/overrides/components/order_summary/order_summary.js +++ b/addons/pos_loyalty/static/src/overrides/components/order_summary/order_summary.js @@ -3,7 +3,7 @@ import { OrderSummary } from "@point_of_sale/app/screens/product_screen/order_summary/order_summary"; import { patch } from "@web/core/utils/patch"; -patch(OrderSummary.prototype, "pos_loyalty.OrderSummary", { +patch(OrderSummary.prototype, { getLoyaltyPoints() { const order = this.pos.get_order(); return order.getLoyaltyPoints(); diff --git a/addons/pos_loyalty/static/src/overrides/components/orderline/orderline.js b/addons/pos_loyalty/static/src/overrides/components/orderline/orderline.js index 97ffa71be1c..39a3a51cf88 100644 --- a/addons/pos_loyalty/static/src/overrides/components/orderline/orderline.js +++ b/addons/pos_loyalty/static/src/overrides/components/orderline/orderline.js @@ -3,11 +3,11 @@ import { Orderline } from "@point_of_sale/app/screens/product_screen/orderline/orderline"; import { patch } from "@web/core/utils/patch"; -patch(Orderline.prototype, "pos_loyalty.Orderline", { +patch(Orderline.prototype, { get addedClasses() { return Object.assign( { "program-reward": this.props.line.is_reward_line }, - this._super(...arguments) + super.addedClasses ); }, _isGiftCardOrEWalletReward() { diff --git a/addons/pos_loyalty/static/src/overrides/components/partner_line/partner_line.js b/addons/pos_loyalty/static/src/overrides/components/partner_line/partner_line.js index 246d1764763..c4be6803620 100644 --- a/addons/pos_loyalty/static/src/overrides/components/partner_line/partner_line.js +++ b/addons/pos_loyalty/static/src/overrides/components/partner_line/partner_line.js @@ -6,9 +6,9 @@ import { patch } from "@web/core/utils/patch"; import { sprintf } from "@web/core/utils/strings"; import { formatFloat } from "@web/views/fields/formatters"; -patch(PartnerLine.prototype, "pos_loyalty.PartnerLine", { +patch(PartnerLine.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.pos = usePos(); }, _getLoyaltyPointsRepr(loyaltyCard) { diff --git a/addons/pos_loyalty/static/src/overrides/components/partner_list_screen/partner_list_screen.js b/addons/pos_loyalty/static/src/overrides/components/partner_list_screen/partner_list_screen.js index 5ce54a0d79e..0c8ef3099cc 100644 --- a/addons/pos_loyalty/static/src/overrides/components/partner_list_screen/partner_list_screen.js +++ b/addons/pos_loyalty/static/src/overrides/components/partner_list_screen/partner_list_screen.js @@ -3,7 +3,7 @@ import { PartnerListScreen } from "@point_of_sale/app/screens/partner_list/partner_list"; import { patch } from "@web/core/utils/patch"; -patch(PartnerListScreen.prototype, "pos_loyalty.PartnerListScreen", { +patch(PartnerListScreen.prototype, { /** * Needs to be set to true to show the loyalty points in the partner list. * @override diff --git a/addons/pos_loyalty/static/src/overrides/components/payment_screen/payment_screen.js b/addons/pos_loyalty/static/src/overrides/components/payment_screen/payment_screen.js index 325eb39acd5..80c9660942f 100644 --- a/addons/pos_loyalty/static/src/overrides/components/payment_screen/payment_screen.js +++ b/addons/pos_loyalty/static/src/overrides/components/payment_screen/payment_screen.js @@ -5,10 +5,9 @@ import { patch } from "@web/core/utils/patch"; import { PosLoyaltyCard } from "@pos_loyalty/overrides/models/loyalty"; import { ErrorPopup } from "@point_of_sale/app/errors/popups/error_popup"; -patch(PaymentScreen.prototype, "pos_loyalty.PaymentScreen", { +patch(PaymentScreen.prototype, { //@override async validateOrder(isForceValidate) { - const _super = this._super; const pointChanges = {}; const newCodes = []; for (const pe of Object.values(this.currentOrder.couponPointChanges)) { @@ -72,14 +71,13 @@ patch(PaymentScreen.prototype, "pos_loyalty.PaymentScreen", { // it should not be blocking. } } - await _super(...arguments); + await super.validateOrder(...arguments); }, /** * @override */ async _postPushOrderResolve(order, server_ids) { // Compile data for our function - const _super = this._super; const { program_by_id, reward_by_id, couponCache } = this.pos; const rewardLines = order._get_reward_lines(); const partner = order.get_partner(); @@ -163,6 +161,6 @@ patch(PaymentScreen.prototype, "pos_loyalty.PaymentScreen", { } order.new_coupon_info = payload.new_coupon_info; } - return _super(order, server_ids); + return super._postPushOrderResolve(order, server_ids); }, }); diff --git a/addons/pos_loyalty/static/src/overrides/components/product_screen/product_screen.js b/addons/pos_loyalty/static/src/overrides/components/product_screen/product_screen.js index 669292ff14d..b1fd3896559 100644 --- a/addons/pos_loyalty/static/src/overrides/components/product_screen/product_screen.js +++ b/addons/pos_loyalty/static/src/overrides/components/product_screen/product_screen.js @@ -7,9 +7,9 @@ import { ConfirmPopup } from "@point_of_sale/app/utils/confirm_popup/confirm_pop import { useService } from "@web/core/utils/hooks"; import { sprintf } from "@web/core/utils/strings"; -patch(ProductScreen.prototype, "pos_loyalty.ProductScreen", { +patch(ProductScreen.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.notification = useService("pos_notification"); useBarcodeReader({ coupon: this._onCouponScan, @@ -20,7 +20,6 @@ patch(ProductScreen.prototype, "pos_loyalty.ProductScreen", { this.currentOrder.activateCode(code.base_code); }, async updateSelectedOrderline({ buffer, key }) { - const _super = this._super; const selectedLine = this.currentOrder.get_selected_orderline(); if (key === "-") { if (selectedLine && selectedLine.eWalletGiftCardProgram) { @@ -60,10 +59,10 @@ patch(ProductScreen.prototype, "pos_loyalty.ProductScreen", { return; } } - return _super({ buffer, key }); + return super.updateSelectedOrderline({ buffer, key }); }, /** - * 1/ Perform the usual set value operation (this._super(val)) if the line being modified + * 1/ Perform the usual set value operation (super._setValue(val)) if the line being modified * is not a reward line or if it is a reward line, the `val` being set is '' or 'remove' only. * * 2/ Update activated programs and coupons when removing a reward line. @@ -80,7 +79,7 @@ patch(ProductScreen.prototype, "pos_loyalty.ProductScreen", { !selectedLine.is_reward_line || (selectedLine.is_reward_line && ["", "remove"].includes(val)) ) { - this._super(val); + super._setValue(val); } if (!selectedLine) { return; @@ -108,7 +107,7 @@ patch(ProductScreen.prototype, "pos_loyalty.ProductScreen", { } }, async _barcodeProductAction(code) { - await this._super(code); + await super._barcodeProductAction(code); this.currentOrder._updateRewards(); }, }); diff --git a/addons/pos_loyalty/static/src/overrides/components/ticket_screen/ticket_screen.js b/addons/pos_loyalty/static/src/overrides/components/ticket_screen/ticket_screen.js index 29a5a8127fe..3d3437e248a 100644 --- a/addons/pos_loyalty/static/src/overrides/components/ticket_screen/ticket_screen.js +++ b/addons/pos_loyalty/static/src/overrides/components/ticket_screen/ticket_screen.js @@ -7,9 +7,9 @@ import { patch } from "@web/core/utils/patch"; /** * Prevent refunding ewallet/gift card lines. */ -patch(TicketScreen.prototype, "pos_loyalty.TicketScreen", { +patch(TicketScreen.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.notification = useService("pos_notification"); }, _onUpdateSelectedOrderline() { @@ -23,7 +23,7 @@ patch(TicketScreen.prototype, "pos_loyalty.TicketScreen", { this._showNotAllowedRefundNotification(); return this.numberBuffer.reset(); } - return this._super(...arguments); + return super._onUpdateSelectedOrderline(...arguments); }, _prepareAutoRefundOnOrder(order) { const selectedOrderlineId = this.getSelectedOrderlineId(); @@ -32,7 +32,7 @@ patch(TicketScreen.prototype, "pos_loyalty.TicketScreen", { this._showNotAllowedRefundNotification(); return false; } - return this._super(...arguments); + return super._prepareAutoRefundOnOrder(...arguments); }, _showNotAllowedRefundNotification() { this.notification.add( diff --git a/addons/pos_loyalty/static/src/overrides/models/loyalty.js b/addons/pos_loyalty/static/src/overrides/models/loyalty.js index 1753bdb60b3..16bdfefd33c 100644 --- a/addons/pos_loyalty/static/src/overrides/models/loyalty.js +++ b/addons/pos_loyalty/static/src/overrides/models/loyalty.js @@ -76,9 +76,9 @@ function computeFreeQuantity(numberItems, n, m) { return Math.floor(free + adjustment); } -patch(Orderline.prototype, "pos_loyalty.Orderline", { +patch(Orderline.prototype, { export_as_JSON() { - const result = this._super(...arguments); + const result = super.export_as_JSON(...arguments); result.is_reward_line = this.is_reward_line; result.reward_id = this.reward_id; result.reward_product_id = this.reward_product_id; @@ -106,7 +106,7 @@ patch(Orderline.prototype, "pos_loyalty.Orderline", { this.giftBarcode = json.giftBarcode; this.giftCardId = json.giftCardId; this.eWalletGiftCardProgram = this.pos.program_by_id[json.eWalletGiftCardProgramId]; - this._super(...arguments); + super.init_from_JSON(...arguments); }, set_quantity(quantity, keep_price) { if (quantity === "remove" && this.is_reward_line) { @@ -126,7 +126,7 @@ patch(Orderline.prototype, "pos_loyalty.Orderline", { this.order.orderlines.remove(line); } } - return this._super(...arguments); + return super.set_quantity(...arguments); }, getEWalletGiftCardProgramType() { return this.eWalletGiftCardProgram && this.eWalletGiftCardProgram.program_type; @@ -140,9 +140,9 @@ patch(Orderline.prototype, "pos_loyalty.Orderline", { }, }); -patch(Order.prototype, "pos_loyalty.Order", { +patch(Order.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this._initializePrograms({}); // Always start with invalid coupons so that coupon for this // order is properly assigned. @see _checkMissingCoupons @@ -151,13 +151,13 @@ patch(Order.prototype, "pos_loyalty.Order", { /** @override */ getEmailItems() { - return this._super(...arguments).concat( + return super.getEmailItems(...arguments).concat( this.has_pdf_gift_card ? [_t("the gift cards")] : [] ); }, export_as_JSON() { - const json = this._super(...arguments); + const json = super.export_as_JSON(...arguments); json.disabledRewards = [...this.disabledRewards]; json.codeActivatedProgramRules = this.codeActivatedProgramRules; json.codeActivatedCoupons = this.codeActivatedCoupons; @@ -184,7 +184,7 @@ patch(Order.prototype, "pos_loyalty.Order", { this.couponPointChanges[newId] = pe; } } - this._super(...arguments); + super.init_from_JSON(...arguments); delete this.oldCouponMapping; this.disabledRewards = new Set(json.disabledRewards); this.codeActivatedProgramRules = json.codeActivatedProgramRules; @@ -209,7 +209,7 @@ patch(Order.prototype, "pos_loyalty.Order", { } } } else { - return this._super(...arguments); + return super.pay(...arguments); } }, /** @@ -220,7 +220,7 @@ patch(Order.prototype, "pos_loyalty.Order", { */ set_partner(partner) { const oldPartner = this.get_partner(); - this._super(partner); + super.set_partner(partner); if (this.couponPointChanges && oldPartner !== this.get_partner()) { // Remove couponPointChanges for cards in is_nominative programs. // This makes sure that counting of points on loyalty and ewallet programs is updated after partner changes. @@ -241,7 +241,7 @@ patch(Order.prototype, "pos_loyalty.Order", { return ( Object.keys(this.couponPointChanges || {}).length > 0 || this._get_reward_lines().length || - this._super(...arguments) + super.wait_for_push_order(...arguments) ); }, /** @@ -250,7 +250,7 @@ patch(Order.prototype, "pos_loyalty.Order", { * @override */ export_for_printing() { - const result = this._super(...arguments); + const result = super.export_for_printing(...arguments); if (this.get_partner()) { result.loyaltyStats = this.getLoyaltyPoints(); } @@ -259,7 +259,7 @@ patch(Order.prototype, "pos_loyalty.Order", { }, //@override _get_ignored_product_ids_total_discount() { - const productIds = this._super(...arguments); + const productIds = super._get_ignored_product_ids_total_discount(...arguments); const giftCardPrograms = this.pos.programs.filter((p) => p.program_type === "gift_card"); for (const program of giftCardPrograms) { const giftCardProductId = [...program.rules[0].valid_product_ids][0]; @@ -270,7 +270,7 @@ patch(Order.prototype, "pos_loyalty.Order", { return productIds; }, get_orderlines() { - const orderlines = this._super(this, arguments); + const orderlines = super.get_orderlines(this, arguments); const rewardLines = []; const nonRewardLines = []; for (const line of orderlines) { @@ -302,7 +302,7 @@ patch(Order.prototype, "pos_loyalty.Order", { }, set_pricelist(pricelist) { const oldPricelist = this.pricelist - this._super(...arguments); + super.set_pricelist(...arguments); if (this.couponPointChanges && oldPricelist !== pricelist) { // Remove couponPointChanges for cards in no longer available programs. // This makes sure that counting of points on loyalty and ewallet programs is updated after pricelist changes. @@ -321,7 +321,7 @@ patch(Order.prototype, "pos_loyalty.Order", { this._updateRewards(); }, set_orderline_options(line, options) { - this._super(...arguments); + super.set_orderline_options(...arguments); if (options && options.is_reward_line) { line.is_reward_line = options.is_reward_line; line.reward_id = options.reward_id; diff --git a/addons/pos_loyalty/static/src/overrides/models/pos_store.js b/addons/pos_loyalty/static/src/overrides/models/pos_store.js index 131fc6fd415..0ff41b3d8a7 100644 --- a/addons/pos_loyalty/static/src/overrides/models/pos_store.js +++ b/addons/pos_loyalty/static/src/overrides/models/pos_store.js @@ -12,9 +12,8 @@ import { PosLoyaltyCard } from "@pos_loyalty/overrides/models/loyalty"; const COUPON_CACHE_MAX_SIZE = 4096; // Maximum coupon cache size, prevents long run memory issues and (to some extent) invalid data -patch(PosStore.prototype, "pos_loyalty.PosStore", { +patch(PosStore.prototype, { async addProductFromUi(product, options) { - const _super = this._super; const order = this.get_order(); const linkedProgramIds = this.productId2ProgramIds[product.id] || []; const linkedPrograms = linkedProgramIds.map((id) => this.program_by_id[id]); @@ -65,7 +64,7 @@ patch(PosStore.prototype, "pos_loyalty.PosStore", { } } } - await _super(product, options); + await super.addProductFromUi(product, options); await order._updatePrograms(); if (rewardsToApply.length == 1) { const reward = rewardsToApply[0]; @@ -209,7 +208,7 @@ patch(PosStore.prototype, "pos_loyalty.PosStore", { reward.all_discount_product_ids = new Set(reward.all_discount_product_ids); } - await this._super(loadedData); + await super._processData(loadedData); this.productId2ProgramIds = loadedData["product_id_to_program_ids"]; this.programs = loadedData["loyalty.program"] || []; //TODO: rename to `loyaltyPrograms` etc this.rules = loadedData["loyalty.rule"] || []; @@ -217,7 +216,7 @@ patch(PosStore.prototype, "pos_loyalty.PosStore", { }, _loadProductProduct(products) { - this._super(...arguments); + super._loadProductProduct(...arguments); for (const reward of this.rewards) { this.compute_discount_product_ids(reward, products); @@ -286,13 +285,13 @@ patch(PosStore.prototype, "pos_loyalty.PosStore", { } }, async load_server_data() { - await this._super(...arguments); + await super.load_server_data(...arguments); if (this.selectedOrder) { this.selectedOrder._updateRewards(); } }, set_order(order) { - const result = this._super(...arguments); + const result = super.set_order(...arguments); // FIXME - JCB: This is a temporary fix. // When an order is selected, it doesn't always contain the reward lines. // And the list of active programs are not always correct. This is because @@ -371,7 +370,7 @@ patch(PosStore.prototype, "pos_loyalty.PosStore", { return loyaltyCards; }, addPartners(partners) { - const result = this._super(partners); + const result = super.addPartners(partners); // cache the loyalty cards of the partners for (const partner of partners) { for (const [couponId, { code, program_id, points }] of Object.entries( diff --git a/addons/pos_mercury/static/src/overrides/components/order_receipt/order_receipt.js b/addons/pos_mercury/static/src/overrides/components/order_receipt/order_receipt.js index 3cd0b2d732d..c09d1bda49a 100644 --- a/addons/pos_mercury/static/src/overrides/components/order_receipt/order_receipt.js +++ b/addons/pos_mercury/static/src/overrides/components/order_receipt/order_receipt.js @@ -3,7 +3,7 @@ import { OrderReceipt } from "@point_of_sale/app/screens/receipt_screen/receipt/receipt"; import { patch } from "@web/core/utils/patch"; -patch(OrderReceipt.prototype, "pos_mercury.OrderReceipt", { +patch(OrderReceipt.prototype, { /** * The receipt has signature if one of the paymentlines * is paid with mercury. diff --git a/addons/pos_mercury/static/src/overrides/components/payment_screen/payment_screen.js b/addons/pos_mercury/static/src/overrides/components/payment_screen/payment_screen.js index a4733292e21..06c3c4da9a5 100644 --- a/addons/pos_mercury/static/src/overrides/components/payment_screen/payment_screen.js +++ b/addons/pos_mercury/static/src/overrides/components/payment_screen/payment_screen.js @@ -93,9 +93,9 @@ const lookUpCodeTransaction = { }, }; -patch(PaymentScreen.prototype, "pos_mercury.PaymentScreen", { +patch(PaymentScreen.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); if (this.pos.getOnlinePaymentMethods().length !== 0) { useBarcodeReader({ credit: this.credit_code_action, @@ -117,7 +117,7 @@ patch(PaymentScreen.prototype, "pos_mercury.PaymentScreen", { * @override */ get _getNumberBufferConfig() { - const res = this._super(...arguments); + const res = super._getNumberBufferConfig; res["useWithBarcode"] = true; return res; }, @@ -512,7 +512,7 @@ patch(PaymentScreen.prototype, "pos_mercury.PaymentScreen", { if (line.mercury_data) { this.do_reversal(line, false); } else { - this._super(cid); + super.deletePaymentLine(cid); } }, /** @@ -520,7 +520,7 @@ patch(PaymentScreen.prototype, "pos_mercury.PaymentScreen", { */ addNewPaymentLine(paymentMethod) { const order = this.pos.get_order(); - const res = this._super(...arguments); + const res = super.addNewPaymentLine(...arguments); if (res && paymentMethod.pos_mercury_config_id) { order.selected_paymentline.mercury_swipe_pending = true; } diff --git a/addons/pos_mercury/static/src/overrides/components/payment_screen_payment_lines/payment_screen_payment_lines.js b/addons/pos_mercury/static/src/overrides/components/payment_screen_payment_lines/payment_screen_payment_lines.js index 8965f4bd115..d6e10ef982e 100644 --- a/addons/pos_mercury/static/src/overrides/components/payment_screen_payment_lines/payment_screen_payment_lines.js +++ b/addons/pos_mercury/static/src/overrides/components/payment_screen_payment_lines/payment_screen_payment_lines.js @@ -3,12 +3,12 @@ import { PaymentScreenPaymentLines } from "@point_of_sale/app/screens/payment_screen/payment_lines/payment_lines"; import { patch } from "@web/core/utils/patch"; -patch(PaymentScreenPaymentLines.prototype, "pos_mercury.PaymentScreenPaymentLines", { +patch(PaymentScreenPaymentLines.prototype, { /** * @override */ selectedLineClass(line) { - return Object.assign({}, this._super(line), { + return Object.assign({}, super.selectedLineClass(line), { o_pos_mercury_swipe_pending: line.mercury_swipe_pending, }); }, @@ -16,7 +16,7 @@ patch(PaymentScreenPaymentLines.prototype, "pos_mercury.PaymentScreenPaymentLine * @override */ unselectedLineClass(line) { - return Object.assign({}, this._super(line), { + return Object.assign({}, super.unselectedLineClass(line), { o_pos_mercury_swipe_pending: line.mercury_swipe_pending, }); }, diff --git a/addons/pos_mercury/static/src/overrides/components/product_screen/product_screen.js b/addons/pos_mercury/static/src/overrides/components/product_screen/product_screen.js index 5cf2a641c23..aa67b0bad9a 100644 --- a/addons/pos_mercury/static/src/overrides/components/product_screen/product_screen.js +++ b/addons/pos_mercury/static/src/overrides/components/product_screen/product_screen.js @@ -5,9 +5,9 @@ import { useBarcodeReader } from "@point_of_sale/app/barcode/barcode_reader_hook import { patch } from "@web/core/utils/patch"; import { ErrorPopup } from "@point_of_sale/app/errors/popups/error_popup"; -patch(ProductScreen.prototype, "pos_mercury.ProductScreen", { +patch(ProductScreen.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); useBarcodeReader({ credit: this.credit_error_action, }); diff --git a/addons/pos_mercury/static/src/overrides/models/pos_mercury.js b/addons/pos_mercury/static/src/overrides/models/pos_mercury.js index c539a0d268f..64e96ad1953 100644 --- a/addons/pos_mercury/static/src/overrides/models/pos_mercury.js +++ b/addons/pos_mercury/static/src/overrides/models/pos_mercury.js @@ -4,7 +4,7 @@ import { PosStore } from "@point_of_sale/app/store/pos_store"; import { Order, Payment } from "@point_of_sale/app/store/models"; import { patch } from "@web/core/utils/patch"; -patch(PosStore.prototype, "pos_mercury.PosStore", { +patch(PosStore.prototype, { getOnlinePaymentMethods() { var online_payment_methods = []; @@ -85,9 +85,9 @@ patch(PosStore.prototype, "pos_mercury.PosStore", { }, }); -patch(Payment.prototype, "pos_mercury.Payment", { +patch(Payment.prototype, { init_from_JSON(json) { - this._super(...arguments); + super.init_from_JSON(...arguments); this.paid = json.paid; this.mercury_card_number = json.mercury_card_number; @@ -103,7 +103,7 @@ patch(Payment.prototype, "pos_mercury.Payment", { this.set_credit_card_name(); }, export_as_JSON() { - const result = this._super(...arguments); + const result = super.export_as_JSON(...arguments); if (!result) { return result; } @@ -126,20 +126,20 @@ patch(Payment.prototype, "pos_mercury.Payment", { } }, is_done() { - var res = this._super(...arguments); + var res = super.is_done(...arguments); return res && !this.mercury_swipe_pending; }, export_for_printing() { - const result = this._super(...arguments); + const result = super.export_for_printing(...arguments); result.mercury_data = this.mercury_data; result.mercury_auth_code = this.mercury_auth_code; return result; }, }); -patch(Order.prototype, "pos_mercury.Order", { +patch(Order.prototype, { electronic_payment_in_progress() { - var res = this._super(...arguments); + var res = super.electronic_payment_in_progress(...arguments); return res || this.get_paymentlines().some((line) => line.mercury_swipe_pending); }, }); diff --git a/addons/pos_online_payment/static/src/app/bus/pos_bus_service.js b/addons/pos_online_payment/static/src/app/bus/pos_bus_service.js index 2bedd17b6a2..eb4cc46e2b5 100644 --- a/addons/pos_online_payment/static/src/app/bus/pos_bus_service.js +++ b/addons/pos_online_payment/static/src/app/bus/pos_bus_service.js @@ -3,10 +3,10 @@ import { patch } from "@web/core/utils/patch"; import { PosBus } from "@point_of_sale/app/bus/pos_bus_service"; -patch(PosBus.prototype, "pos_online_payment.PosBus", { +patch(PosBus.prototype, { //@override dispatch(message) { - this._super(...arguments); + super.dispatch(...arguments); if (message.type === "ONLINE_PAYMENTS_NOTIFICATION") { // The bus communication is only protected by the name of the channel. diff --git a/addons/pos_online_payment/static/src/app/screens/payment_screen/payment_screen.js b/addons/pos_online_payment/static/src/app/screens/payment_screen/payment_screen.js index 47d36c2db27..260278ab43d 100644 --- a/addons/pos_online_payment/static/src/app/screens/payment_screen/payment_screen.js +++ b/addons/pos_online_payment/static/src/app/screens/payment_screen/payment_screen.js @@ -8,7 +8,7 @@ import { ErrorPopup } from "@point_of_sale/app/errors/popups/error_popup"; import { floatIsZero } from "@web/core/utils/numbers"; import { sprintf } from "@web/core/utils/strings"; -patch(PaymentScreen.prototype, "pos_online_payment.PaymentScreen", { +patch(PaymentScreen.prototype, { getRemainingOnlinePaymentLines() { return this.paymentLines.filter( (line) => line.payment_method.is_online_payment && line.get_payment_status() !== "done" @@ -40,7 +40,7 @@ patch(PaymentScreen.prototype, "pos_online_payment.PaymentScreen", { }, //@override async _isOrderValid(isForceValidate) { - if (!await this._super(...arguments)) { + if (!await super._isOrderValid(...arguments)) { return false; } diff --git a/addons/pos_online_payment/static/src/app/store/models.js b/addons/pos_online_payment/static/src/app/store/models.js index 494b4f77152..0ef569cd1cd 100644 --- a/addons/pos_online_payment/static/src/app/store/models.js +++ b/addons/pos_online_payment/static/src/app/store/models.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { Order, Payment } from "@point_of_sale/app/store/models"; import { floatIsZero } from "@web/core/utils/numbers"; -patch(Order.prototype, "pos_online_payment.Order", { +patch(Order.prototype, { _get_online_payment_url() { return `${this.pos.base_url}/pos/pay/${this.server_id}?access_token=${this.access_token}`; }, @@ -91,13 +91,13 @@ patch(Order.prototype, "pos_online_payment.Order", { }, }); -patch(Payment.prototype, "pos_online_payment.Payment", { +patch(Payment.prototype, { //@override export_as_JSON() { if (this.payment_method.is_online_payment) { return null; // It is the role of the server to save the online payment, not the role of the POS session. } else { - return this._super(); + return super.export_as_JSON(); } }, //@override @@ -105,7 +105,7 @@ patch(Payment.prototype, "pos_online_payment.Payment", { if (this.payment_method.is_online_payment) { return false; } else { - return this._super(); + return super.canBeAdjusted(); } }, }); diff --git a/addons/pos_online_payment_self_order/static/src/pages/order_cart/order_cart.js b/addons/pos_online_payment_self_order/static/src/pages/order_cart/order_cart.js index 0296b026359..f1a9c3c412a 100644 --- a/addons/pos_online_payment_self_order/static/src/pages/order_cart/order_cart.js +++ b/addons/pos_online_payment_self_order/static/src/pages/order_cart/order_cart.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { OrderCart } from "@pos_self_order/pages/order_cart/order_cart"; import { _t } from "@web/core/l10n/translation"; -patch(OrderCart.prototype, "pos_online_payment_self_order.OrderCart", { +patch(OrderCart.prototype, { get buttonToShow() { if (this.selfOrder.self_order_mode === "each") { return { label: _t("Pay"), disabled: false }; @@ -22,7 +22,7 @@ patch(OrderCart.prototype, "pos_online_payment_self_order.OrderCart", { } } } else { - return this._super(...arguments); + return super.buttonToShow; } }, async processOrder() { @@ -54,7 +54,7 @@ patch(OrderCart.prototype, "pos_online_payment_self_order.OrderCart", { this.sendInProgress = false; this.checkAndOpenPaymentPage(order); } else { - return this._super(...arguments); + return super.processOrder(...arguments); } }, checkAndOpenPaymentPage(order) { diff --git a/addons/pos_online_payment_self_order/static/src/self_order_service.js b/addons/pos_online_payment_self_order/static/src/self_order_service.js index c47f45b04a2..8fef6d060e2 100644 --- a/addons/pos_online_payment_self_order/static/src/self_order_service.js +++ b/addons/pos_online_payment_self_order/static/src/self_order_service.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { SelfOrder } from "@pos_self_order/self_order_service"; import { session } from "@web/session"; -patch(SelfOrder.prototype, "pos_online_payment_self_order.SelfOrder", { +patch(SelfOrder.prototype, { openOnlinePaymentPage({ id: order_id, access_token: order_access_token, pos_config_id: order_pos_config_id }) { const baseUrl = session.base_url; let exitRouteUrl = baseUrl + "/menu/" + order_pos_config_id + "?access_token=" + this.access_token; diff --git a/addons/pos_restaurant/static/src/app/product_screen/order/order.js b/addons/pos_restaurant/static/src/app/product_screen/order/order.js index 72045bd34fc..19540315342 100644 --- a/addons/pos_restaurant/static/src/app/product_screen/order/order.js +++ b/addons/pos_restaurant/static/src/app/product_screen/order/order.js @@ -5,7 +5,7 @@ import { OrderWidget } from "@point_of_sale/app/screens/product_screen/order/ord import { AlertPopup } from "@point_of_sale/app/utils/alert_popup/alert_popup"; import { _t } from "@web/core/l10n/translation"; -patch(OrderWidget.prototype, "pos_restaurant.OrderWidget", { +patch(OrderWidget.prototype, { releaseTable() { const currentTable = this.pos.table; const orderOnTable = this.pos.orders.filter( diff --git a/addons/pos_restaurant/static/src/overrides/components/navbar/back_button/back_button.js b/addons/pos_restaurant/static/src/overrides/components/navbar/back_button/back_button.js index 156800d6de0..c23584dd0fc 100644 --- a/addons/pos_restaurant/static/src/overrides/components/navbar/back_button/back_button.js +++ b/addons/pos_restaurant/static/src/overrides/components/navbar/back_button/back_button.js @@ -5,7 +5,7 @@ import { ProductScreen } from "@point_of_sale/app/screens/product_screen/product import { TipScreen } from "@pos_restaurant/app/tip_screen/tip_screen"; import { patch } from "@web/core/utils/patch"; -patch(BackButton.prototype, "pos_restaurant.BackButton", { +patch(BackButton.prototype, { get floor() { return this.table?.floor; }, diff --git a/addons/pos_restaurant/static/src/overrides/components/navbar/navbar.js b/addons/pos_restaurant/static/src/overrides/components/navbar/navbar.js index f2902eb17a0..15c02502463 100644 --- a/addons/pos_restaurant/static/src/overrides/components/navbar/navbar.js +++ b/addons/pos_restaurant/static/src/overrides/components/navbar/navbar.js @@ -3,7 +3,7 @@ import { Navbar } from "@point_of_sale/app/navbar/navbar"; import { patch } from "@web/core/utils/patch"; -patch(Navbar.prototype, "pos_restaurant.Navbar", { +patch(Navbar.prototype, { /** * If no table is set to pos, which means the current main screen * is floor screen, then the order count should be based on all the orders. @@ -12,10 +12,10 @@ patch(Navbar.prototype, "pos_restaurant.Navbar", { if (this.pos.config.module_pos_restaurant && this.pos.table) { return this.pos.getTableOrders(this.pos.table.id).length; } - return this._super(...arguments); + return super.orderCount; }, _shouldLoadOrders() { - return this._super() || (this.pos.config.module_pos_restaurant && !this.pos.table); + return super._shouldLoadOrders() || (this.pos.config.module_pos_restaurant && !this.pos.table); }, onSwitchButtonClick() { const mode = this.pos.floorPlanStyle == "kanban" ? "default" : "kanban"; @@ -27,7 +27,7 @@ patch(Navbar.prototype, "pos_restaurant.Navbar", { }, showBackButton() { return ( - this._super(...arguments) || + super.showBackButton(...arguments) || (this.pos.showBackButton() && this.pos.config.module_pos_restaurant) ); }, diff --git a/addons/pos_restaurant/static/src/overrides/components/payment_screen/payment_screen.js b/addons/pos_restaurant/static/src/overrides/components/payment_screen/payment_screen.js index dc95f0968ed..660007af890 100644 --- a/addons/pos_restaurant/static/src/overrides/components/payment_screen/payment_screen.js +++ b/addons/pos_restaurant/static/src/overrides/components/payment_screen/payment_screen.js @@ -3,20 +3,17 @@ import { PaymentScreen } from "@point_of_sale/app/screens/payment_screen/payment_screen"; import { patch } from "@web/core/utils/patch"; -patch(PaymentScreen.prototype, "pos_restaurant.PaymentScreen", { - setup() { - this._super(...arguments); - }, +patch(PaymentScreen.prototype, { get nextScreen() { const order = this.currentOrder; if (!this.pos.config.set_tip_after_payment || order.is_tipped) { - return this._super(...arguments); + return super.nextScreen; } // Take the first payment method as the main payment. const mainPayment = order.get_paymentlines()[0]; if (mainPayment.canBeAdjusted()) { return "TipScreen"; } - return this._super(...arguments); + return super.nextScreen; }, }); diff --git a/addons/pos_restaurant/static/src/overrides/components/product_screen/actionpad_widget/actionpad_widget.js b/addons/pos_restaurant/static/src/overrides/components/product_screen/actionpad_widget/actionpad_widget.js index 82654a8f8ac..712d41357b5 100644 --- a/addons/pos_restaurant/static/src/overrides/components/product_screen/actionpad_widget/actionpad_widget.js +++ b/addons/pos_restaurant/static/src/overrides/components/product_screen/actionpad_widget/actionpad_widget.js @@ -6,7 +6,7 @@ import { nbsp } from "@web/core/utils/strings"; * @props partner */ -patch(ActionpadWidget.prototype, "point_of_sale.ActionpadWidget", { +patch(ActionpadWidget.prototype, { get swapButton() { return this.props.actionType === "payment" && this.pos.config.module_pos_restaurant; }, @@ -45,7 +45,7 @@ patch(ActionpadWidget.prototype, "point_of_sale.ActionpadWidget", { }, get highlightPay() { return ( - this._super(...arguments) && + super.highlightPay && !this.currentOrder.hasChangesToPrint() && this.hasQuantity(this.currentOrder) ); diff --git a/addons/pos_restaurant/static/src/overrides/components/product_screen/product_screen.js b/addons/pos_restaurant/static/src/overrides/components/product_screen/product_screen.js index e1566d076e6..6a89cc2bee3 100644 --- a/addons/pos_restaurant/static/src/overrides/components/product_screen/product_screen.js +++ b/addons/pos_restaurant/static/src/overrides/components/product_screen/product_screen.js @@ -3,7 +3,7 @@ import { ProductScreen } from "@point_of_sale/app/screens/product_screen/product_screen"; import { patch } from "@web/core/utils/patch"; -patch(ProductScreen.prototype, "pos_restaurant.ProductScreen", { +patch(ProductScreen.prototype, { /** * @override */ @@ -23,7 +23,7 @@ patch(ProductScreen.prototype, "pos_restaurant.ProductScreen", { ); return changes ? changes.quantity : false; } - return this._super(...arguments); + return super.selectedOrderlineQuantity; }, get selectedOrderlineTotal() { return this.env.utils.formatCurrency( @@ -42,7 +42,7 @@ patch(ProductScreen.prototype, "pos_restaurant.ProductScreen", { primaryPayButton() { return ( !this.currentOrder.is_empty() && - ((!this.swapButton && this._super(...arguments)) || + ((!this.swapButton && super.primaryPayButton(...arguments)) || (this.swapButton && this.pos.get_order().getOrderChanges().count > 0)) ); }, diff --git a/addons/pos_restaurant/static/src/overrides/components/receipt_screen/receipt_screen.js b/addons/pos_restaurant/static/src/overrides/components/receipt_screen/receipt_screen.js index 480dc8ecd34..fd6994b54b6 100644 --- a/addons/pos_restaurant/static/src/overrides/components/receipt_screen/receipt_screen.js +++ b/addons/pos_restaurant/static/src/overrides/components/receipt_screen/receipt_screen.js @@ -5,9 +5,9 @@ import { patch } from "@web/core/utils/patch"; import { onWillUnmount } from "@odoo/owl"; import { FloorScreen } from "@pos_restaurant/app/floor_screen/floor_screen"; -patch(ReceiptScreen.prototype, "pos_restaurant.ReceiptScreen", { +patch(ReceiptScreen.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); onWillUnmount(() => { // When leaving the receipt screen to the floor screen the order is paid and can be removed if (this.pos.mainScreen.component === FloorScreen && this.currentOrder.finalized) { @@ -18,14 +18,14 @@ patch(ReceiptScreen.prototype, "pos_restaurant.ReceiptScreen", { //@override _addNewOrder() { if (!this.pos.config.module_pos_restaurant) { - this._super(...arguments); + super._addNewOrder(...arguments); } }, isResumeVisible() { if (this.pos.config.module_pos_restaurant && this.pos.table) { return this.pos.getTableOrders(this.pos.table.id).length > 1; } - return this._super(...arguments); + return super.isResumeVisible(...arguments); }, //@override get nextScreen() { @@ -33,7 +33,7 @@ patch(ReceiptScreen.prototype, "pos_restaurant.ReceiptScreen", { const table = this.pos.table; return { name: "FloorScreen", props: { floor: table ? table.floor : null } }; } else { - return this._super(...arguments); + return super.nextScreen; } }, }); diff --git a/addons/pos_restaurant/static/src/overrides/components/ticket_screen/ticket_screen.js b/addons/pos_restaurant/static/src/overrides/components/ticket_screen/ticket_screen.js index d77737bc21d..4232f4cda02 100644 --- a/addons/pos_restaurant/static/src/overrides/components/ticket_screen/ticket_screen.js +++ b/addons/pos_restaurant/static/src/overrides/components/ticket_screen/ticket_screen.js @@ -6,12 +6,12 @@ import { parseFloat } from "@web/views/fields/parsers"; import { ConfirmPopup } from "@point_of_sale/app/utils/confirm_popup/confirm_popup"; import { Component, useState } from "@odoo/owl"; -patch(TicketScreen.prototype, "pos_restaurant.TicketScreen", { +patch(TicketScreen.prototype, { _getScreenToStatusMap() { - return Object.assign(this._super(...arguments), { + return Object.assign(super._getScreenToStatusMap(...arguments), { PaymentScreen: this.pos.config.set_tip_after_payment ? "OPEN" - : this._super(...arguments).PaymentScreen, + : super._getScreenToStatusMap(...arguments).PaymentScreen, TipScreen: "TIPPING", }); }, @@ -31,9 +31,9 @@ patch(TicketScreen.prototype, "pos_restaurant.TicketScreen", { //@override _getSearchFields() { if (!this.pos.config.module_pos_restaurant) { - return this._super(...arguments); + return super._getSearchFields(...arguments); } - return Object.assign({}, this._super(...arguments), { + return Object.assign({}, super._getSearchFields(...arguments), { TABLE: { repr: this.getTable.bind(this), displayName: this.env._t("Table"), @@ -43,7 +43,7 @@ patch(TicketScreen.prototype, "pos_restaurant.TicketScreen", { }, async _setOrder(order) { if (!this.pos.config.module_pos_restaurant || this.pos.table) { - return this._super(...arguments); + return super._setOrder(...arguments); } // we came from the FloorScreen const orderTable = order.getTable(); @@ -53,13 +53,13 @@ patch(TicketScreen.prototype, "pos_restaurant.TicketScreen", { get allowNewOrders() { return this.pos.config.module_pos_restaurant ? Boolean(this.pos.table) - : this._super(...arguments); + : super.allowNewOrders; }, _getOrderList() { if (this.pos.table) { return this.pos.getTableOrders(this.pos.table.id); } - return this._super(...arguments); + return super._getOrderList(...arguments); }, async settleTips() { // set tip in each order @@ -115,7 +115,7 @@ patch(TicketScreen.prototype, "pos_restaurant.TicketScreen", { await this.orm.call("pos.order", "set_no_tip", [serverId]); }, _getOrderStates() { - const result = this._super(...arguments); + const result = super._getOrderStates(...arguments); if (this.pos.config.set_tip_after_payment) { result.delete("PAYMENT"); result.set("OPEN", { text: this.env._t("Open"), indented: true }); @@ -128,13 +128,13 @@ patch(TicketScreen.prototype, "pos_restaurant.TicketScreen", { if (this.pos.config.module_pos_restaurant && order && !this.pos.table) { this.pos.setTable(order.table ? order.table : Object.values(this.pos.tables_by_id)[0]); } - this._super(...arguments); + super.onDoRefund(...arguments); }, isDefaultOrderEmpty(order) { if (this.pos.config.module_pos_restaurant) { return false; } - return this._super(...arguments); + return super.isDefaultOrderEmpty(...arguments); }, }); @@ -162,6 +162,6 @@ export class TipCell extends Component { } } -patch(TicketScreen, "pos_restaurant.TicketScreen.components", { +patch(TicketScreen, { components: { ...TicketScreen.components, TipCell }, }); diff --git a/addons/pos_restaurant/static/src/overrides/models/models.js b/addons/pos_restaurant/static/src/overrides/models/models.js index 6025de0dc53..f0dea6b46b8 100644 --- a/addons/pos_restaurant/static/src/overrides/models/models.js +++ b/addons/pos_restaurant/static/src/overrides/models/models.js @@ -4,9 +4,9 @@ import { Order, Orderline, Payment } from "@point_of_sale/app/store/models"; import { patch } from "@web/core/utils/patch"; // New orders are now associated with the current table, if any. -patch(Order.prototype, "pos_restaurant.Order", { +patch(Order.prototype, { setup(options) { - this._super(...arguments); + super.setup(...arguments); if (this.pos.config.module_pos_restaurant) { if (!this.tableId && !options.json && this.pos.table) { this.tableId = this.pos.table.id; @@ -16,7 +16,7 @@ patch(Order.prototype, "pos_restaurant.Order", { }, //@override export_as_JSON() { - const json = this._super(...arguments); + const json = super.export_as_JSON(...arguments); if (this.pos.config.module_pos_restaurant) { json.table_id = this.tableId; json.customer_count = this.customerCount; @@ -26,7 +26,7 @@ patch(Order.prototype, "pos_restaurant.Order", { }, //@override init_from_JSON(json) { - this._super(...arguments); + super.init_from_JSON(...arguments); if (this.pos.config.module_pos_restaurant) { this.tableId = json.table_id; this.validation_date = moment.utc(json.creation_date).local().toDate(); @@ -35,7 +35,7 @@ patch(Order.prototype, "pos_restaurant.Order", { }, //@override export_for_printing() { - const json = this._super(...arguments); + const json = super.export_for_printing(...arguments); if (this.pos.config.module_pos_restaurant) { if (this.getTable()) { json.table = this.getTable().name; @@ -58,20 +58,20 @@ patch(Order.prototype, "pos_restaurant.Order", { }, }); -patch(Orderline.prototype, "pos_restaurant.Orderline", { +patch(Orderline.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.note = this.note || ""; }, //@override clone() { - const orderline = this._super(...arguments); + const orderline = super.clone(...arguments); orderline.note = this.note; return orderline; }, //@override export_as_JSON() { - const json = this._super(...arguments); + const json = super.export_as_JSON(...arguments); json.note = this.note; if (this.pos.config.iface_printers) { json.uuid = this.uuid; @@ -80,7 +80,7 @@ patch(Orderline.prototype, "pos_restaurant.Orderline", { }, //@override init_from_JSON(json) { - this._super(...arguments); + super.init_from_JSON(...arguments); this.note = json.note; if (this.pos.config.iface_printers) { this.uuid = json.uuid; @@ -95,7 +95,7 @@ patch(Orderline.prototype, "pos_restaurant.Orderline", { }, }); -patch(Payment.prototype, "pos_restaurant.Payment", { +patch(Payment.prototype, { /** * Override this method to be able to show the 'Adjust Authorisation' button * on a validated payment_line and to show the tip screen which allow diff --git a/addons/pos_restaurant/static/src/overrides/models/payment.js b/addons/pos_restaurant/static/src/overrides/models/payment.js index 47a38d0193b..15a5bf823ca 100644 --- a/addons/pos_restaurant/static/src/overrides/models/payment.js +++ b/addons/pos_restaurant/static/src/overrides/models/payment.js @@ -3,7 +3,7 @@ import { PaymentInterface } from "@point_of_sale/app/payment/payment_interface"; import { patch } from "@web/core/utils/patch"; -patch(PaymentInterface.prototype, "pos_restaurant.PaymentInterface", { +patch(PaymentInterface.prototype, { /** * Return true if the amount that was authorized can be modified, * false otherwise diff --git a/addons/pos_restaurant/static/src/overrides/models/popup_service.js b/addons/pos_restaurant/static/src/overrides/models/popup_service.js index ce52141ce7b..6b0fb535723 100644 --- a/addons/pos_restaurant/static/src/overrides/models/popup_service.js +++ b/addons/pos_restaurant/static/src/overrides/models/popup_service.js @@ -3,9 +3,9 @@ import { patch } from "@web/core/utils/patch"; import { popupService } from "@point_of_sale/app/popup/popup_service"; -patch(popupService, "pos_restaurant.popupService", { +patch(popupService, { start() { - return Object.assign(this._super(...arguments), { + return Object.assign(super.start(...arguments), { closePopupsButError() { const popups = Object.values(this.popups); const isErrorPopupOpen = popups.some((popup) => diff --git a/addons/pos_restaurant/static/src/overrides/models/pos_bus.js b/addons/pos_restaurant/static/src/overrides/models/pos_bus.js index 01313bbb425..a23192a319f 100644 --- a/addons/pos_restaurant/static/src/overrides/models/pos_bus.js +++ b/addons/pos_restaurant/static/src/overrides/models/pos_bus.js @@ -3,10 +3,10 @@ import { patch } from "@web/core/utils/patch"; import { PosBus } from "@point_of_sale/app/bus/pos_bus_service"; -patch(PosBus.prototype, "pos_restaurant.PosBus", { +patch(PosBus.prototype, { // Override setup() { - this._super(...arguments); + super.setup(...arguments); if (this.pos.config.module_pos_restaurant) { this.initTableOrderCount(); @@ -25,7 +25,7 @@ patch(PosBus.prototype, "pos_restaurant.PosBus", { // Override dispatch(message) { - this._super(...arguments); + super.dispatch(...arguments); if (message.type === "TABLE_ORDER_COUNT") { this.ws_syncTableCount(message.payload); diff --git a/addons/pos_restaurant/static/src/overrides/models/pos_store.js b/addons/pos_restaurant/static/src/overrides/models/pos_store.js index cb056b475a5..ae95b04ee44 100644 --- a/addons/pos_restaurant/static/src/overrides/models/pos_store.js +++ b/addons/pos_restaurant/static/src/overrides/models/pos_store.js @@ -20,12 +20,12 @@ const NON_IDLE_EVENTS = [ ]; let IDLE_TIMER_SETTER; -patch(PosStore.prototype, "pos_restaurant.PosStore", { +patch(PosStore.prototype, { /** * @override */ async setup() { - await this._super(...arguments); + await super.setup(...arguments); if (this.config.module_pos_restaurant) { this.setActivityListeners(); this.showScreen("FloorScreen", { floor: this.table?.floor || null }); @@ -71,18 +71,18 @@ patch(PosStore.prototype, "pos_restaurant.PosStore", { ); }, showScreen(screenName) { - this._super(...arguments); + super.showScreen(...arguments); this.setIdleTimer(); }, closeScreen() { if (this.config.module_pos_restaurant && !this.get_order()) { return this.showScreen("FloorScreen"); } - return this._super(...arguments); + return super.closeScreen(...arguments); }, addOrderIfEmpty() { if (!this.config.module_pos_restaurant) { - return this._super(...arguments); + return super.addOrderIfEmpty(...arguments); } }, /** @@ -96,18 +96,18 @@ patch(PosStore.prototype, "pos_restaurant.PosStore", { window.removeEventListener(event, IDLE_TIMER_SETTER); } } - return this._super(...arguments); + return super.closePos(...arguments); }, showBackButton() { return ( - this._super(...arguments) || + super.showBackButton(...arguments) || this.mainScreen.component === TipScreen || (this.mainScreen.component === ProductScreen && this.config.module_pos_restaurant) ); }, //@override async _processData(loadedData) { - await this._super(...arguments); + await super._processData(...arguments); if (this.config.module_pos_restaurant) { this.floors = loadedData["restaurant.floor"]; this.loadRestaurantFloor(); @@ -115,7 +115,7 @@ patch(PosStore.prototype, "pos_restaurant.PosStore", { }, //@override async after_load_server_data() { - var res = await this._super(...arguments); + var res = await super.after_load_server_data(...arguments); if (this.config.module_pos_restaurant) { this.table = null; } @@ -126,12 +126,12 @@ patch(PosStore.prototype, "pos_restaurant.PosStore", { // set when the user selects a table. set_start_order() { if (!this.config.module_pos_restaurant) { - this._super(...arguments); + super.set_start_order(...arguments); } }, //@override add_new_order() { - const order = this._super(...arguments); + const order = super.add_new_order(...arguments); this.ordersToUpdateSet.add(order); return order; }, @@ -184,23 +184,23 @@ patch(PosStore.prototype, "pos_restaurant.PosStore", { const ordersJsons = await this._getTableOrdersFromServer(tableIds); // get all orders return ordersJsons; } else { - return await this._super(); + return await super._getOrdersJson(); } }, _shouldRemoveOrder(order) { - return this._super(...arguments) && !this.transferredOrdersSet.has(order); + return super._shouldRemoveOrder(...arguments) && !this.transferredOrdersSet.has(order); }, _shouldCreateOrder(json) { return ( (!this._transferredOrder(json) || this._isSameTable(json)) && - (!this.selectedOrder || this._super(...arguments)) + (!this.selectedOrder || super._shouldCreateOrder(...arguments)) ); }, _shouldRemoveSelectedOrder(removeSelected) { - return this.selectedOrder && this._super(...arguments); + return this.selectedOrder && super._shouldRemoveSelectedOrder(...arguments); }, _isSelectedOrder(json) { - return !this.selectedOrder || this._super(...arguments); + return !this.selectedOrder || super._isSelectedOrder(...arguments); }, _isSameTable(json) { const transferredOrder = this._transferredOrder(json); @@ -215,7 +215,7 @@ patch(PosStore.prototype, "pos_restaurant.PosStore", { // this means we transferred back to the original table, we'll prioritize the server state this.removeOrder(transferredOrder, false); } - return this._super(...arguments); + return super._createOrder(...arguments); }, loadRestaurantFloor() { // we do this in the front end due to the circular/recursive reference needed @@ -283,7 +283,7 @@ patch(PosStore.prototype, "pos_restaurant.PosStore", { return tableOrders.reduce((count, order) => count + order.getCustomerCount(), 0); }, isOpenOrderShareable() { - return this._super(...arguments) || this.config.module_pos_restaurant; + return super.isOpenOrderShareable(...arguments) || this.config.module_pos_restaurant; }, toggleEditMode() { this.isEditMode = !this.isEditMode; diff --git a/addons/pos_restaurant_adyen/static/src/overrides/models/payment_adyen.js b/addons/pos_restaurant_adyen/static/src/overrides/models/payment_adyen.js index 1ae17b740ac..3cb6906180b 100644 --- a/addons/pos_restaurant_adyen/static/src/overrides/models/payment_adyen.js +++ b/addons/pos_restaurant_adyen/static/src/overrides/models/payment_adyen.js @@ -3,9 +3,9 @@ import { PaymentAdyen } from "@pos_adyen/app/payment_adyen"; import { patch } from "@web/core/utils/patch"; -patch(PaymentAdyen.prototype, "pos_restaurant_adyen.PaymentAdyen", { +patch(PaymentAdyen.prototype, { _adyen_pay_data() { - var data = this._super(...arguments); + var data = super._adyen_pay_data(...arguments); if (data.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData) { data.SaleToPOIRequest.PaymentRequest.SaleData.SaleToAcquirerData += diff --git a/addons/pos_restaurant_stripe/static/src/overrides/models/payment_stripe.js b/addons/pos_restaurant_stripe/static/src/overrides/models/payment_stripe.js index 2a52d7cd58c..1d8d55f509e 100644 --- a/addons/pos_restaurant_stripe/static/src/overrides/models/payment_stripe.js +++ b/addons/pos_restaurant_stripe/static/src/overrides/models/payment_stripe.js @@ -3,16 +3,16 @@ import { PaymentStripe } from "@pos_stripe/app/payment_stripe"; import { patch } from "@web/core/utils/patch"; -patch(PaymentStripe.prototype, "pos_restaurant_stripe.PaymentStripe", { - captureAfterPayment: async function (processPayment, line) { +patch(PaymentStripe.prototype, { + async captureAfterPayment(processPayment, line) { // Don't capture if the customer can tip, in that case we // will capture later. if (!this.canBeAdjusted(line.cid)) { - return this._super(...arguments); + return super.captureAfterPayment(...arguments); } }, - canBeAdjusted: function (cid) { + canBeAdjusted(cid) { var order = this.pos.get_order(); var line = order.get_paymentline(cid); return ( diff --git a/addons/pos_sale/static/src/overrides/models/models.js b/addons/pos_sale/static/src/overrides/models/models.js index 5a1afcc8d70..ec632df894b 100644 --- a/addons/pos_sale/static/src/overrides/models/models.js +++ b/addons/pos_sale/static/src/overrides/models/models.js @@ -3,25 +3,25 @@ import { Order, Orderline } from "@point_of_sale/app/store/models"; import { patch } from "@web/core/utils/patch"; -patch(Order.prototype, "pos_sale.Order", { +patch(Order.prototype, { //@override select_orderline(orderline) { - this._super(...arguments); + super.select_orderline(...arguments); if (orderline && orderline.product.id === this.pos.config.down_payment_product_id[0]) { this.pos.numpadMode = "price"; } }, //@override _get_ignored_product_ids_total_discount() { - const productIds = this._super(...arguments); + const productIds = super._get_ignored_product_ids_total_discount(...arguments); productIds.push(this.pos.config.down_payment_product_id[0]); return productIds; }, }); -patch(Orderline.prototype, "pos_sale.Orderline", { +patch(Orderline.prototype, { setup(_defaultObj, options) { - this._super(...arguments); + super.setup(...arguments); // It is possible that this orderline is initialized using `init_from_JSON`, // meaning, it is loaded from localStorage or from export_for_ui. This means // that some fields has already been assigned. Therefore, we only set the options @@ -35,14 +35,14 @@ patch(Orderline.prototype, "pos_sale.Orderline", { } }, init_from_JSON(json) { - this._super(...arguments); + super.init_from_JSON(...arguments); this.sale_order_origin_id = json.sale_order_origin_id; this.sale_order_line_id = json.sale_order_line_id; this.down_payment_details = json.down_payment_details && JSON.parse(json.down_payment_details); }, export_as_JSON() { - const json = this._super(...arguments); + const json = super.export_as_JSON(...arguments); json.sale_order_origin_id = this.sale_order_origin_id; json.sale_order_line_id = this.sale_order_line_id; json.down_payment_details = @@ -61,7 +61,7 @@ patch(Orderline.prototype, "pos_sale.Orderline", { return false; }, export_for_printing() { - var json = this._super(...arguments); + var json = super.export_for_printing(...arguments); json.down_payment_details = this.down_payment_details; if (this.sale_order_origin_id) { json.so_reference = this.sale_order_origin_id.name; diff --git a/addons/pos_sale/static/src/overrides/models/pos_store.js b/addons/pos_sale/static/src/overrides/models/pos_store.js index 3f36eab9544..dcf844333c1 100644 --- a/addons/pos_sale/static/src/overrides/models/pos_store.js +++ b/addons/pos_sale/static/src/overrides/models/pos_store.js @@ -3,9 +3,9 @@ import { PosStore } from "@point_of_sale/app/store/pos_store"; import { patch } from "@web/core/utils/patch"; -patch(PosStore.prototype, "pos_sale.PosStore", { +patch(PosStore.prototype, { async setup(...args) { this.orderManagement = { searchString: "", selectedOrder: null }; - return await this._super(...args); + return await super.setup(...args); }, }); diff --git a/addons/pos_sale_loyalty/static/src/overrides/models/models.js b/addons/pos_sale_loyalty/static/src/overrides/models/models.js index dc6e7f370e4..e2e698f525f 100644 --- a/addons/pos_sale_loyalty/static/src/overrides/models/models.js +++ b/addons/pos_sale_loyalty/static/src/overrides/models/models.js @@ -4,13 +4,13 @@ import { Orderline } from "@point_of_sale/app/store/models"; import { patch } from "@web/core/utils/patch"; -patch(Orderline.prototype, "pos_sale_loyalty.Orderline", { +patch(Orderline.prototype, { //@override ignoreLoyaltyPoints(args) { if (this.sale_order_origin_id) { return true; } - return this._super(args); + return super.ignoreLoyaltyPoints(args); }, //@override setQuantityFromSOL(saleOrderLine) { @@ -18,7 +18,7 @@ patch(Orderline.prototype, "pos_sale_loyalty.Orderline", { if (saleOrderLine.reward_id) { this.set_quantity(saleOrderLine.product_uom_qty); } else { - this._super(...arguments); + super.setQuantityFromSOL(...arguments); } }, }); diff --git a/addons/pos_sale_product_configurator/static/src/overrides/components/product_info_button/product_info_button.js b/addons/pos_sale_product_configurator/static/src/overrides/components/product_info_button/product_info_button.js index 3ca316e74be..7b50262374e 100644 --- a/addons/pos_sale_product_configurator/static/src/overrides/components/product_info_button/product_info_button.js +++ b/addons/pos_sale_product_configurator/static/src/overrides/components/product_info_button/product_info_button.js @@ -3,7 +3,7 @@ import { ProductInfoButton } from "@point_of_sale/app/screens/product_screen/control_buttons/product_info_button/product_info_button"; import { patch } from "@web/core/utils/patch"; -patch(ProductInfoButton.prototype, "pos_sale_product_configurator.ProductInfoButton", { +patch(ProductInfoButton.prototype, { hasOptionalProduct() { const orderline = this.pos.get_order().get_selected_orderline(); if (orderline) { diff --git a/addons/pos_six/static/src/overrides/components/navbar/navbar.js b/addons/pos_six/static/src/overrides/components/navbar/navbar.js index 2c04e45e7e7..dbbd8e9db09 100644 --- a/addons/pos_six/static/src/overrides/components/navbar/navbar.js +++ b/addons/pos_six/static/src/overrides/components/navbar/navbar.js @@ -4,6 +4,6 @@ import { Navbar } from "@point_of_sale/app/navbar/navbar"; import { BalanceButton } from "@pos_six/app/balance_button/balance_button"; import { patch } from "@web/core/utils/patch"; -patch(Navbar, "pos_six.Navbar", { +patch(Navbar, { components: { ...Navbar.components, BalanceButton }, }); diff --git a/addons/product/static/tests/product_pricelist_report_test.js b/addons/product/static/tests/product_pricelist_report_test.js index 34a174cbc64..bb4700829c4 100644 --- a/addons/product/static/tests/product_pricelist_report_test.js +++ b/addons/product/static/tests/product_pricelist_report_test.js @@ -50,14 +50,14 @@ QUnit.module('Product Pricelist Report', { let Qty = [1, 5, 10]; // default quantities patchWithCleanup(ProductPricelistReport.prototype, { - onSelectPricelist: function (event) { + onSelectPricelist(event) { assert.step('pricelist_changed'); - this._super(...arguments) + super.onSelectPricelist(...arguments) }, - onClickAddQty: function (event) { + onClickAddQty(event) { assert.deepEqual(this.quantities, Qty.sort((a, b) => a - b), "changed quantity should be same."); assert.step('qty_added'); - this._super(...arguments); + super.onClickAddQty(...arguments); }, }); diff --git a/addons/project/static/src/project_sharing/views/form/project_sharing_form_compiler.js b/addons/project/static/src/project_sharing/views/form/project_sharing_form_compiler.js index 8e325e96574..2aec9ed9ae3 100644 --- a/addons/project/static/src/project_sharing/views/form/project_sharing_form_compiler.js +++ b/addons/project/static/src/project_sharing/views/form/project_sharing_form_compiler.js @@ -80,9 +80,9 @@ registry.category("form_compilers").add("portal_chatter_compiler", { }), }); -patch(FormCompiler.prototype, 'project_sharing_chatter', { +patch(FormCompiler.prototype, { compile(node, params) { - const res = this._super(node, params); + const res = super.compile(node, params); const chatterContainerHookXml = res.querySelector('.o-mail-Form-chatter'); if (!chatterContainerHookXml) { return res; // no chatter, keep the result as it is diff --git a/addons/project_todo/static/src/web/activity/activity_menu_patch.js b/addons/project_todo/static/src/web/activity/activity_menu_patch.js index 90917e1e521..1b9c8b7806e 100644 --- a/addons/project_todo/static/src/web/activity/activity_menu_patch.js +++ b/addons/project_todo/static/src/web/activity/activity_menu_patch.js @@ -7,9 +7,9 @@ import { DateTimeInput } from "@web/core/datetime/datetime_input"; import { useService } from "@web/core/utils/hooks"; import { patch } from "@web/core/utils/patch"; -patch(ActivityMenu.prototype, "todo", { +patch(ActivityMenu.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.rpc = useService("rpc"); this.state = useState({ addingTodo: false }); this.todoInputRef = useRef("todoInput"); @@ -35,7 +35,7 @@ patch(ActivityMenu.prototype, "todo", { }, sortActivityGroups() { - this._super(); + super.sortActivityGroups(); this.store.activityGroups.sort((g1, g2) => { if (g1.model === "project.task" ? true : false) { return -1; diff --git a/addons/project_todo/static/tests/helpers/mock_server/controller/project_todo.js b/addons/project_todo/static/tests/helpers/mock_server/controller/project_todo.js index de46740ed68..c2ee33bd6da 100644 --- a/addons/project_todo/static/tests/helpers/mock_server/controller/project_todo.js +++ b/addons/project_todo/static/tests/helpers/mock_server/controller/project_todo.js @@ -1,11 +1,11 @@ /** @odoo-module **/ -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { MockServer } from '@web/../tests/helpers/mock_server'; import { date_to_str } from '@web/legacy/js/core/time'; -patch(MockServer.prototype, 'project_todo/controller/project_todo', { +patch(MockServer.prototype, { //-------------------------------------------------------------------------- // Private //-------------------------------------------------------------------------- @@ -17,7 +17,7 @@ patch(MockServer.prototype, 'project_todo/controller/project_todo', { if (route === '/project_todo/new') { return this._mockRouteTodoNew(args); } - return this._super(...arguments); + return super._performRPC(...arguments); }, //-------------------------------------------------------------------------- diff --git a/addons/purchase_mrp/static/src/components/bom_overview_line/mrp_bom_overview_line.js b/addons/purchase_mrp/static/src/components/bom_overview_line/mrp_bom_overview_line.js index ee43950ed16..2a27b931cb9 100644 --- a/addons/purchase_mrp/static/src/components/bom_overview_line/mrp_bom_overview_line.js +++ b/addons/purchase_mrp/static/src/components/bom_overview_line/mrp_bom_overview_line.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { BomOverviewLine } from "@mrp/components/bom_overview_line/mrp_bom_overview_line"; -patch(BomOverviewLine.prototype, "purchase_mrp", { +patch(BomOverviewLine.prototype, { /** * @override */ @@ -11,6 +11,6 @@ patch(BomOverviewLine.prototype, "purchase_mrp", { if (routeType == "buy") { return this.goToAction(this.data.link_id, this.data.link_model); } - return this._super(...arguments); + return super.goToRoute(...arguments); } }); diff --git a/addons/rating/static/tests/helpers/mock_server/models/mail_message.js b/addons/rating/static/tests/helpers/mock_server/models/mail_message.js index b7ae96a72c7..863b8a5531c 100644 --- a/addons/rating/static/tests/helpers/mock_server/models/mail_message.js +++ b/addons/rating/static/tests/helpers/mock_server/models/mail_message.js @@ -5,12 +5,12 @@ import '@mail/../tests/helpers/mock_server/models/mail_message'; // ensure mail import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, 'rating/models/mail_message', { +patch(MockServer.prototype, { /** * @override */ _mockMailMessageMessageFormat(ids) { - const formattedMessages = this._super(...arguments); + const formattedMessages = super._mockMailMessageMessageFormat(...arguments); for (const formattedMessage of formattedMessages) { const [rating] = this.getRecords('rating.rating', [ ['message_id', '=', formattedMessage.id], diff --git a/addons/sale_product_configurator/static/src/js/sale_product_field.js b/addons/sale_product_configurator/static/src/js/sale_product_field.js index 58b5feaab22..92db4a2bab5 100644 --- a/addons/sale_product_configurator/static/src/js/sale_product_field.js +++ b/addons/sale_product_configurator/static/src/js/sale_product_field.js @@ -37,17 +37,17 @@ async function applyProduct(record, product) { }); }; -patch(SaleOrderLineProductField.prototype, 'sale_product_configurator', { +patch(SaleOrderLineProductField.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.dialog = useService("dialog"); this.orm = useService("orm"); }, async _onProductTemplateUpdate() { - this._super(...arguments); + super._onProductTemplateUpdate(...arguments); const result = await this.orm.call( 'product.template', 'get_single_product_variant', @@ -78,14 +78,14 @@ patch(SaleOrderLineProductField.prototype, 'sale_product_configurator', { }, _editProductConfiguration() { - this._super(...arguments); + super._editProductConfiguration(...arguments); if (this.props.record.data.is_configurable_product) { this._openProductConfigurator(true); } }, get isConfigurableTemplate() { - return this._super(...arguments) || this.props.record.data.is_configurable_product; + return super.isConfigurableTemplate || this.props.record.data.is_configurable_product; }, async _openProductConfigurator(edit=false) { diff --git a/addons/sale_product_matrix/static/src/js/sale_product_field.js b/addons/sale_product_matrix/static/src/js/sale_product_field.js index 0c96a182819..412da824e5d 100644 --- a/addons/sale_product_matrix/static/src/js/sale_product_field.js +++ b/addons/sale_product_matrix/static/src/js/sale_product_field.js @@ -7,10 +7,10 @@ import { useService } from "@web/core/utils/hooks"; import "@sale_product_configurator/js/sale_product_field"; -patch(SaleOrderLineProductField.prototype, 'sale_product_matrix', { +patch(SaleOrderLineProductField.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.dialog = useService("dialog"); }, @@ -50,7 +50,7 @@ patch(SaleOrderLineProductField.prototype, 'sale_product_matrix', { if (edit && this.props.record.data.product_add_mode == 'matrix') { this._openGridConfigurator(true); } else { - this._super(...arguments); + super._openProductConfigurator(...arguments); } }, @@ -64,7 +64,7 @@ patch(SaleOrderLineProductField.prototype, 'sale_product_matrix', { * * @private */ - _openMatrixConfigurator: function (jsonInfo, productTemplateId, editedCellAttributes) { + _openMatrixConfigurator(jsonInfo, productTemplateId, editedCellAttributes) { const infos = JSON.parse(jsonInfo); this.dialog.add(ProductMatrixDialog, { header: infos.header, diff --git a/addons/sale_project/static/src/components/project_right_side_panel/project_right_side_panel.js b/addons/sale_project/static/src/components/project_right_side_panel/project_right_side_panel.js index bc3104fc77c..5139f396a6e 100644 --- a/addons/sale_project/static/src/components/project_right_side_panel/project_right_side_panel.js +++ b/addons/sale_project/static/src/components/project_right_side_panel/project_right_side_panel.js @@ -1,10 +1,10 @@ /** @odoo-module */ -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { formatFloatTime, formatFloat } from "@web/views/fields/formatters"; import { ProjectRightSidePanel } from '@project/components/project_right_side_panel/project_right_side_panel'; -patch(ProjectRightSidePanel.prototype, '@sale_project/components/project_right_side_panel/project_right_side_panel', { +patch(ProjectRightSidePanel.prototype, { async _loadAdditionalSalesOrderItems() { const offset = this.state.data.sale_items.data.length; const totalRecords = this.state.data.sale_items.total; diff --git a/addons/sale_project/static/tests/tours/project_tour.js b/addons/sale_project/static/tests/tours/project_tour.js index fb2479432e1..78bea06b54b 100644 --- a/addons/sale_project/static/tests/tours/project_tour.js +++ b/addons/sale_project/static/tests/tours/project_tour.js @@ -8,9 +8,9 @@ import { registry } from "@web/core/registry"; import "@project/../tests/tours/project_tour"; import { patch } from "@web/core/utils/patch"; -patch(registry.category("web_tour.tours").get("project_test_tour"), "patch_sale_project_tour", { +patch(registry.category("web_tour.tours").get("project_test_tour"), { steps() { - const originalSteps = this._super(); + const originalSteps = super.steps(); const projectCreationStepIndex = originalSteps.findIndex((step) => step.id === "project_creation"); originalSteps.splice(projectCreationStepIndex, 0, { trigger: "div[name='allow_billable'] input", diff --git a/addons/sale_stock/static/src/sale_stock_forecasted/forecasted_details.js b/addons/sale_stock/static/src/sale_stock_forecasted/forecasted_details.js index c84bf5c9415..52994f22cd7 100644 --- a/addons/sale_stock/static/src/sale_stock_forecasted/forecasted_details.js +++ b/addons/sale_stock/static/src/sale_stock_forecasted/forecasted_details.js @@ -1,10 +1,10 @@ /** @odoo-module **/ import { formatMonetary } from "@web/views/fields/formatters"; -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { ForecastedDetails } from "@stock/stock_forecasted/forecasted_details"; -patch(ForecastedDetails.prototype, 'sale_stock.ForecastedDetails', { +patch(ForecastedDetails.prototype, { _formatMonetary(num, currencyId){ return formatMonetary(num,{ currencyId: currencyId}); } diff --git a/addons/sms/static/src/components/phone_field/phone_field.js b/addons/sms/static/src/components/phone_field/phone_field.js index 7dc3b783a47..98a8dbe788d 100644 --- a/addons/sms/static/src/components/phone_field/phone_field.js +++ b/addons/sms/static/src/components/phone_field/phone_field.js @@ -5,7 +5,7 @@ import { patch } from "@web/core/utils/patch"; import { PhoneField, phoneField, formPhoneField } from "@web/views/fields/phone/phone_field"; import { SendSMSButton } from '@sms/components/sms_button/sms_button'; -patch(PhoneField, "sms.PhoneField", { +patch(PhoneField, { components: { ...PhoneField.components, SendSMSButton @@ -20,9 +20,9 @@ patch(PhoneField, "sms.PhoneField", { }, }); -const patchDescr = { +const patchDescr = () => ({ extractProps({ options }) { - const props = this._super(...arguments); + const props = super.extractProps(...arguments); props.enableButton = options.enable_sms; return props; }, @@ -32,7 +32,7 @@ const patchDescr = { type: "boolean", default: true, }], -}; +}); -patch(phoneField, "sms.PhoneField", patchDescr); -patch(formPhoneField, "sms.PhoneField", patchDescr); +patch(phoneField, patchDescr()); +patch(formPhoneField, patchDescr()); diff --git a/addons/sms/static/src/core/notification_group_model_patch.js b/addons/sms/static/src/core/notification_group_model_patch.js index 738eca25e8d..65534a1c70f 100644 --- a/addons/sms/static/src/core/notification_group_model_patch.js +++ b/addons/sms/static/src/core/notification_group_model_patch.js @@ -4,17 +4,17 @@ import { NotificationGroup } from "@mail/core/common/notification_group_model"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(NotificationGroup.prototype, "sms/notification_group_model", { +patch(NotificationGroup.prototype, { get iconSrc() { if (this.type === "sms") { return "/sms/static/img/sms_failure.svg"; } - return this._super(); + return super.iconSrc; }, get body() { if (this.type === "sms") { return _t("An error occurred when sending an SMS"); } - return this._super(); + return super.body; }, }); diff --git a/addons/sms/static/src/core/notification_model_patch.js b/addons/sms/static/src/core/notification_model_patch.js index dc94b56428b..c2f85fc1fb7 100644 --- a/addons/sms/static/src/core/notification_model_patch.js +++ b/addons/sms/static/src/core/notification_model_patch.js @@ -4,17 +4,17 @@ import { Notification } from "@mail/core/common/notification_model"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(Notification.prototype, "sms", { +patch(Notification.prototype, { get icon() { if (this.notification_type === "sms") { return "fa fa-mobile"; } - return this._super(); + return super.icon; }, get label() { if (this.notification_type === "sms") { return _t("SMS"); } - return this._super(); + return super.label; }, }); diff --git a/addons/sms/static/src/messaging_menu/messaging_menu_patch.js b/addons/sms/static/src/messaging_menu/messaging_menu_patch.js index 6f428c40a17..f52fe59457a 100644 --- a/addons/sms/static/src/messaging_menu/messaging_menu_patch.js +++ b/addons/sms/static/src/messaging_menu/messaging_menu_patch.js @@ -4,10 +4,10 @@ import { MessagingMenu } from "@mail/core/web/messaging_menu"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(MessagingMenu.prototype, "sms/messaging_menu", { +patch(MessagingMenu.prototype, { openFailureView(failure) { if (failure.type === "email") { - return this._super(failure); + return super.openFailureView(failure); } this.env.services.action.doAction({ name: _t("SMS Failures"), diff --git a/addons/sms/static/src/thread/message_patch.js b/addons/sms/static/src/thread/message_patch.js index a5aab7df9ff..8ecc6a13968 100644 --- a/addons/sms/static/src/thread/message_patch.js +++ b/addons/sms/static/src/thread/message_patch.js @@ -4,7 +4,7 @@ import { Message } from "@mail/core/common/message"; import { patch } from "@web/core/utils/patch"; -patch(Message.prototype, "sms", { +patch(Message.prototype, { onClickFailure() { if (this.message.type === "sms") { this.env.services.action.doAction("sms.sms_resend_action", { @@ -13,7 +13,7 @@ patch(Message.prototype, "sms", { }, }); } else { - this._super(...arguments); + super.onClickFailure(...arguments); } }, }); diff --git a/addons/snailmail/static/src/core/notification_group_model_patch.js b/addons/snailmail/static/src/core/notification_group_model_patch.js index 19c8926796b..b9a14efa8d5 100644 --- a/addons/snailmail/static/src/core/notification_group_model_patch.js +++ b/addons/snailmail/static/src/core/notification_group_model_patch.js @@ -4,17 +4,17 @@ import { NotificationGroup } from "@mail/core/common/notification_group_model"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(NotificationGroup.prototype, "snailmail", { +patch(NotificationGroup.prototype, { get iconSrc() { if (this.type === "snail") { return "/snailmail/static/img/snailmail_failure.png"; } - return this._super(); + return super.iconSrc; }, get body() { if (this.type === "snail") { return _t("An error occurred when sending a letter with Snailmail."); } - return this._super(); + return super.body; }, }); diff --git a/addons/snailmail/static/src/core/notification_model_patch.js b/addons/snailmail/static/src/core/notification_model_patch.js index fa2a4ea0827..1c4278d0dae 100644 --- a/addons/snailmail/static/src/core/notification_model_patch.js +++ b/addons/snailmail/static/src/core/notification_model_patch.js @@ -4,12 +4,12 @@ import { Notification } from "@mail/core/common/notification_model"; import { patch } from "@web/core/utils/patch"; import { _t } from "@web/core/l10n/translation"; -patch(Notification.prototype, "snailmail", { +patch(Notification.prototype, { get icon() { if (this.notification_type === "snail") { return "fa fa-paper-plane"; } - return this._super(); + return super.icon; }, get statusIcon() { @@ -25,7 +25,7 @@ patch(Notification.prototype, "snailmail", { return "fa fa-exclamation text-danger"; } } - return this._super(); + return super.statusIcon; }, get statusTitle() { @@ -41,6 +41,6 @@ patch(Notification.prototype, "snailmail", { return _t("Error"); } } - return this._super(); + return super.statusTitle; }, }); diff --git a/addons/snailmail/static/src/core_ui/message_patch.js b/addons/snailmail/static/src/core_ui/message_patch.js index f47c4f5dd53..82b4f456975 100644 --- a/addons/snailmail/static/src/core_ui/message_patch.js +++ b/addons/snailmail/static/src/core_ui/message_patch.js @@ -7,7 +7,7 @@ import { SnailmailNotificationPopover } from "./snailmail_notification_popover"; import { patch } from "@web/core/utils/patch"; -patch(Message.prototype, "snailmail", { +patch(Message.prototype, { onClickFailure() { if (this.message.type === "snailmail") { const failureType = this.message.notifications[0].failure_type; @@ -29,7 +29,7 @@ patch(Message.prototype, "snailmail", { break; } } else { - this._super(...arguments); + super.onClickFailure(...arguments); } }, diff --git a/addons/snailmail/static/src/messaging_menu/messaging_menu_patch.js b/addons/snailmail/static/src/messaging_menu/messaging_menu_patch.js index e80174ee1dc..cc15e6fc2a4 100644 --- a/addons/snailmail/static/src/messaging_menu/messaging_menu_patch.js +++ b/addons/snailmail/static/src/messaging_menu/messaging_menu_patch.js @@ -4,10 +4,10 @@ import { MessagingMenu } from "@mail/core/web/messaging_menu"; import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; -patch(MessagingMenu.prototype, "snailmail/messaging_menu", { +patch(MessagingMenu.prototype, { openFailureView(failure) { if (failure.type !== "snail") { - return this._super(failure); + return super.openFailureView(failure); } this.env.services.action.doAction({ name: _t("Snailmail Failures"), diff --git a/addons/snailmail/static/tests/helpers/mock_server/models/mail_message.js b/addons/snailmail/static/tests/helpers/mock_server/models/mail_message.js index 346393e4263..d099eb153ba 100644 --- a/addons/snailmail/static/tests/helpers/mock_server/models/mail_message.js +++ b/addons/snailmail/static/tests/helpers/mock_server/models/mail_message.js @@ -5,7 +5,7 @@ import '@mail/../tests/helpers/mock_server/models/mail_message'; // ensure mail import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, 'snailmail/models/mail_message', { +patch(MockServer.prototype, { //-------------------------------------------------------------------------- // Private //-------------------------------------------------------------------------- @@ -26,7 +26,7 @@ patch(MockServer.prototype, 'snailmail/models/mail_message', { // random value returned in order for the mock server to know that this route is implemented. return true; } - return this._super(...arguments); + return super._performRPC(...arguments); }, //-------------------------------------------------------------------------- diff --git a/addons/spreadsheet/static/src/chart/odoo_menu/figure_component.js b/addons/spreadsheet/static/src/chart/odoo_menu/figure_component.js index b78914cc5e1..acb94540798 100644 --- a/addons/spreadsheet/static/src/chart/odoo_menu/figure_component.js +++ b/addons/spreadsheet/static/src/chart/odoo_menu/figure_component.js @@ -4,9 +4,9 @@ import { patch } from "@web/core/utils/patch"; import * as spreadsheet from "@odoo/o-spreadsheet"; import { useService } from "@web/core/utils/hooks"; -patch(spreadsheet.components.FigureComponent.prototype, "spreadsheet.FigureComponent", { +patch(spreadsheet.components.FigureComponent.prototype, { setup() { - this._super(); + super.setup(); this.menuService = useService("menu"); this.actionService = useService("action"); }, diff --git a/addons/stock_account/static/src/stock_account_forecasted/forecasted_header.js b/addons/stock_account/static/src/stock_account_forecasted/forecasted_header.js index 17fbc07d36e..2064b5cc31e 100644 --- a/addons/stock_account/static/src/stock_account_forecasted/forecasted_header.js +++ b/addons/stock_account/static/src/stock_account_forecasted/forecasted_header.js @@ -1,11 +1,11 @@ /** @odoo-module **/ -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { ForecastedHeader as Parent } from "@stock/stock_forecasted/forecasted_header"; export class StockAccountForecastedHeader extends Parent{} -patch(Parent.prototype, 'stock_account.ForecastedHeader', { +patch(Parent.prototype, { async _onClickValuation() { const context = this._getActionContext(); return this.action.doAction({ diff --git a/addons/survey/static/src/question_page/question_page_one2many_field.js b/addons/survey/static/src/question_page/question_page_one2many_field.js index 015e6a36862..edd67fa1ca0 100644 --- a/addons/survey/static/src/question_page/question_page_one2many_field.js +++ b/addons/survey/static/src/question_page/question_page_one2many_field.js @@ -8,7 +8,7 @@ import { X2ManyField, x2ManyField } from "@web/views/fields/x2many/x2many_field" const { useSubEnv } = owl; -patch(X2ManyFieldDialog.prototype, 'survey_question_chaining_with_validation', { +patch(X2ManyFieldDialog.prototype, { /** * Re-enable buttons after our error is thrown because blocking normal * behavior is required to not close the dialog and stay in edition but @@ -17,7 +17,7 @@ patch(X2ManyFieldDialog.prototype, 'survey_question_chaining_with_validation', { * @override */ async saveAndNew() { - const res = this._super(...arguments); + const res = super.saveAndNew(...arguments); if (this.record.resModel === 'survey.question') { const btns = this.modalRef.el.querySelectorAll(".modal-footer button"); // see XManyFieldDialog.disableButtons this.enableButtons(btns); diff --git a/addons/test_mail/static/tests/activity_tests.js b/addons/test_mail/static/tests/activity_tests.js index 129468e2ba0..f6ee2e14fa2 100644 --- a/addons/test_mail/static/tests/activity_tests.js +++ b/addons/test_mail/static/tests/activity_tests.js @@ -533,7 +533,7 @@ QUnit.module("test_mail", {}, function () { async load(params) { // force params to have a groupBy set, the model should ignore this value during the load params.groupBy = ["user_id"]; - await this._super(params); + await super.load(params); }, }); @@ -728,7 +728,7 @@ QUnit.module("test_mail", {}, function () { patchWithCleanup(ActivityRenderer.prototype, { setup() { - this._super(); + super.setup(); owl.onMounted(() => { assert.step("mounted"); }); diff --git a/addons/test_website/static/tests/field_html_file_upload.js b/addons/test_website/static/tests/field_html_file_upload.js index 7cfaf6c4f60..f1aad516251 100644 --- a/addons/test_website/static/tests/field_html_file_upload.js +++ b/addons/test_website/static/tests/field_html_file_upload.js @@ -46,8 +46,8 @@ QUnit.module('field html file upload', { assert.expect(4); const onAttachmentChangeTriggered = testUtils.makeTestPromise(); patchWithCleanup(HtmlField.prototype, { - '_onAttachmentChange': function (event) { - this._super(event); + _onAttachmentChange(event) { + super._onAttachmentChange(event); onAttachmentChangeTriggered.resolve(true); } }); @@ -55,13 +55,13 @@ QUnit.module('field html file upload', { const onChangeTriggered = testUtils.makeTestPromise(); patchWithCleanup(FileSelectorControlPanel.prototype, { setup() { - this._super(); + super.setup(); useEffect(() => { defFileSelector.resolve(true); }, () => []); }, async onChangeFileInput() { - this._super(); + super.onChangeFileInput(); onChangeTriggered.resolve(true); } }); diff --git a/addons/test_website/static/tests/tours/replace_media.js b/addons/test_website/static/tests/tours/replace_media.js index fefc9aa3cb4..2ad743ef0cf 100644 --- a/addons/test_website/static/tests/tours/replace_media.js +++ b/addons/test_website/static/tests/tours/replace_media.js @@ -1,6 +1,6 @@ /** @odoo-module **/ -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { VideoSelector } from '@web_editor/components/media_dialog/video_selector'; import wTourUtils from '@website/js/tours/tour_utils'; @@ -23,12 +23,12 @@ wTourUtils.registerWebsitePreviewTour('test_replace_media', { // specific to an URL only, it is acceptable). // TODO if we ever give the possibility to upload its own videos, // this won't be necessary anymore. - patch(VideoSelector.prototype, "Video selector patch", { + patch(VideoSelector.prototype, { async _getVideoURLData(src, options) { if (src === VIDEO_URL || src === 'about:blank') { return {platform: 'youtube', embed_url: 'about:blank'}; } - return this._super(...arguments); + return super._getVideoURLData(...arguments); }, }); }, diff --git a/addons/web/static/src/webclient/clickbot/clickbot.js b/addons/web/static/src/webclient/clickbot/clickbot.js index 93a91a74e89..ec9bc6944c0 100644 --- a/addons/web/static/src/webclient/clickbot/clickbot.js +++ b/addons/web/static/src/webclient/clickbot/clickbot.js @@ -52,15 +52,15 @@ const { patch } = odoo.__DEBUG__.services["@web/core/utils/patch"]; const { WithSearch } = odoo.__DEBUG__.services["@web/search/with_search/with_search"]; - patch(WithSearch.prototype, "PatchedWithSearch", { + patch(WithSearch.prototype, { setup() { - this._super(); + super.setup(); onWillStart(() => { viewUpdateCount++; }); }, async render() { - await this._super(...arguments); + await super.render(...arguments); viewUpdateCount++; }, }); diff --git a/addons/web/static/tests/core/dialog_service_tests.js b/addons/web/static/tests/core/dialog_service_tests.js index 1954de88c77..d5bcd0e9e12 100644 --- a/addons/web/static/tests/core/dialog_service_tests.js +++ b/addons/web/static/tests/core/dialog_service_tests.js @@ -210,7 +210,7 @@ QUnit.test("dialog component crashes", async (assert) => { const prom = makeDeferred(); patchWithCleanup(ErrorDialog.prototype, { setup() { - this._super(); + super.setup(); onMounted(() => { prom.resolve(); }); diff --git a/addons/web/static/tests/core/dropdown_tests.js b/addons/web/static/tests/core/dropdown_tests.js index 0358b9363dd..f28dd7b7d25 100644 --- a/addons/web/static/tests/core/dropdown_tests.js +++ b/addons/web/static/tests/core/dropdown_tests.js @@ -89,7 +89,7 @@ QUnit.module("Components", ({ beforeEach }) => { patchWithCleanup(DropdownItem.prototype, { onClick(ev) { assert.ok(!ev.defaultPrevented); - this._super(...arguments); + super.onClick(...arguments); const href = ev.target.getAttribute("href"); // defaultPrevented only if props.href is defined assert.ok(href !== null ? ev.defaultPrevented : !ev.defaultPrevented); @@ -184,7 +184,7 @@ QUnit.module("Components", ({ beforeEach }) => { patchWithCleanup(Dropdown.prototype, { close() { assert.step("dropdown will close"); - this._super(); + super.close(); }, }); class Parent extends Component { @@ -994,7 +994,7 @@ QUnit.module("Components", ({ beforeEach }) => { assert.expect(9); patchWithCleanup(Dropdown.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); const isSubmenu = Boolean(this.parentDropdown); if (isSubmenu) { onMounted(() => { @@ -1123,7 +1123,7 @@ QUnit.module("Components", ({ beforeEach }) => { let hotkeyRegistrationsCount = 0; patchWithCleanup(env.services.hotkey, { add() { - const remove = this._super(...arguments); + const remove = super.add(...arguments); hotkeyRegistrationsCount += 1; return () => { remove(); diff --git a/addons/web/static/tests/core/l10n/dates_tests.js b/addons/web/static/tests/core/l10n/dates_tests.js index ba424bdd2f7..6eeb5f1e9ac 100644 --- a/addons/web/static/tests/core/l10n/dates_tests.js +++ b/addons/web/static/tests/core/l10n/dates_tests.js @@ -12,7 +12,6 @@ import { strftimeToLuxonFormat, } from "@web/core/l10n/dates"; import { localization } from "@web/core/l10n/localization"; -import { patch, unpatch } from "@web/core/utils/patch"; import core from "@web/legacy/js/services/core"; import field_utils from "@web/legacy/js/fields/field_utils"; import session from "web.session"; @@ -165,7 +164,7 @@ QUnit.module( }); QUnit.test("parseDateTime", async (assert) => { - patch(localization, "default loc", defaultLocalization); + patchWithCleanup(localization, { ...defaultLocalization }); assert.throws( function () { @@ -197,14 +196,12 @@ QUnit.module( assert.equal(parseDateTime(dateStr).toISO(), expected, "Date with leading 0"); dateStr = "1/13/2019 10:5:45"; assert.equal(parseDateTime(dateStr).toISO(), expected, "Date without leading 0"); - - unpatch(localization, "default loc"); }); QUnit.test("parseDateTime (norwegian locale)", async (assert) => { const dateFormat = strftimeToLuxonFormat("%d. %b %Y"); const timeFormat = strftimeToLuxonFormat("%H:%M:%S"); - patch(localization, "weird loc", { + patchWithCleanup(localization, { dateFormat, timeFormat, dateTimeFormat: `${dateFormat} ${timeFormat}`, @@ -227,7 +224,6 @@ QUnit.module( ); Settings.defaultLocale = originalLocale; - unpatch(localization, "weird loc"); }); QUnit.test("parseDate", async (assert) => { @@ -243,7 +239,7 @@ QUnit.module( QUnit.test("parseDate without separator", async (assert) => { const dateFormat = strftimeToLuxonFormat("%d.%m/%Y"); const timeFormat = strftimeToLuxonFormat("%H:%M:%S"); - patch(localization, "patch loc", { + patchWithCleanup(localization, { dateFormat, timeFormat, dateTimeFormat: `${dateFormat} ${timeFormat}`, @@ -294,13 +290,12 @@ QUnit.module( assert.equal(parseDate("310197").toFormat(testDateFormat), "31.01/1997"); assert.equal(parseDate("310117").toFormat(testDateFormat), "31.01/2017"); assert.equal(parseDate("31011985").toFormat(testDateFormat), "31.01/1985"); - unpatch(localization, "patch loc"); }); QUnit.test("parseDateTime without separator", async (assert) => { const dateFormat = strftimeToLuxonFormat("%d.%m/%Y"); const timeFormat = strftimeToLuxonFormat("%H:%M:%S"); - patch(localization, "patch loc", { + patchWithCleanup(localization, { dateFormat, timeFormat, dateTimeFormat: `${dateFormat} ${timeFormat}`, @@ -319,13 +314,12 @@ QUnit.module( parseDateTime("31/01/1985 08").toFormat(dateTimeFormat), "31.01/1985 08:00/00" ); - unpatch(localization, "patch loc"); }); QUnit.test("parseDateTime with escaped characters (eg. Basque locale)", async (assert) => { const dateFormat = strftimeToLuxonFormat("%a, %Y.eko %bren %da"); const timeFormat = strftimeToLuxonFormat("%H:%M:%S"); - patch(localization, "patch loc", { + patchWithCleanup(localization, { dateFormat, timeFormat, dateTimeFormat: `${dateFormat} ${timeFormat}`, @@ -337,7 +331,6 @@ QUnit.module( parseDateTime("1985-01-31 08:30:00").toFormat(dateTimeFormat), "Thu, 1985.eko Janren 31a 08:30:00" ); - unpatch(localization, "patch loc"); }); QUnit.test("parse smart date input", async (assert) => { @@ -387,7 +380,7 @@ QUnit.module( }); QUnit.test("parseDateTime SQL Format", async (assert) => { - patch(localization, "default loc", defaultLocalization); + patchWithCleanup(localization, { ...defaultLocalization }); let dateStr = "2017-05-15 09:12:34"; let expected = "2017-05-15T09:12:34.000+01:00"; @@ -400,8 +393,6 @@ QUnit.module( expected, "Date SQL format, check date is not confused with month" ); - - unpatch(localization, "default loc"); }); QUnit.test("serializeDate", async (assert) => { diff --git a/addons/web/static/tests/core/l10n/translation_tests.js b/addons/web/static/tests/core/l10n/translation_tests.js index c241d3a29b1..b3aa96eb4ba 100644 --- a/addons/web/static/tests/core/l10n/translation_tests.js +++ b/addons/web/static/tests/core/l10n/translation_tests.js @@ -8,7 +8,6 @@ import { browser } from "@web/core/browser/browser"; import { localizationService } from "@web/core/l10n/localization_service"; import { translatedTerms, translationLoaded, _t } from "@web/core/l10n/translation"; import { registry } from "@web/core/registry"; -import { patch, unpatch } from "@web/core/utils/patch"; import { session } from "@web/session"; import { Component, xml } from "@odoo/owl"; @@ -59,11 +58,10 @@ QUnit.test("can translate a text node", async (assert) => { TestComponent.template = xml`
Hello
`; serviceRegistry.add("localization", makeFakeLocalizationService()); const env = await makeTestEnv(); - patch(translatedTerms, "add translations", terms); + patchWithCleanup(translatedTerms, { ...terms }); const target = getFixture(); await mount(TestComponent, target, { env }); assert.strictEqual(target.innerText, "Bonjour"); - unpatch(translatedTerms, "add translations"); }); QUnit.test("can lazy translate", async (assert) => { @@ -77,12 +75,11 @@ QUnit.test("can lazy translate", async (assert) => { serviceRegistry.add("localization", makeFakeLocalizationService()); const env = await makeTestEnv(); - patch(translatedTerms, "add translations", terms); + patchWithCleanup(translatedTerms, { ...terms }); translatedTerms[translationLoaded] = true; const target = getFixture(); await mount(TestComponent, target, { env }); assert.strictEqual(target.innerText, "Bonjour"); - unpatch(translatedTerms, "add translations"); }); QUnit.test("_t is in env", async (assert) => { @@ -90,11 +87,10 @@ QUnit.test("_t is in env", async (assert) => { TestComponent.template = xml`
`; serviceRegistry.add("localization", makeFakeLocalizationService()); const env = await makeTestEnv(); - patch(translatedTerms, "add translations", terms); + patchWithCleanup(translatedTerms, { ...terms }); const target = getFixture(); await mount(TestComponent, target, { env }); assert.strictEqual(target.innerText, "Bonjour"); - unpatch(translatedTerms, "add translations"); }); QUnit.test("luxon is configured in the correct lang", async (assert) => { diff --git a/addons/web/static/tests/core/main_components_container_tests.js b/addons/web/static/tests/core/main_components_container_tests.js index 7c64c7f4e9e..708fa999605 100644 --- a/addons/web/static/tests/core/main_components_container_tests.js +++ b/addons/web/static/tests/core/main_components_container_tests.js @@ -2,7 +2,7 @@ import { MainComponentsContainer } from "@web/core/main_components_container"; import { registry } from "@web/core/registry"; import { clearRegistryWithCleanup, makeTestEnv } from "../helpers/mock_env"; -import { patch, unpatch } from "@web/core/utils/patch"; +import { patch } from "@web/core/utils/patch"; import { getFixture, mount, nextTick } from "../helpers/utils"; import { Component, useState, xml } from "@odoo/owl"; @@ -73,14 +73,14 @@ QUnit.module("Components", (hooks) => { window.addEventListener("unhandledrejection", handler); // fake error service so that the odoo qunit handlers don't think that they need to handle the error registry.category("services").add("error", { start: () => {} }); - patch(QUnit, "MainComponentsContainer QUnit patch", { + const unpatch = patch(QUnit, { onUnhandledRejection: () => {}, }); compA.state.shouldThrow = true; await nextTick(); window.removeEventListener("unhandledrejection", handler); // unpatch QUnit asap so any other errors can be caught by it - unpatch(QUnit, "MainComponentsContainer QUnit patch"); + unpatch(); assert.verifySteps([ 'An error occured in the owl lifecycle (see this Error\'s "cause" property)', "BOOM", @@ -128,14 +128,14 @@ QUnit.module("Components", (hooks) => { window.addEventListener("unhandledrejection", handler); // fake error service so that the odoo qunit handlers don't think that they need to handle the error registry.category("services").add("error", { start: () => {} }); - patch(QUnit, "MainComponentsContainer QUnit patch", { + const unpatch = patch(QUnit, { onUnhandledRejection: () => {}, }); compB.state.shouldThrow = true; await nextTick(); window.removeEventListener("unhandledrejection", handler); // unpatch QUnit asap so any other errors can be caught by it - unpatch(QUnit, "MainComponentsContainer QUnit patch"); + unpatch(); assert.verifySteps([ 'An error occured in the owl lifecycle (see this Error\'s "cause" property)', "BOOM", diff --git a/addons/web/static/tests/core/network/download_tests.js b/addons/web/static/tests/core/network/download_tests.js index 36284127901..8b71592a963 100644 --- a/addons/web/static/tests/core/network/download_tests.js +++ b/addons/web/static/tests/core/network/download_tests.js @@ -18,13 +18,7 @@ QUnit.module("download", (hooks) => { } const MockXHR = makeMockXHR("", send); - patchWithCleanup( - browser, - { - XMLHttpRequest: MockXHR, - }, - { pure: true } - ); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); let error; try { @@ -47,13 +41,7 @@ QUnit.module("download", (hooks) => { } const MockXHR = makeMockXHR("", send); - patchWithCleanup( - browser, - { - XMLHttpRequest: MockXHR, - }, - { pure: true } - ); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); let error; try { @@ -87,13 +75,7 @@ QUnit.module("download", (hooks) => { } const MockXHR = makeMockXHR("", send); - patchWithCleanup( - browser, - { - XMLHttpRequest: MockXHR, - }, - { pure: true } - ); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); let error; try { @@ -122,13 +104,7 @@ QUnit.module("download", (hooks) => { } const MockXHR = makeMockXHR("", send); - patchWithCleanup( - browser, - { - XMLHttpRequest: MockXHR, - }, - { pure: true } - ); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); let error; try { @@ -161,13 +137,7 @@ QUnit.module("download", (hooks) => { } const MockXHR = makeMockXHR("", send); - patchWithCleanup( - browser, - { - XMLHttpRequest: MockXHR, - }, - { pure: true } - ); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); assert.containsNone(document.body, "a[download]"); diff --git a/addons/web/static/tests/core/network/rpc_service_tests.js b/addons/web/static/tests/core/network/rpc_service_tests.js index df23acf2daa..47811565182 100644 --- a/addons/web/static/tests/core/network/rpc_service_tests.js +++ b/addons/web/static/tests/core/network/rpc_service_tests.js @@ -5,7 +5,6 @@ import { ConnectionAbortedError, ConnectionLostError, rpcService } from "@web/co import { notificationService } from "@web/core/notifications/notification_service"; import { registry } from "@web/core/registry"; import { useService } from "@web/core/utils/hooks"; -import { patch, unpatch } from "@web/core/utils/patch"; import { clearRegistryWithCleanup, makeTestEnv } from "../../helpers/mock_env"; import { makeMockXHR } from "../../helpers/mock_services"; import { @@ -20,7 +19,6 @@ import { registerCleanup } from "../../helpers/cleanup"; import { Component, xml } from "@odoo/owl"; -let isXHRMocked = false; const serviceRegistry = registry.category("services"); let isDeployed = false; @@ -31,18 +29,7 @@ async function testRPC(route, params) { request = data; url = this.url; }); - if (isXHRMocked) { - unpatch(browser, "mock.xhr"); - } - patch( - browser, - "mock.xhr", - { - XMLHttpRequest: MockXHR, - }, - { pure: true } - ); - isXHRMocked = true; + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); if (isDeployed) { clearRegistryWithCleanup(registry.category("main_components")); @@ -66,12 +53,6 @@ QUnit.module("RPC", { serviceRegistry.add("notification", notificationService); serviceRegistry.add("rpc", rpcService); }, - afterEach() { - if (isXHRMocked) { - unpatch(browser, "mock.xhr"); - isXHRMocked = false; - } - }, }); QUnit.test("can perform a simple rpc", async (assert) => { @@ -82,12 +63,11 @@ QUnit.test("can perform a simple rpc", async (assert) => { assert.ok(typeof request.id === "number"); }); - patch(browser, "mock.xhr", { XMLHttpRequest: MockXHR }, { pure: true }); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); const env = await makeTestEnv({ serviceRegistry }); const result = await env.services.rpc("/test/"); assert.deepEqual(result, { action_id: 123 }); - unpatch(browser, "mock.xhr"); }); QUnit.test("trigger an error when response has 'error' key", async (assert) => { @@ -101,7 +81,7 @@ QUnit.test("trigger an error when response has 'error' key", async (assert) => { }, }; const MockXHR = makeMockXHR({ error }); - patch(browser, "mock.xhr", { XMLHttpRequest: MockXHR }, { pure: true }); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); const env = await makeTestEnv({ serviceRegistry, @@ -111,7 +91,6 @@ QUnit.test("trigger an error when response has 'error' key", async (assert) => { } catch { assert.ok(true); } - unpatch(browser, "mock.xhr"); }); QUnit.test("rpc with simple routes", async (assert) => { @@ -133,7 +112,7 @@ QUnit.test("rpc coming from destroyed components are left pending", async (asser MyComponent.template = xml`
`; const def = makeDeferred(); const MockXHR = makeMockXHR({ result: "1" }, () => {}, def); - patch(browser, "mock.xhr", { XMLHttpRequest: MockXHR }, { pure: true }); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); const env = await makeTestEnv({ serviceRegistry, @@ -157,7 +136,6 @@ QUnit.test("rpc coming from destroyed components are left pending", async (asser await nextTick(); assert.strictEqual(isResolved, false); assert.strictEqual(isFailed, false); - unpatch(browser, "mock.xhr"); }); QUnit.test("rpc initiated from destroyed components throw exception", async (assert) => { @@ -183,7 +161,7 @@ QUnit.test("rpc initiated from destroyed components throw exception", async (ass QUnit.test("check trigger RPC:REQUEST and RPC:RESPONSE for a simple rpc", async (assert) => { const MockXHR = makeMockXHR({ test: true }, () => 1); - patch(browser, "mock.xhr", { XMLHttpRequest: MockXHR }, { pure: true }); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); const env = await makeTestEnv({ serviceRegistry, @@ -208,8 +186,6 @@ QUnit.test("check trigger RPC:REQUEST and RPC:RESPONSE for a simple rpc", async await env.services.rpc("/test/", {}, { silent: true }); assert.verifySteps(["RPC:REQUEST(silent)", "RPC:RESPONSE(silent)(ok)"]); - - unpatch(browser, "mock.xhr"); }); QUnit.test("check trigger RPC:REQUEST and RPC:RESPONSE for a rpc with an error", async (assert) => { @@ -222,7 +198,7 @@ QUnit.test("check trigger RPC:REQUEST and RPC:RESPONSE for a rpc with an error", }, }; const MockXHR = makeMockXHR({ error }); - patch(browser, "mock.xhr", { XMLHttpRequest: MockXHR }, { pure: true }); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); const env = await makeTestEnv({ serviceRegistry, }); @@ -246,13 +222,12 @@ QUnit.test("check trigger RPC:REQUEST and RPC:RESPONSE for a rpc with an error", } assert.strictEqual(rpcIdsRequest.toString(), rpcIdsResponse.toString()); assert.verifySteps(["RPC:REQUEST", "RPC:RESPONSE(ko)", "ok"]); - unpatch(browser, "mock.xhr"); }); QUnit.test("check connection aborted", async (assert) => { const def = makeDeferred(); const MockXHR = makeMockXHR({}, () => {}, def); - patchWithCleanup(browser, { XMLHttpRequest: MockXHR }, { pure: true }); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); const env = await makeTestEnv({ serviceRegistry }); env.bus.addEventListener("RPC:REQUEST", () => { assert.step("RPC:REQUEST"); diff --git a/addons/web/static/tests/core/tooltip/tooltip_service_tests.js b/addons/web/static/tests/core/tooltip/tooltip_service_tests.js index b2049233aa8..42dfca4e2f9 100644 --- a/addons/web/static/tests/core/tooltip/tooltip_service_tests.js +++ b/addons/web/static/tests/core/tooltip/tooltip_service_tests.js @@ -57,7 +57,7 @@ export async function makeParent(Child, options = {}) { patchWithCleanup(env.services.popover, { add(...args) { - const result = this._super(...args); + const result = super.add(...args); if (options.onPopoverAdded) { options.onPopoverAdded(...args); } diff --git a/addons/web/static/tests/helpers/legacy_env_utils.js b/addons/web/static/tests/helpers/legacy_env_utils.js index 7e49fc5f79b..d1b400a3a3e 100644 --- a/addons/web/static/tests/helpers/legacy_env_utils.js +++ b/addons/web/static/tests/helpers/legacy_env_utils.js @@ -2,7 +2,7 @@ import { registry } from "@web/core/registry"; import { uiService } from "@web/core/ui/ui_service"; -import { patch, unpatch } from "@web/core/utils/patch"; +import { patch } from "@web/core/utils/patch"; import { makeLegacyDialogMappingService } from "@web/legacy/utils"; import { hotkeyService } from "@web/core/hotkeys/hotkey_service"; import core from "@web/legacy/js/services/core"; @@ -14,9 +14,9 @@ const serviceRegistry = registry.category("services"); export async function makeLegacyDialogMappingTestEnv() { const coreBusListeners = []; - patch(core.bus, "legacy.core.bus.listeners", { + const unpatch = patch(core.bus, { on(eventName, thisArg, callback) { - this._super(...arguments); + super.on(...arguments); coreBusListeners.push({ eventName, callback }); }, }); @@ -34,7 +34,7 @@ export async function makeLegacyDialogMappingTestEnv() { for (const listener of coreBusListeners) { core.bus.off(listener.eventName, listener.callback); } - unpatch(core.bus, "legacy.core.bus.listeners"); + unpatch(); }); return { diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 3e23c11f261..3447eb802a4 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -2602,7 +2602,7 @@ export async function makeMockServer(serverData, mockRPC) { if (mockRPC) { const { loadJS, loadCSS } = assets; patchWithCleanup(assets, { - loadJS: async function (resource) { + async loadJS(resource) { let res = await mockRPC(resource, {}); if (res === undefined) { res = await loadJS(resource); @@ -2611,7 +2611,7 @@ export async function makeMockServer(serverData, mockRPC) { } return res; }, - loadCSS: async function (resource) { + async loadCSS(resource) { let res = await mockRPC(resource, {}); if (res === undefined) { res = await loadCSS(resource); diff --git a/addons/web/static/tests/helpers/session.js b/addons/web/static/tests/helpers/session.js index 59f55919c9d..41211a5fb44 100644 --- a/addons/web/static/tests/helpers/session.js +++ b/addons/web/static/tests/helpers/session.js @@ -11,7 +11,7 @@ const initialSessionInfo = Object.assign({}, sessionInfo); import Session from "@web/legacy/js/core/session"; import { patch } from "@web/core/utils/patch"; -patch(Session.prototype, "web.SessionTestPatch", { +patch(Session.prototype, { async session_reload() { for (const key in sessionInfo) { delete sessionInfo[key]; @@ -19,6 +19,6 @@ patch(Session.prototype, "web.SessionTestPatch", { for (const key in initialSessionInfo) { sessionInfo[key] = initialSessionInfo[key]; } - return await this._super(...arguments); + return await super.session_reload(...arguments); }, }); diff --git a/addons/web/static/tests/helpers/utils.js b/addons/web/static/tests/helpers/utils.js index f88004c6279..ff159d9c6b2 100644 --- a/addons/web/static/tests/helpers/utils.js +++ b/addons/web/static/tests/helpers/utils.js @@ -5,7 +5,7 @@ import { browser } from "@web/core/browser/browser"; import { isMacOS } from "@web/core/browser/feature_detection"; import { download } from "@web/core/network/download"; import { Deferred } from "@web/core/utils/concurrency"; -import { patch, unpatch } from "@web/core/utils/patch"; +import { patch } from "@web/core/utils/patch"; import { isVisible } from "@web/core/utils/ui"; import { registerCleanup } from "./cleanup"; @@ -129,19 +129,15 @@ export function patchTimeZone(offset) { patchWithCleanup(luxon.Settings, { defaultZone: new luxon.FixedOffsetZone.instance(offset) }); } -let nextId = 1; - /** * * @param {Object} obj object to patch * @param {Object} patchValue the actual patch description - * @param {{pure?: boolean}} [options] */ -export function patchWithCleanup(obj, patchValue, options) { - const patchName = `__test_patch_${nextId++}__`; - patch(obj, patchName, patchValue, options); +export function patchWithCleanup(obj, patchValue) { + const unpatch = patch(obj, patchValue); registerCleanup(() => { - unpatch(obj, patchName); + unpatch(); }); } diff --git a/addons/web/static/tests/mobile/views/calendar_view_tests.js b/addons/web/static/tests/mobile/views/calendar_view_tests.js index fade1aac318..06c88d395b0 100644 --- a/addons/web/static/tests/mobile/views/calendar_view_tests.js +++ b/addons/web/static/tests/mobile/views/calendar_view_tests.js @@ -236,11 +236,11 @@ QUnit.module("Views", ({ beforeEach }) => { patchWithCleanup(CalendarCommonRenderer.prototype, { onDateClick(...args) { assert.step("dateClick"); - return this._super(...args); + return super.onDateClick(...args); }, onSelect(...args) { assert.step("select"); - return this._super(...args); + return super.onSelect(...args); }, }); @@ -266,20 +266,20 @@ QUnit.module("Views", ({ beforeEach }) => { QUnit.test('calendar: select range on "Free Zone" opens quick create', async function (assert) { patchWithCleanup(CalendarCommonRenderer.prototype, { get options() { - return Object.assign({}, this._super(), { + return Object.assign({}, super.options, { selectLongPressDelay: 0, }); }, onDateClick(info) { assert.step("dateClick"); - return this._super(info); + return super.onDateClick(info); }, onSelect(info) { assert.step("select"); const { startStr, endStr } = info; assert.equal(startStr, "2016-12-12T01:00:00+01:00"); assert.equal(endStr, "2016-12-12T02:00:00+01:00"); - return this._super(info); + return super.onSelect(info); }, }); @@ -307,21 +307,21 @@ QUnit.module("Views", ({ beforeEach }) => { QUnit.test("calendar (year): select date range opens quick create", async function (assert) { patchWithCleanup(CalendarYearRenderer.prototype, { get options() { - return Object.assign({}, this._super(), { + return Object.assign({}, super.options, { longPressDelay: 0, selectLongPressDelay: 0, }); }, onDateClick(info) { assert.step("dateClick"); - return this._super(info); + return super.onDateClick(info); }, onSelect(info) { assert.step("select"); const { startStr, endStr } = info; assert.equal(startStr, "2016-02-02"); assert.equal(endStr, "2016-02-06"); // end date is exclusive - return this._super(info); + return super.onSelect(info); }, }); diff --git a/addons/web/static/tests/mobile/views/form_view_tests.js b/addons/web/static/tests/mobile/views/form_view_tests.js index 1e7686ef418..c4b418a6594 100644 --- a/addons/web/static/tests/mobile/views/form_view_tests.js +++ b/addons/web/static/tests/mobile/views/form_view_tests.js @@ -436,7 +436,7 @@ QUnit.module("Mobile Views", ({ beforeEach }) => { let fileInput; patchWithCleanup(AttachDocumentWidget.prototype, { setup() { - this._super(); + super.setup(); fileInput = this.fileInput; }, }); diff --git a/addons/web/static/tests/mobile/views/widgets/signature_tests.js b/addons/web/static/tests/mobile/views/widgets/signature_tests.js index fa0d7edc355..cf19a283ef4 100644 --- a/addons/web/static/tests/mobile/views/widgets/signature_tests.js +++ b/addons/web/static/tests/mobile/views/widgets/signature_tests.js @@ -53,11 +53,11 @@ QUnit.module("Widgets", (hooks) => { assert.expect(7); patchWithCleanup(SignatureWidget.prototype, { async onClickSignature() { - await this._super.apply(this, arguments); + await super.onClickSignature(...arguments); assert.step("onClickSignature"); }, async uploadSignature({signatureImage}) { - await this._super.apply(this, arguments); + await super.uploadSignature(...arguments); assert.step("uploadSignature"); }, }); diff --git a/addons/web/static/tests/search/search_utils_tests.js b/addons/web/static/tests/search/search_utils_tests.js index 127457e8c0e..84b215fcb2c 100644 --- a/addons/web/static/tests/search/search_utils_tests.js +++ b/addons/web/static/tests/search/search_utils_tests.js @@ -1,11 +1,10 @@ /** @odoo-module **/ import { defaultLocalization } from "@web/../tests/helpers/mock_services"; -import { patchDate, patchTimeZone } from "@web/../tests/helpers/utils"; +import { patchDate, patchTimeZone, patchWithCleanup } from "@web/../tests/helpers/utils"; import { Domain } from "@web/core/domain"; import { localization } from "@web/core/l10n/localization"; import { translatedTerms } from "@web/core/l10n/translation"; -import { patch, unpatch } from "@web/core/utils/patch"; import { constructDateDomain } from "@web/search/utils/dates"; const { DateTime } = luxon; @@ -487,7 +486,7 @@ QUnit.module("Search", () => { QUnit.test("Quarter option: custom translation", async function (assert) { patchDate(2020, 5, 1, 13, 0, 0); const referenceMoment = DateTime.local().setLocale("en"); - patch(translatedTerms, "add_translations", { Q2: "Deuxième trimestre de l'an de grâce" }); + patchWithCleanup(translatedTerms, { Q2: "Deuxième trimestre de l'an de grâce" }); assert.deepEqual( constructDateDomain(referenceMoment, "date_field", "date", [ "second_quarter", @@ -501,17 +500,12 @@ QUnit.module("Search", () => { }, "Quarter term should be translated" ); - unpatch(translatedTerms, "add_translations"); }); QUnit.test("Quarter option: right to left", async function (assert) { patchDate(2020, 5, 1, 13, 0, 0); const referenceMoment = DateTime.local().setLocale("en"); - patch( - localization, - "rtl_localization", - Object.assign({}, defaultLocalization, { direction: "rtl" }) - ); + patchWithCleanup(localization, { ...defaultLocalization, direction: "rtl" }); assert.deepEqual( constructDateDomain(referenceMoment, "date_field", "date", [ "second_quarter", @@ -525,18 +519,13 @@ QUnit.module("Search", () => { }, "Notation should be right to left" ); - unpatch(localization, "rtl_localization"); }); QUnit.test("Quarter option: custom translation and right to left", async function (assert) { patchDate(2020, 5, 1, 13, 0, 0); const referenceMoment = DateTime.local().setLocale("en"); - patch( - localization, - "rtl_localization", - Object.assign({}, defaultLocalization, { direction: "rtl" }) - ); - patch(translatedTerms, "add_translations", { Q2: "2e Trimestre" }); + patchWithCleanup(localization, { ...defaultLocalization, direction: "rtl" }); + patchWithCleanup(translatedTerms, { Q2: "2e Trimestre" }); assert.deepEqual( constructDateDomain(referenceMoment, "date_field", "date", [ "second_quarter", @@ -550,8 +539,6 @@ QUnit.module("Search", () => { }, "Quarter term should be translated and notation should be right to left" ); - unpatch(localization, "rtl_localization"); - unpatch(translatedTerms, "add_translations"); }); QUnit.skip( diff --git a/addons/web/static/tests/setup.js b/addons/web/static/tests/setup.js index cfc00cfdba8..8f9931a3e56 100644 --- a/addons/web/static/tests/setup.js +++ b/addons/web/static/tests/setup.js @@ -100,7 +100,7 @@ function patchOwlApp() { patchWithCleanup(App.prototype, { destroy() { if (!this.destroyed) { - this._super(...arguments); + super.destroy(...arguments); this.destroyed = true; } }, @@ -108,7 +108,7 @@ function patchOwlApp() { registerCleanup(() => { delete this.constructor.sharedTemplates[name]; }); - return this._super(...arguments); + return super.addTemplate(...arguments); }, }); } @@ -199,8 +199,7 @@ function patchBrowserWithCleanup() { registerCleanup(() => this.close()); } }, - }, - { pure: true } + } ); } @@ -226,7 +225,7 @@ function patchLegacyBus() { // during a test (e.g. during the deployment of a service) patchWithCleanup(LegacyBus.prototype, { on() { - this._super(...arguments); + super.on(...arguments); registerCleanup(() => { this.off(...arguments); }); @@ -307,7 +306,7 @@ function removeUnwantedAttrsFromTemplates(attrs) { function patchAssets() { const { loadXML, getBundle, loadJS, loadCSS } = assets; - patch(assets, "TestAssetsLoadXML", { + patch(assets, { loadXML: function (templates) { console.log("%c[assets] fetch XML ressource", "color: #66e; font-weight: bold;"); // Clean up new templates that might be added later. @@ -355,7 +354,7 @@ function patchAssets() { function patchEventBus() { patchWithCleanup(EventBus.prototype, { addEventListener() { - this._super(...arguments); + super.addEventListener(...arguments); registerCleanup(() => this.removeEventListener(...arguments)); }, }); diff --git a/addons/web/static/tests/views/calendar/calendar_view_tests.js b/addons/web/static/tests/views/calendar/calendar_view_tests.js index 55b7750ca0f..1666c5f36c6 100644 --- a/addons/web/static/tests/views/calendar/calendar_view_tests.js +++ b/addons/web/static/tests/views/calendar/calendar_view_tests.js @@ -1089,7 +1089,7 @@ QUnit.module("Views", ({ beforeEach }) => { let counter = 0; patchWithCleanup(dialogService, { start() { - const result = this._super(...arguments); + const result = super.start(...arguments); return { ...result, add() { diff --git a/addons/web/static/tests/views/fields/binary_field_tests.js b/addons/web/static/tests/views/fields/binary_field_tests.js index 00acdb3b857..4e719f7a3eb 100644 --- a/addons/web/static/tests/views/fields/binary_field_tests.js +++ b/addons/web/static/tests/views/fields/binary_field_tests.js @@ -96,13 +96,7 @@ QUnit.module("Fields", (hooks) => { } const MockXHR = makeMockXHR("", send); - patchWithCleanup( - browser, - { - XMLHttpRequest: MockXHR, - }, - { pure: true } - ); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); await makeView({ serverData, @@ -169,13 +163,7 @@ QUnit.module("Fields", (hooks) => { } const MockXHR = makeMockXHR("", send); - patchWithCleanup( - browser, - { - XMLHttpRequest: MockXHR, - }, - { pure: true } - ); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); await makeView({ serverData, @@ -352,13 +340,7 @@ QUnit.module("Fields", (hooks) => { } const MockXHR = makeMockXHR("", download); - patchWithCleanup( - browser, - { - XMLHttpRequest: MockXHR, - }, - { pure: true } - ); + patchWithCleanup(browser, { XMLHttpRequest: MockXHR }); serverData.models.partner.onchanges = { product_id: function (obj) { diff --git a/addons/web/static/tests/views/fields/one2many_field_tests.js b/addons/web/static/tests/views/fields/one2many_field_tests.js index 363b5255fea..606754ae631 100644 --- a/addons/web/static/tests/views/fields/one2many_field_tests.js +++ b/addons/web/static/tests/views/fields/one2many_field_tests.js @@ -2479,7 +2479,7 @@ QUnit.module("Fields", (hooks) => { if (this.resModel === "turtle") { assert.step(`${this.resId}`); } - return this._super(...arguments); + return super._update(...arguments); }, }); diff --git a/addons/web/static/tests/views/fields/properties_field_tests.js b/addons/web/static/tests/views/fields/properties_field_tests.js index 7048386aadf..9625433f11a 100644 --- a/addons/web/static/tests/views/fields/properties_field_tests.js +++ b/addons/web/static/tests/views/fields/properties_field_tests.js @@ -1127,7 +1127,7 @@ QUnit.module("Fields", (hooks) => { * @override */ setup() { - this._super(); + super.setup(); assert.step(this.props.resModel); }, }); diff --git a/addons/web/static/tests/views/fields/reference_field_tests.js b/addons/web/static/tests/views/fields/reference_field_tests.js index f15fa543527..c4ed403bfd5 100644 --- a/addons/web/static/tests/views/fields/reference_field_tests.js +++ b/addons/web/static/tests/views/fields/reference_field_tests.js @@ -385,7 +385,7 @@ QUnit.module("Fields", (hooks) => { patchWithCleanup(actionService, { start() { - const service = this._super(...arguments); + const service = super.start(...arguments); return { ...service, doAction(action) { diff --git a/addons/web/static/tests/views/fields/signature_field_tests.js b/addons/web/static/tests/views/fields/signature_field_tests.js index d2891c4d3a4..194dab77c62 100644 --- a/addons/web/static/tests/views/fields/signature_field_tests.js +++ b/addons/web/static/tests/views/fields/signature_field_tests.js @@ -115,7 +115,7 @@ QUnit.module("Fields", (hooks) => { QUnit.test("Set simple field in 'full_name' node option", async function (assert) { patchWithCleanup(NameAndSignature.prototype, { setup() { - this._super.apply(this, arguments); + super.setup(...arguments); assert.step(this.props.signature.name); }, }); @@ -159,7 +159,7 @@ QUnit.module("Fields", (hooks) => { QUnit.test("Set m2o field in 'full_name' node option", async function (assert) { patchWithCleanup(NameAndSignature.prototype, { setup() { - this._super.apply(this, arguments); + super.setup(...arguments); assert.step(this.props.signature.name); }, }); diff --git a/addons/web/static/tests/views/form/form_compiler_tests.js b/addons/web/static/tests/views/form/form_compiler_tests.js index 58812e05843..3c6b1c75125 100644 --- a/addons/web/static/tests/views/form/form_compiler_tests.js +++ b/addons/web/static/tests/views/form/form_compiler_tests.js @@ -469,7 +469,7 @@ QUnit.module("Form Renderer", (hooks) => { QUnit.test("invisible is correctly computed with another t-if", (assert) => { patchWithCleanup(FormCompiler.prototype, { setup() { - this._super(); + super.setup(); this.compilers.push({ selector: "myNode", fn: () => { diff --git a/addons/web/static/tests/views/form/form_view_tests.js b/addons/web/static/tests/views/form/form_view_tests.js index 0cc792a754d..a0de703b600 100644 --- a/addons/web/static/tests/views/form/form_view_tests.js +++ b/addons/web/static/tests/views/form/form_view_tests.js @@ -6762,7 +6762,7 @@ QUnit.module("Views", (hooks) => { let form; patchWithCleanup(FormController.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); form = this; }, }); @@ -11105,13 +11105,13 @@ QUnit.module("Views", (hooks) => { "form view with inline tree view with optional fields and local storage mock", async function (assert) { patchWithCleanup(browser.localStorage, { - getItem: function (key) { + getItem(key) { assert.step("getItem " + key); - return this._super(key); + return super.getItem(key); }, - setItem: function (key, value) { + setItem(key, value) { assert.step("setItem " + key + " to " + value); - return this._super(key, value); + return super.setItem(key, value); }, }); @@ -11189,13 +11189,13 @@ QUnit.module("Views", (hooks) => { "form view with tree_view_ref with optional fields and local storage mock", async function (assert) { patchWithCleanup(browser.localStorage, { - getItem: function (key) { + getItem(key) { assert.step("getItem " + key); - return this._super(key); + return super.getItem(key); }, - setItem: function (key, value) { + setItem(key, value) { assert.step("setItem " + key + " to " + value); - return this._super(key, value); + return super.setItem(key, value); }, }); @@ -13467,7 +13467,7 @@ QUnit.module("Views", (hooks) => { function logLifeCycle(Component) { patchWithCleanup(Component.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); const prefix = `${this.constructor.name} ${this.props.name}`; owl.onMounted(() => assert.step(`[${prefix}] onMounted`)); owl.onPatched(() => assert.step(`[${prefix}] onPatched`)); @@ -13524,7 +13524,7 @@ QUnit.module("Views", (hooks) => { function logLifeCycle(Component) { patchWithCleanup(Component.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); const prefix = `${this.constructor.name} ${this.props.name}`; owl.onMounted(() => assert.step(`[${prefix}] onMounted`)); owl.onPatched(() => assert.step(`[${prefix}] onPatched`)); diff --git a/addons/web/static/tests/views/graph_view_tests.js b/addons/web/static/tests/views/graph_view_tests.js index cc27d607280..d669ae176eb 100644 --- a/addons/web/static/tests/views/graph_view_tests.js +++ b/addons/web/static/tests/views/graph_view_tests.js @@ -4224,7 +4224,7 @@ QUnit.module("Views", (hooks) => { QUnit.test("single chart rendering on search", async function (assert) { patchWithCleanup(GraphRenderer.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); onRendered(() => { assert.step("rendering"); }); diff --git a/addons/web/static/tests/views/kanban/kanban_view_tests.js b/addons/web/static/tests/views/kanban/kanban_view_tests.js index 757773a6c25..811e1583768 100644 --- a/addons/web/static/tests/views/kanban/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban/kanban_view_tests.js @@ -1047,7 +1047,7 @@ QUnit.module("Views", (hooks) => { QUnit.test("view button and string interpolated attribute in kanban", async (assert) => { patchWithCleanup(ViewButton.prototype, { setup() { - this._super(); + super.setup(); assert.step( `[${this.props.clickParams["name"]}] className: '${this.props.className}'` ); @@ -13501,7 +13501,7 @@ QUnit.module("Views", (hooks) => { patchWithCleanup(SampleServer.prototype, { async _mockWebReadGroup() { - const result = await this._super(...arguments); + const result = await super._mockWebReadGroup(...arguments); const { "date:month": dateValue } = result.groups[0]; assert.strictEqual(dateValue, "December 2022"); return result; diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index 081e868be47..6ad8ffcb9e1 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -9375,7 +9375,7 @@ QUnit.module("Views", (hooks) => { patchWithCleanup(actionService, { start() { - const result = this._super(...arguments); + const result = super.start(...arguments); return { ...result, doAction(id, { additionalContext }) { @@ -9458,7 +9458,7 @@ QUnit.module("Views", (hooks) => { async function (assert) { patchWithCleanup(actionService, { start() { - const result = this._super(...arguments); + const result = super.start(...arguments); return { ...result, doAction(id, { additionalContext }) { @@ -13181,7 +13181,7 @@ QUnit.module("Views", (hooks) => { QUnit.test("list should ask to scroll to top on page changes", async function (assert) { patchWithCleanup(ListController.prototype, { onPageChangeScroll() { - this._super(...arguments); + super.onPageChangeScroll(...arguments); assert.step("scroll"); }, }); @@ -16039,11 +16039,11 @@ QUnit.module("Views", (hooks) => { patchWithCleanup(browser.localStorage, { getItem(key) { assert.step("getItem " + key); - return forceLocalStorage ? '["m2o"]' : this._super(arguments); + return forceLocalStorage ? '["m2o"]' : super.getItem(arguments); }, setItem(key, value) { assert.step("setItem " + key + " to " + JSON.stringify(value)); - return this._super(arguments); + return super.setItem(arguments); }, }); diff --git a/addons/web/static/tests/views/view_dialogs/select_create_dialog_tests.js b/addons/web/static/tests/views/view_dialogs/select_create_dialog_tests.js index 9d0c67a974e..1a72e90168c 100644 --- a/addons/web/static/tests/views/view_dialogs/select_create_dialog_tests.js +++ b/addons/web/static/tests/views/view_dialogs/select_create_dialog_tests.js @@ -355,7 +355,7 @@ QUnit.module("ViewDialogs", (hooks) => { patchWithCleanup(listView.Controller.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); useSetupAction({ getContext: () => ({ shouldBeInFilterContext: true }), }); diff --git a/addons/web/static/tests/views/view_tests.js b/addons/web/static/tests/views/view_tests.js index 14ed0d85c3a..4b96a9844ad 100644 --- a/addons/web/static/tests/views/view_tests.js +++ b/addons/web/static/tests/views/view_tests.js @@ -122,7 +122,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { arch, fields, info } = this.props; assert.strictEqual(arch, serverData.views["animal,false,toy"]); assert.deepEqual(fields, {}); @@ -160,7 +160,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { arch, fields, info } = this.props; assert.strictEqual(arch, serverData.views["animal,1,toy"]); assert.deepEqual(fields, {}); @@ -197,7 +197,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { arch, fields, info } = this.props; assert.strictEqual(arch, serverData.views["animal,1,toy"]); assert.deepEqual(fields, {}); @@ -238,7 +238,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { arch, fields, info } = this.props; assert.strictEqual(arch, serverData.views["animal,false,toy"]); assert.deepEqual(fields, {}); @@ -281,7 +281,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { arch, fields, info } = this.props; assert.strictEqual(arch, serverData.views["animal,1,toy"]); assert.deepEqual(fields, {}); @@ -327,7 +327,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { arch, fields, info } = this.props; assert.strictEqual(arch, `Specific arch content`); assert.deepEqual(fields, {}); @@ -360,7 +360,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { arch, fields, info } = this.props; assert.strictEqual(arch, serverData.views["animal,false,toy"]); assert.deepEqual(fields, {}); @@ -400,7 +400,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { arch, fields, info } = this.props; assert.strictEqual(arch, `Specific arch content`); assert.deepEqual(fields, {}); @@ -443,7 +443,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { arch, fields, info } = this.props; assert.strictEqual(arch, `Specific arch content`); assert.deepEqual(fields, {}); @@ -479,7 +479,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { irFilters, searchViewArch, searchViewFields, searchViewId } = this.props.info; assert.strictEqual(searchViewArch, serverData.views["animal,false,search"]); @@ -523,7 +523,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { irFilters, searchViewArch, searchViewFields, searchViewId } = this.props.info; assert.strictEqual(searchViewArch, ``); @@ -563,7 +563,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { irFilters, searchViewArch, searchViewFields, searchViewId } = this.props.info; assert.strictEqual(searchViewArch, ``); @@ -602,7 +602,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { irFilters, searchViewArch, searchViewFields, searchViewId } = this.props.info; assert.strictEqual(searchViewArch, ``); @@ -663,7 +663,7 @@ QUnit.module("Views", (hooks) => { const ToyController = viewRegistry.get("toy").Controller; patchWithCleanup(ToyController.prototype, { setup() { - this._super(); + super.setup(); const { irFilters, searchViewArch, searchViewFields, searchViewId } = this.props.info; assert.strictEqual(searchViewArch, ``); diff --git a/addons/web/static/tests/views/widgets/attach_document_tests.js b/addons/web/static/tests/views/widgets/attach_document_tests.js index 7244f3fcfe1..f55a0f02a07 100644 --- a/addons/web/static/tests/views/widgets/attach_document_tests.js +++ b/addons/web/static/tests/views/widgets/attach_document_tests.js @@ -45,7 +45,7 @@ QUnit.module("Widgets", (hooks) => { let fileInput; patchWithCleanup(AttachDocumentWidget.prototype, { setup() { - this._super(); + super.setup(); fileInput = this.fileInput; }, }); @@ -103,7 +103,7 @@ QUnit.module("Widgets", (hooks) => { let fileInput; patchWithCleanup(AttachDocumentWidget.prototype, { setup() { - this._super(); + super.setup(); fileInput = this.fileInput; }, }); diff --git a/addons/web/static/tests/views/widgets/signature_tests.js b/addons/web/static/tests/views/widgets/signature_tests.js index 09c07a9f7ff..9b72ac075ac 100644 --- a/addons/web/static/tests/views/widgets/signature_tests.js +++ b/addons/web/static/tests/views/widgets/signature_tests.js @@ -54,7 +54,7 @@ QUnit.module("Widgets", (hooks) => { patchWithCleanup(NameAndSignature.prototype, { setup() { - this._super.apply(this, arguments); + super.setup(...arguments); assert.strictEqual(this.props.signature.name, ""); }, }); @@ -96,7 +96,7 @@ QUnit.module("Widgets", (hooks) => { QUnit.test("Signature widget: full_name option", async function (assert) { patchWithCleanup(NameAndSignature.prototype, { setup() { - this._super.apply(this, arguments); + super.setup(...arguments); assert.step(this.props.signature.name); }, }); diff --git a/addons/web/static/tests/webclient/actions/close_action_tests.js b/addons/web/static/tests/webclient/actions/close_action_tests.js index e559c8e2eb7..f6eef8e0e2f 100644 --- a/addons/web/static/tests/webclient/actions/close_action_tests.js +++ b/addons/web/static/tests/webclient/actions/close_action_tests.js @@ -101,7 +101,7 @@ QUnit.module("ActionManager", (hooks) => { let form; patchWithCleanup(formView.Controller.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); form = this; }, }); @@ -123,7 +123,7 @@ QUnit.module("ActionManager", (hooks) => { let list; patchWithCleanup(listView.Controller.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); list = this; }, }); @@ -156,7 +156,7 @@ QUnit.module("ActionManager", (hooks) => { let list; patchWithCleanup(listView.Controller.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); list = this; }, }); diff --git a/addons/web/static/tests/webclient/actions/load_state_tests.js b/addons/web/static/tests/webclient/actions/load_state_tests.js index 6e73df3fa4e..05d2b33536a 100644 --- a/addons/web/static/tests/webclient/actions/load_state_tests.js +++ b/addons/web/static/tests/webclient/actions/load_state_tests.js @@ -506,11 +506,11 @@ QUnit.module("ActionManager", (hooks) => { patchWithCleanup(browser.sessionStorage, { getItem(k) { assert.step(`getItem session ${k}`); - return this._super(k); + return super.getItem(k); }, setItem(k, v) { assert.step(`setItem session ${k}`); - return this._super(k, v); + return super.setItem(k, v); }, }); const mockRPC = async (route, { method, kwargs }) => { @@ -866,7 +866,7 @@ QUnit.module("ActionManager", (hooks) => { patchWithCleanup(browser.sessionStorage, { getItem(k) { assert.step(`getItem session ${k}`); - return this._super(k); + return super.getItem(k); }, }); diff --git a/addons/web/static/tests/webclient/actions/misc_tests.js b/addons/web/static/tests/webclient/actions/misc_tests.js index a0dfac7976e..8f2b198a5d8 100644 --- a/addons/web/static/tests/webclient/actions/misc_tests.js +++ b/addons/web/static/tests/webclient/actions/misc_tests.js @@ -95,7 +95,7 @@ QUnit.module("ActionManager", (hooks) => { QUnit.test("properly handle case when action id does not exist", async (assert) => { assert.expect(2); const webClient = await createWebClient({ serverData }); - patchWithCleanup(window, { console: hushConsole }, { pure: true }); + patchWithCleanup(window, { console: hushConsole }); patchWithCleanup(webClient.env.services.notification, { add(message) { assert.strictEqual(message, "No action with id '4448' could be found"); @@ -246,7 +246,7 @@ QUnit.module("ActionManager", (hooks) => { let list; patchWithCleanup(listView.Controller.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); list = this; }, }); @@ -418,7 +418,7 @@ QUnit.module("ActionManager", (hooks) => { patchWithCleanup(ClientAction.prototype, { setup() { - this._super(); + super.setup(); onWillStart(() => { return def; }); diff --git a/addons/web/static/tests/webclient/actions/reports/report_action_tests.js b/addons/web/static/tests/webclient/actions/reports/report_action_tests.js index 0368787507f..d0da6212e2d 100644 --- a/addons/web/static/tests/webclient/actions/reports/report_action_tests.js +++ b/addons/web/static/tests/webclient/actions/reports/report_action_tests.js @@ -160,7 +160,7 @@ QUnit.module("ActionManager", (hooks) => { // attribute is removed right after) patchWithCleanup(ReportAction.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.env.services.rpc(this.reportUrl); this.reportUrl = "about:blank"; }, @@ -218,7 +218,7 @@ QUnit.module("ActionManager", (hooks) => { // attribute is removed right after) patchWithCleanup(ReportAction.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.env.services.rpc(this.reportUrl); this.reportUrl = "about:blank"; }, @@ -350,7 +350,7 @@ QUnit.module("ActionManager", (hooks) => { patchWithCleanup(ReportAction.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.env.services.rpc(this.reportUrl); this.reportUrl = "about:blank"; }, @@ -387,7 +387,7 @@ QUnit.module("ActionManager", (hooks) => { patchWithCleanup(ReportAction.prototype, { init() { - this._super(...arguments); + super.init(...arguments); this.reportUrl = "about:blank"; }, }); diff --git a/addons/web/static/tests/webclient/actions/target_tests.js b/addons/web/static/tests/webclient/actions/target_tests.js index 6ebab094b9a..d44d6c6696c 100644 --- a/addons/web/static/tests/webclient/actions/target_tests.js +++ b/addons/web/static/tests/webclient/actions/target_tests.js @@ -317,7 +317,7 @@ QUnit.module("ActionManager", (hooks) => { const errorDialogOpened = makeDeferred(); patchWithCleanup(ClientErrorDialog.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); onMounted(() => errorDialogOpened.resolve()); }, }); diff --git a/addons/web/static/tests/webclient/actions/window_action_tests.js b/addons/web/static/tests/webclient/actions/window_action_tests.js index 1d0c1701b08..0d0b9e5a6dd 100644 --- a/addons/web/static/tests/webclient/actions/window_action_tests.js +++ b/addons/web/static/tests/webclient/actions/window_action_tests.js @@ -1429,7 +1429,7 @@ QUnit.module("ActionManager", (hooks) => { patchWithCleanup(browser, { setTimeout: (fn) => fn() }); patchWithCleanup(listView.Controller.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); useSetupAction({ getContext: () => ({ shouldBeInFilterContext: true }), }); diff --git a/addons/web/static/tests/webclient/barcode/barcode_scanner_tests.js b/addons/web/static/tests/webclient/barcode/barcode_scanner_tests.js index 0a428616118..e463dc40047 100644 --- a/addons/web/static/tests/webclient/barcode/barcode_scanner_tests.js +++ b/addons/web/static/tests/webclient/barcode/barcode_scanner_tests.js @@ -72,13 +72,13 @@ QUnit.test("Barcode scanner crop overlay", async (assert) => { patchWithCleanup(BarcodeDialog.prototype, { async isVideoReady() { - return this._super(...arguments).then(() => { + return super.isVideoReady(...arguments).then(() => { videoReady.resolve(); }); }, onResize(overlayInfo) { assert.step(JSON.stringify(overlayInfo)); - return this._super(...arguments); + return super.onResize(...arguments); }, }); diff --git a/addons/web/static/tests/webclient/loading_indicator_tests.js b/addons/web/static/tests/webclient/loading_indicator_tests.js index 1dba387afc5..8398efe60fd 100644 --- a/addons/web/static/tests/webclient/loading_indicator_tests.js +++ b/addons/web/static/tests/webclient/loading_indicator_tests.js @@ -3,7 +3,6 @@ import { browser as originalBrowser } from "@web/core/browser/browser"; import { registry } from "@web/core/registry"; import { uiService } from "@web/core/ui/ui_service"; -import { patch, unpatch } from "@web/core/utils/patch"; import { LoadingIndicator } from "@web/webclient/loading_indicator/loading_indicator"; import { makeTestEnv } from "../helpers/mock_env"; import { @@ -131,7 +130,7 @@ QUnit.test("displays the loading indicator for multi rpc in debug mode", async ( QUnit.test("loading indicator blocks UI", async (assert) => { const env = await makeTestEnv(); - patch(originalBrowser, "mock.settimeout", { + patchWithCleanup(originalBrowser, { setTimeout: async (callback, delay) => { assert.step(`set timeout ${delay}`); await Promise.resolve(); @@ -151,7 +150,6 @@ QUnit.test("loading indicator blocks UI", async (assert) => { env.bus.trigger("RPC:RESPONSE", payload(1)); await nextTick(); assert.verifySteps(["set timeout 250", "set timeout 3000", "block", "unblock"]); - unpatch(originalBrowser, "mock.settimeout"); }); QUnit.test("loading indicator doesn't unblock ui if it didn't block it", async (assert) => { diff --git a/addons/web/static/tests/webclient/navbar_tests.js b/addons/web/static/tests/webclient/navbar_tests.js index 924fbbff965..4b1fe505b6d 100644 --- a/addons/web/static/tests/webclient/navbar_tests.js +++ b/addons/web/static/tests/webclient/navbar_tests.js @@ -231,7 +231,7 @@ QUnit.test("navbar updates after adding a systray item", async (assert) => { systrayRegistry.add("addon.myitem2", { Component: MyItem2 }); } }); - this._super(); + super.setup(); }, }); diff --git a/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js b/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js index 8f2214d1f80..10cc1330c33 100644 --- a/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js +++ b/addons/web/static/tests/webclient/settings_form_view/settings_form_view_tests.js @@ -1623,7 +1623,7 @@ QUnit.module("SettingsFormView", (hooks) => { let compiled = undefined; patchWithCleanup(SettingsFormCompiler.prototype, { compile() { - const _compiled = this._super(...arguments); + const _compiled = super.compile(...arguments); compiled = _compiled; return _compiled; }, @@ -1665,7 +1665,7 @@ QUnit.module("SettingsFormView", (hooks) => { let compiled = undefined; patchWithCleanup(SettingsFormCompiler.prototype, { compile() { - const _compiled = this._super(...arguments); + const _compiled = super.compile(...arguments); compiled = _compiled; return _compiled; }, diff --git a/addons/web/static/tests/webclient/webclient_tests.js b/addons/web/static/tests/webclient/webclient_tests.js index 7d255b33636..2e3b12d5823 100644 --- a/addons/web/static/tests/webclient/webclient_tests.js +++ b/addons/web/static/tests/webclient/webclient_tests.js @@ -62,7 +62,7 @@ QUnit.test("control-click propagation stopped on ", async (assert) => { patchWithCleanup(WebClient.prototype, { /** @param {MouseEvent} ev */ onGlobalClick(ev) { - this._super(ev); + super.onGlobalClick(ev); if (ev.ctrlKey) { assert.ok( ev.defaultPrevented === false, diff --git a/addons/web_editor/static/src/js/wysiwyg/wysiwyg_iframe.js b/addons/web_editor/static/src/js/wysiwyg/wysiwyg_iframe.js index b1d95caa5f0..ca0ca1f6028 100644 --- a/addons/web_editor/static/src/js/wysiwyg/wysiwyg_iframe.js +++ b/addons/web_editor/static/src/js/wysiwyg/wysiwyg_iframe.js @@ -11,7 +11,7 @@ var promiseJsAssets; * Add option (inIframe) to load Wysiwyg in an iframe. **/ -patch(Wysiwyg.prototype, 'wysiwyg_iframe.js', { +patch(Wysiwyg.prototype, { /** * Add options to load Wysiwyg in an iframe. * @@ -19,7 +19,7 @@ patch(Wysiwyg.prototype, 'wysiwyg_iframe.js', { * @param {boolean} options.inIframe **/ init() { - this._super(); + super.init(); if (this.options.inIframe) { this._onUpdateIframeId = 'onLoad_' + this.id; } @@ -28,14 +28,13 @@ patch(Wysiwyg.prototype, 'wysiwyg_iframe.js', { * @override **/ async startEdition() { - const _super = this._super.bind(this); if (!this.options.inIframe) { - return _super(); + return super.startEdition(); } else { this.defAsset = this._getAssets(); await this.defAsset; await this._loadIframe(); - return _super(); + return super.startEdition(); } }, @@ -47,7 +46,7 @@ patch(Wysiwyg.prototype, 'wysiwyg_iframe.js', { * @override **/ _getEditorOptions() { - const options = this._super.apply(this, arguments); + const options = super._getEditorOptions(...arguments); if (!("getContextFromParentRect" in options)) { options.getContextFromParentRect = () => { return this.$iframe && this.$iframe.length ? this.$iframe[0].getBoundingClientRect() : { top: 0, left: 0 }; @@ -151,7 +150,7 @@ patch(Wysiwyg.prototype, 'wysiwyg_iframe.js', { if (this.options.inIframe) { return this.snippetsMenu.appendTo(this.$utilsZone); } else { - return this._super.apply(this, arguments); + return super._insertSnippetMenu(...arguments); } }, /** @@ -177,7 +176,7 @@ patch(Wysiwyg.prototype, 'wysiwyg_iframe.js', { */ _bindOnBlur() { if (!this.options.inIframe) { - this._super.apply(this, arguments); + super._bindOnBlur(...arguments); } else { this.$iframe[0].contentWindow.addEventListener('blur', this._onBlur); } diff --git a/addons/web_editor/static/tests/html_field_tests.js b/addons/web_editor/static/tests/html_field_tests.js index 4a39c293752..00969f84ecb 100644 --- a/addons/web_editor/static/tests/html_field_tests.js +++ b/addons/web_editor/static/tests/html_field_tests.js @@ -129,8 +129,8 @@ QUnit.module("WebEditor.HtmlField", ({ beforeEach }) => { let togglePromiseId = 0; const writePromise = makeDeferred(); patchWithCleanup(HtmlField.prototype, { - setup: function () { - this._super(...arguments); + setup() { + super.setup(...arguments); onRendered(() => { if (codeViewState !== this.state.showCodeView) { togglePromises[togglePromiseId].resolve(); @@ -297,7 +297,7 @@ QUnit.module("WebEditor.HtmlField", ({ beforeEach }) => { // Patch to get the controller instance. patchWithCleanup(FormController.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); formController = this; } }); @@ -306,7 +306,7 @@ QUnit.module("WebEditor.HtmlField", ({ beforeEach }) => { const htmlFieldPromise = makeDeferred(); patchWithCleanup(HtmlField.prototype, { async startWysiwyg() { - await this._super(...arguments); + await super.startWysiwyg(...arguments); await nextTick(); htmlFieldPromise.resolve(this); } @@ -460,7 +460,7 @@ QUnit.module("WebEditor.HtmlField", ({ beforeEach }) => { const htmlFieldPromise = makeDeferred(); patchWithCleanup(HtmlField.prototype, { async startWysiwyg() { - await this._super(...arguments); + await super.startWysiwyg(...arguments); await nextTick(); htmlFieldPromise.resolve(this); } @@ -471,7 +471,7 @@ QUnit.module("WebEditor.HtmlField", ({ beforeEach }) => { }; patchWithCleanup(OdooEditor.prototype, { historyStep() { - this._super(...arguments); + super.historyStep(...arguments); if (historyStepPromise) { historyStepPromise.resolve(); } @@ -523,7 +523,7 @@ QUnit.module("WebEditor.HtmlField", ({ beforeEach }) => { const htmlFieldPromise = makeDeferred(); patchWithCleanup(HtmlField.prototype, { async startWysiwyg() { - await this._super(...arguments); + await super.startWysiwyg(...arguments); await nextTick(); htmlFieldPromise.resolve(this); } @@ -534,7 +534,7 @@ QUnit.module("WebEditor.HtmlField", ({ beforeEach }) => { }; patchWithCleanup(OdooEditor.prototype, { historyStep() { - this._super(...arguments); + super.historyStep(...arguments); if (historyStepPromise) { historyStepPromise.resolve(); } @@ -586,7 +586,7 @@ QUnit.module("WebEditor.HtmlField", ({ beforeEach }) => { const htmlFieldPromise = makeDeferred(); patchWithCleanup(HtmlField.prototype, { async startWysiwyg() { - await this._super(...arguments); + await super.startWysiwyg(...arguments); await nextTick(); htmlFieldPromise.resolve(this); } @@ -597,7 +597,7 @@ QUnit.module("WebEditor.HtmlField", ({ beforeEach }) => { }; patchWithCleanup(OdooEditor.prototype, { historyStep() { - this._super(...arguments); + super.historyStep(...arguments); if (historyStepPromise) { historyStepPromise.resolve(); } diff --git a/addons/web_editor/static/tests/test_utils.js b/addons/web_editor/static/tests/test_utils.js index 4a08a389de6..d15b4ae06d8 100644 --- a/addons/web_editor/static/tests/test_utils.js +++ b/addons/web_editor/static/tests/test_utils.js @@ -95,7 +95,7 @@ const SNIPPETS_TEMPLATE = `
`; -coreUtils.patch(MockServer.prototype, 'web_editor', { +coreUtils.patch(MockServer.prototype, { //-------------------------------------------------------------------------- // Private //-------------------------------------------------------------------------- @@ -114,7 +114,7 @@ coreUtils.patch(MockServer.prototype, 'web_editor', { return SNIPPETS_TEMPLATE; } } - return this._super(...arguments); + return super._performRPC(...arguments); }, }); MockServerLegacy.include({ diff --git a/addons/web_tour/static/tests/tour_service_tests.js b/addons/web_tour/static/tests/tour_service_tests.js index 6852a81d5c7..e58b2aa5651 100644 --- a/addons/web_tour/static/tests/tour_service_tests.js +++ b/addons/web_tour/static/tests/tour_service_tests.js @@ -58,7 +58,7 @@ QUnit.module("Tour service", (hooks) => { let macroEngines = []; patchWithCleanup(MacroEngine.prototype, { start() { - this._super(...arguments); + super.start(...arguments); macroEngines.push(this); } }); diff --git a/addons/website/static/src/components/media_dialog/image_selector.js b/addons/website/static/src/components/media_dialog/image_selector.js index e8421b106cc..34addcf12e2 100644 --- a/addons/website/static/src/components/media_dialog/image_selector.js +++ b/addons/website/static/src/components/media_dialog/image_selector.js @@ -1,11 +1,11 @@ /** @odoo-module **/ -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { ImageSelector } from '@web_editor/components/media_dialog/image_selector'; -patch(ImageSelector.prototype, 'media_dialog_website', { +patch(ImageSelector.prototype, { get attachmentsDomain() { - const domain = this._super(); + const domain = super.attachmentsDomain; domain.push('|', ['url', '=', false], '!', ['url', '=like', '/web/image/website.%']); domain.push(['key', '=', false]); return domain; diff --git a/addons/website/static/src/components/wysiwyg_adapter/toolbar_patch.js b/addons/website/static/src/components/wysiwyg_adapter/toolbar_patch.js index 09f65ed7098..c3ac54e89f0 100644 --- a/addons/website/static/src/components/wysiwyg_adapter/toolbar_patch.js +++ b/addons/website/static/src/components/wysiwyg_adapter/toolbar_patch.js @@ -3,11 +3,11 @@ import { patch } from "@web/core/utils/patch"; import { Toolbar } from "@web_editor/js/editor/toolbar"; -patch(Toolbar.props, 'toolbar_patch.js', { +patch(Toolbar.props, { ...Toolbar.props, showAnimateText: { type: Boolean, optional: true }, }); -patch(Toolbar.defaultProps, 'toolbar_patch.js', { +patch(Toolbar.defaultProps, { ...Toolbar.defaultProps, showAnimateText: false, }); diff --git a/addons/website/static/src/js/editor/editor.js b/addons/website/static/src/js/editor/editor.js index b9ed31f3b5d..9e6834d8817 100644 --- a/addons/website/static/src/js/editor/editor.js +++ b/addons/website/static/src/js/editor/editor.js @@ -5,9 +5,9 @@ import { patch } from "@web/core/utils/patch"; import { useService } from "@web/core/utils/hooks"; import wUtils from "@website/js/utils"; -patch(LinkDialog.prototype, "editor.js", { +patch(LinkDialog.prototype, { setup() { - this._super(...arguments); + super.setup(...arguments); this.rpc = useService("rpc"); }, /** @@ -15,11 +15,11 @@ patch(LinkDialog.prototype, "editor.js", { * * @override */ - start: async function () { + async start() { const options = { body: this.$link && this.$link[0].ownerDocument.body, }; - const result = await this._super.apply(this, arguments); + const result = await super.start(...arguments); // wUtils.autocompleteWithPages rely on a widget that has a _rpc and // trigger_up method. const fakeWidget = { diff --git a/addons/website/static/src/js/editor/widget_link.js b/addons/website/static/src/js/editor/widget_link.js index 60d41e478b0..a89644fdb54 100644 --- a/addons/website/static/src/js/editor/widget_link.js +++ b/addons/website/static/src/js/editor/widget_link.js @@ -9,11 +9,11 @@ import { debounce } from "@web/core/utils/timing"; const LINK_DEBOUNCE = 1000; -patch(LinkTools.prototype, 'website/static/src/js/editor/widget_link.js', { +patch(LinkTools.prototype, { setup() { this.rpc = useService('rpc'); this.rpc = this.env.services.rpc; - return this._super.apply(this, arguments); + return super.setup(...arguments); }, /** * @@ -21,7 +21,7 @@ patch(LinkTools.prototype, 'website/static/src/js/editor/widget_link.js', { */ onWillStart() { this._adaptPageAnchor = debounce(this._adaptPageAnchor, LINK_DEBOUNCE); - return this._super.apply(this, arguments); + return super.onWillStart(...arguments); }, /** * Allows the URL input to propose existing website pages. @@ -29,7 +29,7 @@ patch(LinkTools.prototype, 'website/static/src/js/editor/widget_link.js', { * @override */ async start() { - var def = await this._super.apply(this, arguments); + var def = await super.start(...arguments); const options = { position: { collision: 'flip flipfit', @@ -105,7 +105,7 @@ patch(LinkTools.prototype, 'website/static/src/js/editor/widget_link.js', { * @override */ _onURLInput() { - this._super.apply(this, arguments); + super._onURLInput(...arguments); this._adaptPageAnchor(); }, /** @@ -122,6 +122,6 @@ patch(LinkTools.prototype, 'website/static/src/js/editor/widget_link.js', { } $urlInput.val(urlInputValue + anchorValue); } - this._super(...arguments); + super._onPickSelectOption(...arguments); }, }); diff --git a/addons/website/static/src/js/widgets/link_popover_widget.js b/addons/website/static/src/js/widgets/link_popover_widget.js index 09eb039b3e8..3f609e62494 100644 --- a/addons/website/static/src/js/widgets/link_popover_widget.js +++ b/addons/website/static/src/js/widgets/link_popover_widget.js @@ -8,7 +8,7 @@ import { LinkPopoverWidget } from '@web_editor/js/wysiwyg/widgets/link_popover_w -patch(LinkPopoverWidget.prototype, 'website_link_popower_widget', { +patch(LinkPopoverWidget.prototype, { /** * @override */ @@ -24,7 +24,7 @@ patch(LinkPopoverWidget.prototype, 'website_link_popower_widget', { } this.$el.on('click', '.o_we_full_url, .o_we_url_link', this._onPreviewLinkClick.bind(this)); - return this._super(...arguments); + return super.start(...arguments); }, //-------------------------------------------------------------------------- diff --git a/addons/website/static/src/services/chat_window_service_patch.js b/addons/website/static/src/services/chat_window_service_patch.js index a98357ee819..1925108d726 100644 --- a/addons/website/static/src/services/chat_window_service_patch.js +++ b/addons/website/static/src/services/chat_window_service_patch.js @@ -4,8 +4,8 @@ import { ChatWindowService } from "@mail/core/common/chat_window_service"; import { patch } from "@web/core/utils/patch"; -patch(ChatWindowService.prototype, "website/chat_window_service", { +patch(ChatWindowService.prototype, { get visible() { - return this.env.services.website?.context.isPreviewOpen ? [] : this._super(); + return this.env.services.website?.context.isPreviewOpen ? [] : super.visible; }, }); diff --git a/addons/website/static/tests/tours/edit_link_popover.js b/addons/website/static/tests/tours/edit_link_popover.js index 755216269a6..0e1316882a4 100644 --- a/addons/website/static/tests/tours/edit_link_popover.js +++ b/addons/website/static/tests/tours/edit_link_popover.js @@ -191,7 +191,7 @@ wTourUtils.registerWebsitePreviewTour('edit_link_popover', { extra_trigger: 'iframe .o_edit_menu_popover a.o_we_full_url[target="_blank"]', run: (actions) => { // We do not want to open a link in a tour - patch(browser, 'window_open_action', { + patch(browser, { open: (url) => { if (window.location.hostname === url.hostname && url.pathname.startsWith('/@/')) { document.querySelector('body').classList.add('new_backend_window_opened'); diff --git a/addons/website/static/tests/website_service_mock.js b/addons/website/static/tests/website_service_mock.js index 1df207a6dcb..5e9298e9ee5 100644 --- a/addons/website/static/tests/website_service_mock.js +++ b/addons/website/static/tests/website_service_mock.js @@ -1,6 +1,6 @@ /** @odoo-module */ -import { patch } from '@web/core/utils/patch'; +import { patch } from "@web/core/utils/patch"; import { registry } from '@web/core/registry'; import { utils, clearRegistryWithCleanup } from '@web/../tests/helpers/mock_env'; @@ -40,7 +40,7 @@ function makeFakeWebsiteCustomMenusService() { } const serviceRegistry = registry.category('services'); -patch(utils, 'website_test_registries', { +patch(utils, { prepareRegistriesWithCleanup() { prepareRegistriesWithCleanup(...arguments); serviceRegistry.add('website', makeFakeWebsiteService()); diff --git a/addons/website_blog/static/src/js/wysiwyg.js b/addons/website_blog/static/src/js/wysiwyg.js index 81541282aee..e89def38a1e 100644 --- a/addons/website_blog/static/src/js/wysiwyg.js +++ b/addons/website_blog/static/src/js/wysiwyg.js @@ -4,19 +4,19 @@ import { WysiwygAdapterComponent } from '@website/components/wysiwyg_adapter/wys import "@website/js/editor/snippets.options"; import { patch } from "@web/core/utils/patch"; -patch(WysiwygAdapterComponent.prototype, 'website_blog/static/src/js/wysiwyg.js', { +patch(WysiwygAdapterComponent.prototype, { /** * @override */ init() { - this._super(...arguments); + super.init(...arguments); this.blogTagsPerBlogPost = {}; }, /** * @override */ async startEdition() { - await this._super(...arguments); + await super.startEdition(...arguments); $('.js_tweet, .js_comment').off('mouseup').trigger('mousedown'); }, @@ -28,7 +28,7 @@ patch(WysiwygAdapterComponent.prototype, 'website_blog/static/src/js/wysiwyg.js' * @override */ async _saveViewBlocks() { - const ret = await this._super(...arguments); + const ret = await super._saveViewBlocks(...arguments); await this._saveBlogTags(); // Note: important to be called after save otherwise cleanForSave is not called before return ret; }, @@ -77,7 +77,7 @@ patch(WysiwygAdapterComponent.prototype, 'website_blog/static/src/js/wysiwyg.js' this._onSetBlogPostUpdatedTags(ev); return; } else { - return this._super(...arguments); + return super._trigger_up(...arguments); } }, }); diff --git a/addons/website_livechat/static/src/core/channel_member_model_patch.js b/addons/website_livechat/static/src/core/channel_member_model_patch.js index 51aaab9e4b9..d728cd7c31d 100644 --- a/addons/website_livechat/static/src/core/channel_member_model_patch.js +++ b/addons/website_livechat/static/src/core/channel_member_model_patch.js @@ -3,11 +3,11 @@ import { ChannelMember } from "@mail/core/common/channel_member_model"; import { patch } from "@web/core/utils/patch"; -patch(ChannelMember.prototype, "website_livechat", { +patch(ChannelMember.prototype, { getLangName() { if (this.persona.is_public && this.thread.visitor?.langName) { return this.thread.visitor.langName; } - return this._super(this); + return super.getLangName(); }, }); diff --git a/addons/website_livechat/static/src/core/persona_model_patch.js b/addons/website_livechat/static/src/core/persona_model_patch.js index c696424318a..591c810a950 100644 --- a/addons/website_livechat/static/src/core/persona_model_patch.js +++ b/addons/website_livechat/static/src/core/persona_model_patch.js @@ -5,7 +5,7 @@ import { _t } from "@web/core/l10n/translation"; import { patch } from "@web/core/utils/patch"; import { sprintf } from "@web/core/utils/strings"; -patch(Persona.prototype, "website_livechat", { +patch(Persona.prototype, { get countryFlagUrl() { const country = this.partner?.country ?? this.country; return country @@ -16,6 +16,6 @@ patch(Persona.prototype, "website_livechat", { if (this.type === "visitor" && !this.name) { return sprintf(_t("Visitor #%s"), this.id); } - return this._super(); + return super.nameOrDisplayName; }, }); diff --git a/addons/website_livechat/static/src/core/persona_service_patch.js b/addons/website_livechat/static/src/core/persona_service_patch.js index 391bbf57c79..39405dd9017 100644 --- a/addons/website_livechat/static/src/core/persona_service_patch.js +++ b/addons/website_livechat/static/src/core/persona_service_patch.js @@ -3,9 +3,9 @@ import { PersonaService } from "@mail/core/common/persona_service"; import { patch } from "@web/core/utils/patch"; -patch(PersonaService.prototype, "website_livechat", { +patch(PersonaService.prototype, { update(persona, data) { - this._super(persona, data); + super.update(persona, data); if (persona.type === "visitor") { persona.history = data.history ?? persona.history; persona.isConnected = data.is_connected ?? persona.isConnected; diff --git a/addons/website_livechat/static/src/core/thread_service_patch.js b/addons/website_livechat/static/src/core/thread_service_patch.js index fdf48a1342a..205d852adf9 100644 --- a/addons/website_livechat/static/src/core/thread_service_patch.js +++ b/addons/website_livechat/static/src/core/thread_service_patch.js @@ -4,9 +4,9 @@ import { DEFAULT_AVATAR } from "@mail/core/common/persona_service"; import { ThreadService } from "@mail/core/common/thread_service"; import { patch } from "@web/core/utils/patch"; -patch(ThreadService.prototype, "website_livechat", { +patch(ThreadService.prototype, { update(thread, data) { - this._super(thread, data); + super.update(thread, data); if (data?.visitor) { thread.visitor = this.personaService.insert({ ...data.visitor, @@ -26,6 +26,6 @@ patch(ThreadService.prototype, "website_livechat", { )}/avatar_128` : DEFAULT_AVATAR; } - return this._super(persona, thread); + return super.avatarUrl(persona, thread); }, }); diff --git a/addons/website_livechat/static/src/embed/livechat_button_patch.js b/addons/website_livechat/static/src/embed/livechat_button_patch.js index 10368ad7b74..021e875b00f 100644 --- a/addons/website_livechat/static/src/embed/livechat_button_patch.js +++ b/addons/website_livechat/static/src/embed/livechat_button_patch.js @@ -4,7 +4,7 @@ import { LivechatButton } from "@im_livechat/embed/core_ui/livechat_button"; import { patch } from "@web/core/utils/patch"; -patch(LivechatButton.prototype, "website_livechat", { +patch(LivechatButton.prototype, { get text() { return ""; }, diff --git a/addons/website_livechat/static/src/embed/livechat_service_patch.js b/addons/website_livechat/static/src/embed/livechat_service_patch.js index 8298b50534f..34809d44368 100644 --- a/addons/website_livechat/static/src/embed/livechat_service_patch.js +++ b/addons/website_livechat/static/src/embed/livechat_service_patch.js @@ -3,9 +3,9 @@ import { LivechatService } from "@im_livechat/embed/core/livechat_service"; import { patch } from "@web/core/utils/patch"; -patch(LivechatService.prototype, "website_livechat/livechat_service", { +patch(LivechatService.prototype, { setup(env, services) { - this._super(env, services); + super.setup(env, services); if (this.options?.chat_request_session) { this.updateSession(this.options.chat_request_session); } @@ -14,7 +14,7 @@ patch(LivechatService.prototype, "website_livechat/livechat_service", { get displayWelcomeMessage() { return ( (this.thread.messages.length === 0 || this.thread?.messages[0]?.isSelfAuthored) && - this._super() + super.displayWelcomeMessage ); }, }); diff --git a/addons/website_livechat/static/tests/helpers/mock_server/controllers/dataset.js b/addons/website_livechat/static/tests/helpers/mock_server/controllers/dataset.js index 570b8e57b11..cdfffc2f8ce 100644 --- a/addons/website_livechat/static/tests/helpers/mock_server/controllers/dataset.js +++ b/addons/website_livechat/static/tests/helpers/mock_server/controllers/dataset.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "website_livechat/controllers/dataset", { +patch(MockServer.prototype, { /** * @override */ @@ -15,6 +15,6 @@ patch(MockServer.prototype, "website_livechat/controllers/dataset", { ) { return this._mockWebsiteVisitorActionSendChatRequest(args[0]); } - return this._super(...arguments); + return super._performRPC(...arguments); }, }); diff --git a/addons/website_livechat/static/tests/helpers/mock_server/models/discuss_channel.js b/addons/website_livechat/static/tests/helpers/mock_server/models/discuss_channel.js index 4c877f0e0c9..0ebdc770046 100644 --- a/addons/website_livechat/static/tests/helpers/mock_server/models/discuss_channel.js +++ b/addons/website_livechat/static/tests/helpers/mock_server/models/discuss_channel.js @@ -5,14 +5,14 @@ import "@im_livechat/../tests/helpers/mock_server/models/discuss_channel"; // en import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "website_livechat/models/discuss_channel", { +patch(MockServer.prototype, { /** * Overrides to add visitor information to livechat channels. * * @override */ _mockDiscussChannelChannelInfo(ids) { - const channelInfos = this._super(...arguments); + const channelInfos = super._mockDiscussChannelChannelInfo(...arguments); for (const channelInfo of channelInfos) { const channel = this.getRecords("discuss.channel", [["id", "=", channelInfo.id]])[0]; if (channel.channel_type === "livechat" && channel.livechat_visitor_id) { diff --git a/addons/website_livechat/static/tests/helpers/mock_server/models/website_visitor.js b/addons/website_livechat/static/tests/helpers/mock_server/models/website_visitor.js index 2db2fed005b..4168043eac1 100644 --- a/addons/website_livechat/static/tests/helpers/mock_server/models/website_visitor.js +++ b/addons/website_livechat/static/tests/helpers/mock_server/models/website_visitor.js @@ -3,7 +3,7 @@ import { patch } from "@web/core/utils/patch"; import { MockServer } from "@web/../tests/helpers/mock_server"; -patch(MockServer.prototype, "website_livechat/models/website_visitor", { +patch(MockServer.prototype, { /** * @private * @param {integer[]} ids diff --git a/addons/website_livechat/static/tests/tours/website_livechat_common.js b/addons/website_livechat/static/tests/tours/website_livechat_common.js index b8db81dd607..a66cc0f3fcb 100644 --- a/addons/website_livechat/static/tests/tours/website_livechat_common.js +++ b/addons/website_livechat/static/tests/tours/website_livechat_common.js @@ -3,10 +3,10 @@ import { patch } from "@web/core/utils/patch"; import { RATING, LivechatService } from "@im_livechat/embed/core/livechat_service"; -patch(LivechatService.prototype, "website_livechat", { +patch(LivechatService.prototype, { sendFeedback() { document.body.classList.add("feedback_sent"); - return this._super(...arguments); + return super.sendFeedback(...arguments); }, }); diff --git a/addons/website_sale/static/src/js/website_sale.editor.js b/addons/website_sale/static/src/js/website_sale.editor.js index 584043b7cd7..da376040f1e 100644 --- a/addons/website_sale/static/src/js/website_sale.editor.js +++ b/addons/website_sale/static/src/js/website_sale.editor.js @@ -13,12 +13,12 @@ import "@website/js/editor/snippets.options"; import { patch } from "@web/core/utils/patch"; const { onRendered } = owl; -patch(WysiwygAdapterComponent.prototype, 'website_sale/static/src/js/website_sale.editor.js', { +patch(WysiwygAdapterComponent.prototype, { /** * @override */ async init() { - await this._super(...arguments); + await super.init(...arguments); let ribbons = []; if (this._isProductListPage()) { @@ -40,9 +40,8 @@ patch(WysiwygAdapterComponent.prototype, 'website_sale/static/src/js/website_sal * @override */ async _saveViewBlocks() { - const _super = this._super.bind(this); await this._saveRibbons(); - return _super(...arguments); + return super._saveViewBlocks(...arguments); }, //-------------------------------------------------------------------------- @@ -206,7 +205,7 @@ patch(WysiwygAdapterComponent.prototype, 'website_sale/static/src/js/website_sal if (methods[ev.name]) { return methods[ev.name](ev); } else { - return this._super(...arguments); + return super._trigger_up(...arguments); } } }); diff --git a/addons/website_sale_product_configurator/static/tests/tours/website_sale_buy.js b/addons/website_sale_product_configurator/static/tests/tours/website_sale_buy.js index cbf70869879..f1aedd50c84 100644 --- a/addons/website_sale_product_configurator/static/tests/tours/website_sale_buy.js +++ b/addons/website_sale_product_configurator/static/tests/tours/website_sale_buy.js @@ -7,9 +7,9 @@ import { registry } from "@web/core/registry"; import { patch } from "@web/core/utils/patch"; import "@website_sale/../tests/tours/website_sale_buy"; -patch(registry.category("web_tour.tours").get("shop_buy_product"), "patch_shop_buy_product", { +patch(registry.category("web_tour.tours").get("shop_buy_product"), { steps() { - const originalSteps = this._super(); + const originalSteps = super.steps(); const addCartStepIndex = originalSteps.findIndex((step) => step.id === "add_cart_step"); originalSteps.splice(addCartStepIndex + 1, 1, { content: "click in modal on 'Proceed to checkout' button", diff --git a/addons/website_sale_stock/static/src/js/website_sale_reorder.js b/addons/website_sale_stock/static/src/js/website_sale_reorder.js index 8b0465069cd..2b50d146c98 100644 --- a/addons/website_sale_stock/static/src/js/website_sale_reorder.js +++ b/addons/website_sale_stock/static/src/js/website_sale_reorder.js @@ -4,12 +4,12 @@ import { ReorderDialog } from "@website_sale/js/website_sale_reorder"; import { patch } from "@web/core/utils/patch"; import { sprintf } from "@web/core/utils/strings"; -patch(ReorderDialog.prototype, "website_sale_stock_reorder", { +patch(ReorderDialog.prototype, { /** * @override */ async onWillStartHandler() { - const res = await this._super(...arguments); + const res = await super.onWillStartHandler(...arguments); for (const product of this.content.products) { this.stockCheckCombinationInfo(product); } @@ -20,7 +20,7 @@ patch(ReorderDialog.prototype, "website_sale_stock_reorder", { * @override */ async loadProductCombinationInfo(product) { - await this._super(...arguments); + await super.loadProductCombinationInfo(...arguments); }, stockCheckCombinationInfo(product) { @@ -55,7 +55,7 @@ patch(ReorderDialog.prototype, "website_sale_stock_reorder", { if (product.hasOwnProperty("max_quantity_available") && !product.max_quantity_available) { return this.env._t("This product is out of stock."); } - return this._super(...arguments); + return super.getWarningForProduct(...arguments); }, /** @@ -74,6 +74,6 @@ patch(ReorderDialog.prototype, "website_sale_stock_reorder", { product.qty_warning = false; product.stock_warning = false; } - this._super(product, newQty); + super.changeProductQty(product, newQty); }, }); diff --git a/addons/website_slides/static/src/activity/activity_patch.js b/addons/website_slides/static/src/activity/activity_patch.js index c0a3687a232..b218a2d30d7 100644 --- a/addons/website_slides/static/src/activity/activity_patch.js +++ b/addons/website_slides/static/src/activity/activity_patch.js @@ -28,4 +28,4 @@ const ActivityPatch = { }, }; -patch(Activity.prototype, "website_slides", ActivityPatch); +patch(Activity.prototype, ActivityPatch);