mirror of https://github.com/OCA/web.git
47 lines
1.5 KiB
JavaScript
47 lines
1.5 KiB
JavaScript
/** @odoo-module **/
|
|
/* Copyright 2021 ITerra - Sergey Shebanin
|
|
* License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl). */
|
|
|
|
import {registry} from "@web/core/registry";
|
|
import {debounce} from "@web/core/utils/timing";
|
|
import config from "web.config";
|
|
import core from "web.core";
|
|
|
|
const {Context} = owl;
|
|
|
|
// Legacy variant
|
|
// TODO: remove when legacy code will dropped from odoo
|
|
// TODO: then move context definition inside service start function
|
|
export const deviceContext = new Context({
|
|
isSmall: config.device.isMobile,
|
|
size: config.device.size_class,
|
|
SIZES: config.device.SIZES,
|
|
});
|
|
|
|
// New wowl variant
|
|
// TODO: use default odoo device context when it will be realized
|
|
const uiContextService = {
|
|
dependencies: ["ui"],
|
|
start(env, {ui}) {
|
|
window.addEventListener(
|
|
"resize",
|
|
debounce(() => {
|
|
const state = deviceContext.state;
|
|
if (state.size !== ui.size) {
|
|
state.size = ui.size;
|
|
}
|
|
if (state.isSmall !== ui.isSmall) {
|
|
state.isSmall = ui.isSmall;
|
|
config.device.isMobile = state.isSmall;
|
|
config.device.size_class = state.size;
|
|
core.bus.trigger("UI_CONTEXT:IS_SMALL_CHANGED");
|
|
}
|
|
}, 150) // UIService debounce for this event is 100
|
|
);
|
|
|
|
return deviceContext;
|
|
},
|
|
};
|
|
|
|
registry.category("services").add("ui_context", uiContextService);
|