mirror of https://github.com/OCA/web.git
59 lines
2.2 KiB
JavaScript
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,
|
|
});
|
|
},
|
|
});
|
|
});
|