Skip to content

Commit 2792e4c

Browse files
Improve disable for feature
1 parent 48f2a6f commit 2792e4c

File tree

2 files changed

+50
-25
lines changed

2 files changed

+50
-25
lines changed

app/main/lib/store.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,13 @@ const store = new Store<{
5959
settings: Settings;
6060
appInitialized: boolean;
6161
settingsVersion: number;
62+
disableEndTime: number | null;
6263
}>({
6364
defaults: {
6465
settings: defaultSettings,
6566
appInitialized: false,
6667
settingsVersion: 0,
68+
disableEndTime: null,
6769
},
6870
});
6971

@@ -140,3 +142,11 @@ export function setBreaksEnabled(breaksEnabled: boolean): void {
140142
const settings: Settings = getSettings();
141143
setSettings({ ...settings, breaksEnabled }, false);
142144
}
145+
146+
export function setDisableEndTime(endTime: number | null): void {
147+
store.set("disableEndTime", endTime);
148+
}
149+
150+
export function getDisableEndTime(): number | null {
151+
return store.get("disableEndTime");
152+
}

app/main/lib/tray.ts

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,36 @@ import path from "path";
44
import packageJson from "../../../package.json";
55
import { Settings } from "../../types/settings";
66
import {
7-
checkIdle,
8-
checkInWorkingHours,
9-
createBreak,
10-
getBreakTime,
11-
startBreakNow,
7+
checkIdle,
8+
checkInWorkingHours,
9+
createBreak,
10+
getBreakTime,
11+
startBreakNow
1212
} from "./breaks";
13-
import { getSettings, setSettings } from "./store";
13+
import {
14+
getDisableEndTime,
15+
getSettings,
16+
setDisableEndTime,
17+
setSettings
18+
} from "./store";
1419
import { createSettingsWindow } from "./windows";
1520

1621
let tray: Tray;
1722
let lastMinsLeft = 0;
18-
let disableTimeout: NodeJS.Timeout | null = null;
19-
let disableEndTime: number | null = null;
23+
24+
function checkDisableTimeout() {
25+
const disableEndTime = getDisableEndTime();
26+
27+
if (disableEndTime && Date.now() >= disableEndTime) {
28+
setDisableEndTime(null);
29+
const settings = getSettings();
30+
setSettings({ ...settings, breaksEnabled: true });
31+
buildTray();
32+
}
33+
}
2034

2135
function getDisableTimeRemaining(): string {
36+
const disableEndTime = getDisableEndTime();
2237
if (!disableEndTime) {
2338
return "";
2439
}
@@ -68,30 +83,18 @@ export function buildTray(): void {
6883
const breaksEnabled = settings.breaksEnabled;
6984

7085
const setBreaksEnabled = (breaksEnabled: boolean): void => {
71-
if (breaksEnabled && disableTimeout) {
72-
clearTimeout(disableTimeout);
73-
disableTimeout = null;
74-
disableEndTime = null;
86+
if (breaksEnabled) {
87+
setDisableEndTime(null);
7588
}
76-
7789
settings = getSettings();
7890
setSettings({ ...settings, breaksEnabled });
7991
buildTray();
8092
};
8193

8294
const disableBreaksFor = (duration: number): void => {
8395
setBreaksEnabled(false);
84-
disableEndTime = Date.now() + duration;
85-
86-
if (disableTimeout) {
87-
clearTimeout(disableTimeout);
88-
}
89-
90-
disableTimeout = setTimeout(() => {
91-
disableEndTime = null;
92-
setBreaksEnabled(true);
93-
}, duration);
94-
96+
const endTime = Date.now() + duration;
97+
setDisableEndTime(endTime);
9598
buildTray();
9699
};
97100

@@ -127,6 +130,8 @@ export function buildTray(): void {
127130
}
128131
}
129132

133+
const disableEndTime = getDisableEndTime();
134+
130135
const contextMenu = Menu.buildFromTemplate([
131136
{
132137
label: nextBreak,
@@ -135,7 +140,7 @@ export function buildTray(): void {
135140
},
136141
{
137142
label: `Disabled for ${getDisableTimeRemaining()}`,
138-
visible: disableTimeout !== null && !breaksEnabled,
143+
visible: disableEndTime !== null && !breaksEnabled,
139144
enabled: false,
140145
},
141146
{
@@ -202,7 +207,17 @@ export function buildTray(): void {
202207

203208
export function initTray(): void {
204209
buildTray();
210+
let lastDisableText = getDisableTimeRemaining();
211+
205212
setInterval(() => {
213+
checkDisableTimeout();
214+
215+
const currentDisableText = getDisableTimeRemaining();
216+
if (currentDisableText !== lastDisableText) {
217+
buildTray();
218+
lastDisableText = currentDisableText;
219+
}
220+
206221
const breakTime = getBreakTime();
207222
if (breakTime === null) {
208223
return;

0 commit comments

Comments
 (0)