You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.6 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. odoo.define('web_switch_context_warning.widget', function (require) {
  2. 'use strict';
  3. var Widget = require('web.Widget');
  4. var UserMenu = require('web.UserMenu');
  5. var session = require('web.session');
  6. // Show a big banner in the top of the page if the context has been
  7. // changed in another tab or window (in the same browser)
  8. if (!window.SharedWorker) {
  9. // Not supported
  10. return;
  11. }
  12. var SwitchCompanyWarningWidget = Widget.extend({
  13. template:'web_switch_context_warning.warningWidget',
  14. init: function () {
  15. this._super();
  16. var self = this;
  17. var w = new SharedWorker('/web_switch_context_warning/static/src/js/switch_context_warning_worker.js');
  18. w.port.addEventListener('message', function (msg) {
  19. if (msg.data.type !== 'newCtx') {
  20. return;
  21. }
  22. if (msg.data.newCtx === self.generateSignature()) {
  23. self.$el.hide();
  24. } else {
  25. self.$el.show();
  26. }
  27. });
  28. w.port.start();
  29. w.port.postMessage(this.generateSignature());
  30. },
  31. generateSignature: function () {
  32. return [session.uid, session.company_id, session.db].join();
  33. },
  34. });
  35. UserMenu.include({
  36. init: function (parent) {
  37. this._super(parent);
  38. var switchCompanyWarning = new SwitchCompanyWarningWidget();
  39. switchCompanyWarning.insertAfter('.o_main_navbar');
  40. },
  41. });
  42. return SwitchCompanyWarningWidget;
  43. });