mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[MIG] web_notify: Migration to 15.0
This commit is contained in:
14
web_notify/static/src/js/services/notification.js
Normal file
14
web_notify/static/src/js/services/notification.js
Normal file
@@ -0,0 +1,14 @@
|
||||
odoo.define("web_notify.Notification", function (require) {
|
||||
"use strict";
|
||||
const {Notification} = require("@web/core/notifications/notification");
|
||||
const {patch} = require("web.utils");
|
||||
|
||||
patch(Notification.props, "webNotifyProps", {
|
||||
type: {
|
||||
type: String,
|
||||
optional: true,
|
||||
validate: (t) =>
|
||||
["warning", "danger", "success", "info", "default"].includes(t),
|
||||
},
|
||||
});
|
||||
});
|
||||
47
web_notify/static/src/js/services/notification_services.js
Normal file
47
web_notify/static/src/js/services/notification_services.js
Normal file
@@ -0,0 +1,47 @@
|
||||
odoo.define("web_notify.NotificationService", function (require) {
|
||||
"use strict";
|
||||
const {browser} = require("@web/core/browser/browser");
|
||||
const {registry} = require("@web/core/registry");
|
||||
|
||||
const webNotificationService = {
|
||||
dependencies: ["notification"],
|
||||
|
||||
start(env, {notification}) {
|
||||
let webNotifTimeouts = {};
|
||||
/**
|
||||
* Displays the web notification on user's screen
|
||||
*/
|
||||
|
||||
function displaywebNotification(notifications) {
|
||||
Object.values(webNotifTimeouts).forEach((notif) =>
|
||||
browser.clearTimeout(notif)
|
||||
);
|
||||
webNotifTimeouts = {};
|
||||
|
||||
notifications.forEach(function (notif) {
|
||||
browser.setTimeout(function () {
|
||||
notification.add(notif.message, {
|
||||
title: notif.title,
|
||||
type: notif.type,
|
||||
sticky: notif.sticky,
|
||||
className: notif.className,
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
env.bus.on("WEB_CLIENT_READY", null, async () => {
|
||||
const legacyEnv = owl.Component.env;
|
||||
legacyEnv.services.bus_service.onNotification(this, (notifications) => {
|
||||
for (const {payload, type} of notifications) {
|
||||
if (type === "web.notify") {
|
||||
displaywebNotification(payload);
|
||||
}
|
||||
}
|
||||
});
|
||||
legacyEnv.services.bus_service.startPolling();
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
registry.category("services").add("webNotification", webNotificationService);
|
||||
});
|
||||
Reference in New Issue
Block a user