mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-29 15:44:13 +00:00
61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
const { screen } = require('electron');
|
|
const WindowStateStore = require('../store/window-state');
|
|
|
|
const windowStateStore = new WindowStateStore();
|
|
|
|
const DEFAULT_WINDOW_WIDTH = 1280;
|
|
const DEFAULT_WINDOW_HEIGHT = 768;
|
|
|
|
const loadWindowState = () => {
|
|
const maximized = windowStateStore.getMaximized();
|
|
const bounds = windowStateStore.getBounds();
|
|
|
|
const positionValid = isPositionValid(bounds);
|
|
const sizeValid = isSizeValid(bounds);
|
|
|
|
return {
|
|
maximized,
|
|
x: bounds.x && positionValid ? bounds.x : undefined,
|
|
y: bounds.y && positionValid ? bounds.y : undefined,
|
|
width: bounds.width && sizeValid ? bounds.width : DEFAULT_WINDOW_WIDTH,
|
|
height: bounds.height && sizeValid ? bounds.height : DEFAULT_WINDOW_HEIGHT
|
|
};
|
|
};
|
|
|
|
const saveBounds = (window) => {
|
|
const bounds = window.getBounds();
|
|
|
|
windowStateStore.setBounds(bounds);
|
|
};
|
|
|
|
const saveMaximized = (isMaximized) => {
|
|
windowStateStore.setMaximized(isMaximized);
|
|
};
|
|
|
|
const isPositionValid = (bounds) => {
|
|
const area = getArea(bounds);
|
|
|
|
return (
|
|
bounds.x >= area.x
|
|
&& bounds.y >= area.y
|
|
&& bounds.x + bounds.width <= area.x + area.width
|
|
&& bounds.y + bounds.height <= area.y + area.height
|
|
);
|
|
};
|
|
|
|
const isSizeValid = (bounds) => {
|
|
const area = getArea(bounds);
|
|
|
|
return bounds.width <= area.width && bounds.height <= area.height;
|
|
};
|
|
|
|
const getArea = (bounds) => {
|
|
return screen.getDisplayMatching(bounds).workArea;
|
|
};
|
|
|
|
module.exports = {
|
|
loadWindowState,
|
|
saveBounds,
|
|
saveMaximized
|
|
};
|