web/web_notify/static/src/js/web_client.js

59 lines
2.2 KiB
JavaScript

odoo.define("web_notify.WebClient", function(require) {
"use strict";
var WebClient = require("web.WebClient");
var session = require("web.session");
require("bus.BusService");
WebClient.include({
show_application: function() {
var res = this._super();
this.start_polling();
return res;
},
start_polling: function() {
this.channel_success = "notify_success_" + session.uid;
this.channel_danger = "notify_danger_" + session.uid;
this.channel_warning = "notify_warning_" + session.uid;
this.channel_info = "notify_info_" + session.uid;
this.channel_default = "notify_default_" + session.uid;
this.all_channels = [
this.channel_success,
this.channel_danger,
this.channel_warning,
this.channel_info,
this.channel_default,
];
this.call("bus_service", "addChannel", this.channel_success);
this.call("bus_service", "addChannel", this.channel_danger);
this.call("bus_service", "addChannel", this.channel_warning);
this.call("bus_service", "addChannel", this.channel_info);
this.call("bus_service", "addChannel", this.channel_default);
this.call("bus_service", "on", "notification", this, this.bus_notification);
this.call("bus_service", "startPolling");
},
bus_notification: function(notifications) {
var self = this;
_.each(notifications, function(notification) {
var channel = notification[0];
var message = notification[1];
if (
self.all_channels !== null &&
self.all_channels.indexOf(channel) > -1
) {
self.on_message(message);
}
});
},
on_message: function(message) {
return this.call("notification", "notify", {
type: message.type,
title: message.title,
message: message.message,
sticky: message.sticky,
className: message.className,
});
},
});
});