diff --git a/web_notify/static/src/js/services/notification_services.esm.js b/web_notify/static/src/js/services/notification_services.esm.js index f1ae5deecdbb..26fc2e1bfbfe 100644 --- a/web_notify/static/src/js/services/notification_services.esm.js +++ b/web_notify/static/src/js/services/notification_services.esm.js @@ -10,6 +10,7 @@ export const webNotificationService = { let webNotifTimeouts = {}; /** * Displays the web notification on user's screen + * @param {Array} notifications */ function displaywebNotification(notifications) { Object.values(webNotifTimeouts).forEach((notif) => @@ -18,32 +19,35 @@ export const webNotificationService = { webNotifTimeouts = {}; notifications.forEach((notif) => { browser.setTimeout(() => { + var buttons = []; + if (notif.action) { + const params = + (notif.action.context && notif.action.context.params) || {}; + buttons = [ + { + name: params.button_name || env._t("Open"), + primary: true, + onClick: async () => { + await action.doAction(notif.action); + }, + ...(params.button_icon && {icon: params.button_icon}), + }, + ]; + } const notificationRemove = notification.add(Markup(notif.message), { title: notif.title, type: notif.type, sticky: notif.sticky, className: notif.className, messageIsHtml: notif.html, - buttons: - notif.action && - notif.action.context && - notif.action.context.params - ? [ - { - name: - notif.action.context.params.button_name || - env._t("Open"), - primary: true, - onClick: async function () { - await action.doAction(notif.action); - notificationRemove(); - }, - icon: - notif.action.context.params.button_icon || - undefined, - }, - ] - : [], + buttons: buttons.map((button) => { + const onClick = button.onClick; + button.onClick = async () => { + await onClick(); + notificationRemove(); + }; + return button; + }), }); }); });