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_expense/static/src/mixins/document_upload.js b/addons/hr_expense/static/src/mixins/document_upload.js
index bbcf300bc64..aa0be016e3f 100644
--- a/addons/hr_expense/static/src/mixins/document_upload.js
+++ b/addons/hr_expense/static/src/mixins/document_upload.js
@@ -4,9 +4,9 @@ import { useBus, useService } from '@web/core/utils/hooks';
const { useRef, useEffect, useState } = owl;
-export const ExpenseDocumentDropZone = {
+export const ExpenseDocumentDropZone = (T) => class ExpenseDocumentDropZone extends T {
setup() {
- this._super();
+ super.setup();
this.dragState = useState({
showDragZone: false,
});
@@ -31,31 +31,31 @@ export const ExpenseDocumentDropZone = {
},
() => [document.querySelector('.o_content')]
);
- },
+ }
highlight(ev) {
ev.stopPropagation();
ev.preventDefault();
this.dragState.showDragZone = true;
- },
+ }
unhighlight(ev) {
ev.stopPropagation();
ev.preventDefault();
this.dragState.showDragZone = false;
- },
+ }
async onDrop(ev) {
ev.preventDefault();
await this.env.bus.trigger("change_file_input", {
files: ev.dataTransfer.files,
});
- },
+ }
};
-export const ExpenseDocumentUpload = {
+export const ExpenseDocumentUpload = (T) => class ExpenseDocumentUpload extends T {
setup() {
- this._super();
+ super.setup();
this.actionService = useService('action');
this.notification = useService('notification');
this.orm = useService('orm');
@@ -67,11 +67,11 @@ export const ExpenseDocumentUpload = {
this.fileInput.el.files = ev.detail.files;
await this.onChangeFileInput();
});
- },
+ }
uploadDocument() {
this.fileInput.el.click();
- },
+ }
async onChangeFileInput() {
const params = {
@@ -87,7 +87,7 @@ export const ExpenseDocumentUpload = {
throw new Error(attachments.error);
}
this.onUpload(attachments);
- },
+ }
async onUpload(attachments) {
const attachmentIds = attachments.map((a) => a.id);
@@ -100,5 +100,5 @@ export const ExpenseDocumentUpload = {
const action = await this.orm.call('hr.expense', 'create_expense_from_attachments', ["", attachmentIds]);
this.actionService.doAction(action);
- },
+ }
};
diff --git a/addons/hr_expense/static/src/mixins/qrcode.js b/addons/hr_expense/static/src/mixins/qrcode.js
index 8d7bd395f0f..6c398ed9fc4 100644
--- a/addons/hr_expense/static/src/mixins/qrcode.js
+++ b/addons/hr_expense/static/src/mixins/qrcode.js
@@ -4,15 +4,15 @@ import { useService } from "@web/core/utils/hooks";
const { onMounted, onPatched, useRef } = owl;
-export const ExpenseMobileQRCode = {
+export const ExpenseMobileQRCode = (T) => class ExpenseMobileQRCode extends T {
setup() {
- this._super();
+ super.setup();
this.root = useRef('root');
this.actionService = useService('action');
onMounted(this.bindAppsIcons);
onPatched(this.bindAppsIcons);
- },
+ }
bindAppsIcons() {
const apps = this.root.el.querySelectorAll('.o_expense_mobile_app');
@@ -24,7 +24,7 @@ export const ExpenseMobileQRCode = {
for (const app of apps) {
app.addEventListener('click', handler);
}
- },
+ }
handleClick(ev) {
ev.preventDefault();
diff --git a/addons/hr_expense/static/src/views/kanban.js b/addons/hr_expense/static/src/views/kanban.js
index 8b56bcbc758..b9b7f15d535 100644
--- a/addons/hr_expense/static/src/views/kanban.js
+++ b/addons/hr_expense/static/src/views/kanban.js
@@ -1,7 +1,6 @@
/** @odoo-module */
import { registry } from '@web/core/registry';
-import { patch } from '@web/core/utils/patch';
import { ExpenseDashboard } from '../components/expense_dashboard';
import { ExpenseMobileQRCode } from '../mixins/qrcode';
@@ -11,12 +10,9 @@ import { kanbanView } from '@web/views/kanban/kanban_view';
import { KanbanController } from '@web/views/kanban/kanban_controller';
import { KanbanRenderer } from '@web/views/kanban/kanban_renderer';
-export class ExpenseKanbanController extends KanbanController {}
-patch(ExpenseKanbanController.prototype, 'expense_kanban_controller_upload', ExpenseDocumentUpload);
+export class ExpenseKanbanController extends ExpenseDocumentUpload(KanbanController) {}
-export class ExpenseKanbanRenderer extends KanbanRenderer {}
-patch(ExpenseKanbanRenderer.prototype, 'expense_kanban_renderer_qrcode', ExpenseMobileQRCode);
-patch(ExpenseKanbanRenderer.prototype, 'expense_kanban_renderer_qrcode_dzone', ExpenseDocumentDropZone);
+export class ExpenseKanbanRenderer extends ExpenseDocumentDropZone(ExpenseMobileQRCode(KanbanRenderer)) {}
ExpenseKanbanRenderer.template = 'hr_expense.KanbanRenderer';
export class ExpenseDashboardKanbanRenderer extends ExpenseKanbanRenderer {}
diff --git a/addons/hr_expense/static/src/views/list.js b/addons/hr_expense/static/src/views/list.js
index b6b8ad307be..c9a4778162d 100644
--- a/addons/hr_expense/static/src/views/list.js
+++ b/addons/hr_expense/static/src/views/list.js
@@ -5,7 +5,6 @@ import { ExpenseMobileQRCode } from '../mixins/qrcode';
import { ExpenseDocumentUpload, ExpenseDocumentDropZone } from '../mixins/document_upload';
import { registry } from '@web/core/registry';
-import { patch } from '@web/core/utils/patch';
import { useService } from '@web/core/utils/hooks';
import { listView } from "@web/views/list/list_view";
@@ -14,7 +13,7 @@ import { ListRenderer } from "@web/views/list/list_renderer";
const { onWillStart } = owl;
-export class ExpenseListController extends ListController {
+export class ExpenseListController extends ExpenseDocumentUpload(ListController) {
setup() {
super.setup();
this.orm = useService('orm');
@@ -81,11 +80,8 @@ export class ExpenseListController extends ListController {
}
}
}
-patch(ExpenseListController.prototype, 'expense_list_controller_upload', ExpenseDocumentUpload);
-export class ExpenseListRenderer extends ListRenderer {}
-patch(ExpenseListRenderer.prototype, 'expense_list_renderer_qrcode', ExpenseMobileQRCode);
-patch(ExpenseListRenderer.prototype, 'expense_list_renderer_qrcode_dzone', ExpenseDocumentDropZone);
+export class ExpenseListRenderer extends ExpenseDocumentDropZone(ExpenseMobileQRCode(ListRenderer)) {}
ExpenseListRenderer.template = 'hr_expense.ListRenderer';
export class ExpenseDashboardListRenderer extends ExpenseListRenderer {}
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/lunch/static/src/mixins/lunch_renderer_mixin.js b/addons/lunch/static/src/mixins/lunch_renderer_mixin.js
index b27b8fd57c4..dee5d86372e 100644
--- a/addons/lunch/static/src/mixins/lunch_renderer_mixin.js
+++ b/addons/lunch/static/src/mixins/lunch_renderer_mixin.js
@@ -2,13 +2,13 @@
import { useBus, useService } from "@web/core/utils/hooks";
-export const LunchRendererMixin = {
+export const LunchRendererMixin = (T) => class LunchRendererMixin extends T {
setup() {
- this._super(...arguments);
+ super.setup(...arguments);
this.action = useService("action");
useBus(this.env.bus, 'lunch_open_order', (ev) => this.openOrderLine(ev.detail.productId));
- },
+ }
openOrderLine(productId, orderId) {
let context = {};
@@ -36,5 +36,5 @@ export const LunchRendererMixin = {
this.action.doAction(action, {
onClose: () => this.env.bus.trigger('lunch_update_dashboard')
});
- },
-}
+ }
+};
diff --git a/addons/lunch/static/src/views/kanban.js b/addons/lunch/static/src/views/kanban.js
index 2f49d27fef3..a3d67523a05 100644
--- a/addons/lunch/static/src/views/kanban.js
+++ b/addons/lunch/static/src/views/kanban.js
@@ -1,6 +1,5 @@
/** @odoo-module */
-import { patch } from '@web/core/utils/patch';
import { registry } from '@web/core/registry';
import { kanbanView } from '@web/views/kanban/kanban_view';
@@ -19,8 +18,7 @@ export class LunchKanbanRecord extends KanbanRecord {
}
}
-export class LunchKanbanRenderer extends KanbanRenderer {}
-patch(LunchKanbanRenderer.prototype, 'lunch_kanban_renderer_mixin', LunchRendererMixin);
+export class LunchKanbanRenderer extends LunchRendererMixin(KanbanRenderer) {}
LunchKanbanRenderer.template = 'lunch.KanbanRenderer';
LunchKanbanRenderer.components = {
diff --git a/addons/lunch/static/src/views/list.js b/addons/lunch/static/src/views/list.js
index 09661d84592..b3767ab14e9 100644
--- a/addons/lunch/static/src/views/list.js
+++ b/addons/lunch/static/src/views/list.js
@@ -1,6 +1,5 @@
/** @odoo-module */
-import { patch } from '@web/core/utils/patch';
import { registry } from '@web/core/registry';
import { listView } from '@web/views/list/list_view';
@@ -12,12 +11,11 @@ import { LunchRendererMixin } from '../mixins/lunch_renderer_mixin';
import { LunchSearchModel } from './search_model';
-export class LunchListRenderer extends ListRenderer {
+export class LunchListRenderer extends LunchRendererMixin(ListRenderer) {
onCellClicked(record, column) {
this.openOrderLine(record.resId);
}
}
-patch(LunchListRenderer.prototype, 'lunch_list_renderer_mixin', LunchRendererMixin);
LunchListRenderer.template = 'lunch.ListRenderer';
LunchListRenderer.components = {
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/emojis_mixin.js b/addons/mail/static/src/js/emojis_mixin.js
index 4edea5f5670..6d30188564e 100644
--- a/addons/mail/static/src/js/emojis_mixin.js
+++ b/addons/mail/static/src/js/emojis_mixin.js
@@ -3,36 +3,24 @@
import { escape } from "@web/core/utils/strings";
/**
- * This mixin gathers a few methods that are used to handle emojis.
+ * Adds a span with a CSS class around chains of emojis in the message for styling purposes.
+ * The input is first passed through 'escape' to prevent unwanted injections into the HTML
*
- * It's currently used to format text and wrap the emojis around to make them look nicer
+ * Sequences of emojis are wrapped instead of individual ones to prevent compound emojis
+ * such as 👩🏿 = 👩 + 🏿 [dark skin tone character] from being separated.
*
+ * This will only match characters that have a different presentation from normal text, unlike ®
+ * For alternatives, see: https://www.unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files
+ *
+ * @param {String} message a text message to format
*/
-export default {
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
+export function formatText(message) {
+ message = escape(message);
+ message = message.replaceAll(
+ /(\p{Emoji_Presentation}+)/gu,
+ "$1"
+ );
+ message = message.replace(/(?:\r\n|\r|\n)/g, "
");
- /**
- * Adds a span with a CSS class around chains of emojis in the message for styling purposes.
- * The input is first passed through 'escape' to prevent unwanted injections into the HTML
- *
- * Sequences of emojis are wrapped instead of individual ones to prevent compound emojis
- * such as 👩🏿 = 👩 + 🏿 [dark skin tone character] from being separated.
- *
- * This will only match characters that have a different presentation from normal text, unlike ®
- * For alternatives, see: https://www.unicode.org/reports/tr51/#Emoji_Properties_and_Data_Files
- *
- * @param {String} message a text message to format
- */
- _formatText(message) {
- message = escape(message);
- message = message.replaceAll(
- /(\p{Emoji_Presentation}+)/gu,
- "$1"
- );
- message = message.replace(/(?:\r\n|\r|\n)/g, "
");
-
- return message;
- },
-};
+ return message;
+}
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/emojis_char_field/emojis_char_field.js b/addons/mail/static/src/views/web/fields/emojis_char_field/emojis_char_field.js
index a94558cbea0..a4c0f1b968f 100644
--- a/addons/mail/static/src/views/web/fields/emojis_char_field/emojis_char_field.js
+++ b/addons/mail/static/src/views/web/fields/emojis_char_field/emojis_char_field.js
@@ -1,18 +1,16 @@
/* @odoo-module */
-import MailEmojisMixin from "@mail/js/emojis_mixin";
import { EmojisFieldCommon } from "@mail/views/web/fields/emojis_field_common/emojis_field_common";
import { useRef } from "@odoo/owl";
import { registry } from "@web/core/registry";
-import { patch } from "@web/core/utils/patch";
import { CharField, charField } from "@web/views/fields/char/char_field";
/**
* Extension of the FieldChar that will add emojis support
*/
-export class EmojisCharField extends CharField {
+export class EmojisCharField extends EmojisFieldCommon(CharField) {
setup() {
super.setup();
this.targetEditElement = useRef("input");
@@ -20,8 +18,6 @@ export class EmojisCharField extends CharField {
}
}
-patch(EmojisCharField.prototype, "emojis_char_field_mail_mixin", MailEmojisMixin);
-patch(EmojisCharField.prototype, "emojis_char_field_field_mixin", EmojisFieldCommon);
EmojisCharField.template = "mail.EmojisCharField";
EmojisCharField.components = { ...CharField.components };
diff --git a/addons/mail/static/src/views/web/fields/emojis_field_common/emojis_field_common.js b/addons/mail/static/src/views/web/fields/emojis_field_common/emojis_field_common.js
index 37bdb7727d4..7af8afa321b 100644
--- a/addons/mail/static/src/views/web/fields/emojis_field_common/emojis_field_common.js
+++ b/addons/mail/static/src/views/web/fields/emojis_field_common/emojis_field_common.js
@@ -7,7 +7,7 @@ import { useRef } from "@odoo/owl";
/*
* Common code for EmojisTextField and EmojisCharField
*/
-export const EmojisFieldCommon = {
+export const EmojisFieldCommon = (T) => class EmojisFieldCommon extends T {
/**
* Create an emoji textfield view to enable opening an emoji popover
*/
@@ -38,5 +38,5 @@ export const EmojisFieldCommon = {
position: "bottom",
}
);
- },
+ }
};
diff --git a/addons/mail/static/src/views/web/fields/emojis_text_field/emojis_text_field.js b/addons/mail/static/src/views/web/fields/emojis_text_field/emojis_text_field.js
index dbb809b476e..6bedcf7c5e6 100644
--- a/addons/mail/static/src/views/web/fields/emojis_text_field/emojis_text_field.js
+++ b/addons/mail/static/src/views/web/fields/emojis_text_field/emojis_text_field.js
@@ -1,16 +1,14 @@
/* @odoo-module */
-import MailEmojisMixin from "@mail/js/emojis_mixin";
import { EmojisFieldCommon } from "@mail/views/web/fields/emojis_field_common/emojis_field_common";
import { registry } from "@web/core/registry";
-import { patch } from "@web/core/utils/patch";
import { TextField, textField } from "@web/views/fields/text/text_field";
/**
* Extension of the FieldText that will add emojis support
*/
-export class EmojisTextField extends TextField {
+export class EmojisTextField extends EmojisFieldCommon(TextField) {
setup() {
super.setup();
this.targetEditElement = this.textareaRef;
@@ -18,8 +16,6 @@ export class EmojisTextField extends TextField {
}
}
-patch(EmojisTextField.prototype, "emojis_char_field_mail_mixin", MailEmojisMixin);
-patch(EmojisTextField.prototype, "emojis_text_field_field_mixin", EmojisFieldCommon);
EmojisTextField.template = "mail.EmojisTextField";
EmojisTextField.components = { ...TextField.components };
diff --git a/addons/mail/static/src/views/web/fields/many2many_avatar_user_field/many2many_avatar_user_field.js b/addons/mail/static/src/views/web/fields/many2many_avatar_user_field/many2many_avatar_user_field.js
index 0b29e9be0be..eb9d959b0a9 100644
--- a/addons/mail/static/src/views/web/fields/many2many_avatar_user_field/many2many_avatar_user_field.js
+++ b/addons/mail/static/src/views/web/fields/many2many_avatar_user_field/many2many_avatar_user_field.js
@@ -5,7 +5,6 @@ import { useAssignUserCommand } from "@mail/views/web/fields/assign_user_command
import { registry } from "@web/core/registry";
import { TagsList } from "@web/core/tags_list/tags_list";
-import { patch } from "@web/core/utils/patch";
import { usePopover } from "@web/core/popover/popover_hook";
import { browser } from "@web/core/browser/browser";
import { AvatarCardPopover } from "@mail/discuss/web/avatar_card/avatar_card_popover";
@@ -22,9 +21,9 @@ import {
export class Many2ManyAvatarUserTagsList extends TagsList {}
Many2ManyAvatarUserTagsList.template = "mail.Many2ManyAvatarUserTagsList";
-const userChatter = {
+const WithUserChatter = (T) => class UserChatterMixin extends T {
setup() {
- this._super(...arguments);
+ super.setup(...arguments);
this.openChat = useOpenChat(this.relation);
if (this.props.withCommand) {
useAssignUserCommand();
@@ -34,11 +33,11 @@ const userChatter = {
});
this.openTimeout = false;
this.lastOpenedId = 0;
- },
+ }
getTagProps(record) {
return {
- ...this._super(...arguments),
+ ...super.getTagProps(...arguments),
onImageClicked: () => this.openChat(record.resId),
openCard: (ev) => {
if (this.env.isSmall || this.relation !== "res.users") {
@@ -62,15 +61,15 @@ const userChatter = {
delete this.openTimeout;
},
};
- },
-};
-export class Many2ManyTagsAvatarUserField extends Many2ManyTagsAvatarField {
+ }
+}
+
+export class Many2ManyTagsAvatarUserField extends WithUserChatter(Many2ManyTagsAvatarField) {
static components = {
...Many2ManyTagsAvatarField.components,
TagsList: Many2ManyAvatarUserTagsList,
};
}
-patch(Many2ManyTagsAvatarUserField.prototype, "mail/fields/web", userChatter);
export const many2ManyTagsAvatarUserField = {
...many2ManyTagsAvatarField,
@@ -84,7 +83,7 @@ export class KanbanMany2ManyAvatarUserTagsList extends KanbanMany2ManyTagsAvatar
static template = "mail.KanbanMany2ManyAvatarUserTagsList";
}
-export class KanbanMany2ManyTagsAvatarUserField extends KanbanMany2ManyTagsAvatarField {
+export class KanbanMany2ManyTagsAvatarUserField extends WithUserChatter(KanbanMany2ManyTagsAvatarField) {
static template = "mail.KanbanMany2ManyTagsAvatarUserField";
static components = {
...KanbanMany2ManyTagsAvatarField.components,
@@ -94,7 +93,6 @@ export class KanbanMany2ManyTagsAvatarUserField extends KanbanMany2ManyTagsAvata
return !this.props.readonly;
}
}
-patch(KanbanMany2ManyTagsAvatarUserField.prototype, "mail/fields/web", userChatter);
export const kanbanMany2ManyTagsAvatarUserField = {
...kanbanMany2ManyTagsAvatarField,
component: KanbanMany2ManyTagsAvatarUserField,
@@ -102,7 +100,7 @@ export const kanbanMany2ManyTagsAvatarUserField = {
};
registry.category("fields").add("kanban.many2many_avatar_user", kanbanMany2ManyTagsAvatarUserField);
-export class ListMany2ManyTagsAvatarUserField extends ListMany2ManyTagsAvatarField {
+export class ListMany2ManyTagsAvatarUserField extends WithUserChatter(ListMany2ManyTagsAvatarField) {
static template = "mail.ListMany2ManyTagsAvatarUserField";
static components = {
...ListMany2ManyTagsAvatarField.components,
@@ -113,7 +111,6 @@ export class ListMany2ManyTagsAvatarUserField extends ListMany2ManyTagsAvatarFie
return this.props.record.data[this.props.name].records.length === 1 || !this.props.readonly;
}
}
-patch(ListMany2ManyTagsAvatarUserField.prototype, "mail/fields/web", userChatter);
export const listMany2ManyTagsAvatarUserField = {
...listMany2ManyTagsAvatarField,
diff --git a/addons/mail/static/src/views/web/fields/many2one_avatar_user_field/many2one_avatar_user_field.js b/addons/mail/static/src/views/web/fields/many2one_avatar_user_field/many2one_avatar_user_field.js
index 5a4bf43563b..0705e26e2b7 100644
--- a/addons/mail/static/src/views/web/fields/many2one_avatar_user_field/many2one_avatar_user_field.js
+++ b/addons/mail/static/src/views/web/fields/many2one_avatar_user_field/many2one_avatar_user_field.js
@@ -5,7 +5,6 @@ import { useAssignUserCommand } from "@mail/views/web/fields/assign_user_command
import { _t } from "@web/core/l10n/translation";
import { registry } from "@web/core/registry";
-import { patch } from "@web/core/utils/patch";
import {
Many2OneAvatarField,
many2OneAvatarField,
@@ -16,9 +15,9 @@ import { usePopover } from "@web/core/popover/popover_hook";
import { browser } from "@web/core/browser/browser";
import { AvatarCardPopover } from "@mail/discuss/web/avatar_card/avatar_card_popover";
-const userChatter = {
+const WithUserChatter = (T) => class extends T {
setup() {
- this._super(...arguments);
+ super.setup(...arguments);
this.openChat = useOpenChat(this.relation);
if (this.props.withCommand) {
useAssignUserCommand();
@@ -27,14 +26,14 @@ const userChatter = {
closeOnHoverAway: true,
});
this.openTimeout = false;
- },
+ }
onClickAvatar() {
const id = this.props.record.data[this.props.name][0] ?? false;
if (id !== false) {
this.openChat(id);
}
- },
+ }
openCard(ev) {
if (this.env.isSmall || this.relation !== "res.users") {
@@ -51,15 +50,15 @@ const userChatter = {
});
}
}, 350);
- },
+ }
clearTimeout() {
browser.clearTimeout(this.openTimeout);
delete this.openTimeout;
- },
+ }
};
-export class Many2OneAvatarUserField extends Many2OneAvatarField {
+export class Many2OneAvatarUserField extends WithUserChatter(Many2OneAvatarField) {
static template = "mail.Many2OneAvatarUserField";
static props = {
...Many2OneAvatarField.props,
@@ -68,7 +67,6 @@ export class Many2OneAvatarUserField extends Many2OneAvatarField {
withCommand: { type: Boolean, optional: true },
};
}
-patch(Many2OneAvatarUserField.prototype, "mail/fields/web", userChatter);
export const many2OneAvatarUserField = {
...many2OneAvatarField,
@@ -85,7 +83,7 @@ export const many2OneAvatarUserField = {
registry.category("fields").add("many2one_avatar_user", many2OneAvatarUserField);
-export class KanbanMany2OneAvatarUserField extends KanbanMany2OneAvatarField {
+export class KanbanMany2OneAvatarUserField extends WithUserChatter(KanbanMany2OneAvatarField) {
static template = "mail.KanbanMany2OneAvatarUserField";
static props = {
...KanbanMany2OneAvatarField.props,
@@ -101,7 +99,6 @@ export class KanbanMany2OneAvatarUserField extends KanbanMany2OneAvatarField {
return props;
}
}
-patch(KanbanMany2OneAvatarUserField.prototype, "mail/fields/web", userChatter);
export const kanbanMany2OneAvatarUserField = {
...kanbanMany2OneAvatarField,
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/emoji/emojis_mixin_tests.js b/addons/mail/static/tests/emoji/emojis_mixin_tests.js
index d46b2cf1390..7eefc8ef83a 100644
--- a/addons/mail/static/tests/emoji/emojis_mixin_tests.js
+++ b/addons/mail/static/tests/emoji/emojis_mixin_tests.js
@@ -1,6 +1,6 @@
/* @odoo-module */
-import EmojiMixin from "@mail/js/emojis_mixin";
+import { formatText } from "@mail/js/emojis_mixin";
QUnit.module("emojis mixin");
@@ -8,5 +8,5 @@ QUnit.test("Emoji formatter handles compound emojis", (assert) => {
const testString = "👩🏿test👩🏿👩t👩";
const expectedString =
"👩🏿test👩🏿👩t👩";
- assert.deepEqual(EmojiMixin._formatText(testString), expectedString);
+ assert.deepEqual(formatText(testString), expectedString);
});
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/core/utils/patch.js b/addons/web/static/src/core/utils/patch.js
index 5ed6818fcfa..7c268e7a600 100644
--- a/addons/web/static/src/core/utils/patch.js
+++ b/addons/web/static/src/core/utils/patch.js
@@ -1,22 +1,60 @@
/** @odoo-module **/
/**
- * @typedef {{
- * name: string;
- * patch: object;
- * pure: boolean;
- * }} PatchDescription
+ * @typedef {{
+ * originalProperties: Map;
+ * skeleton: object;
+ * extensions: Set