-
Notifications
You must be signed in to change notification settings - Fork 161
/
fullScreenBreak.ts
76 lines (66 loc) · 1.66 KB
/
fullScreenBreak.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import {
activateFullScreenShortcuts,
deactivateFullScreenShortcuts,
} from "../helpers";
import { BrowserWindow, Menu, Tray } from "electron";
export type FullscreenState = {
isFullscreen: boolean;
};
type FullscreenArgs = {
shouldFullscreen: boolean;
alwaysOnTop: boolean;
};
type AppArgs = {
tray: Tray | null;
trayTooltip: string;
win: BrowserWindow | null;
contextMenu: Menu;
isFullscreen: FullscreenState["isFullscreen"];
};
const setFullScreen = (
flag: boolean,
alwaysOnTop: boolean,
win: BrowserWindow | null,
isFullscreen: FullscreenState["isFullscreen"]
) => {
if (flag) {
win?.setResizable(true);
}
win?.setFullScreenable(true);
win?.setAlwaysOnTop(alwaysOnTop, "screen-saver");
win?.setFullScreen(flag);
win?.setVisibleOnAllWorkspaces(flag);
win?.show();
win?.focus();
isFullscreen = flag;
};
/**
* Handles the event of the main app SET_FULLSCREEN_BREAK
*
* @param fullscreenArgs
* @param appArgs
*/
export const setFullscreenBreakHandler = (
fullscreenArgs: FullscreenArgs,
appArgs: AppArgs
) => {
const { shouldFullscreen, alwaysOnTop } = fullscreenArgs;
const { tray, trayTooltip, win, contextMenu, isFullscreen } = appArgs;
if (shouldFullscreen) {
setFullScreen(true, alwaysOnTop, win, isFullscreen);
activateFullScreenShortcuts(() => {});
tray?.setToolTip("");
tray?.setContextMenu(
Menu.buildFromTemplate([
{
label: "Please wait for your break to end.",
},
])
);
} else {
setFullScreen(false, alwaysOnTop, win, isFullscreen);
deactivateFullScreenShortcuts();
tray?.setToolTip(trayTooltip);
tray?.setContextMenu(contextMenu);
}
};