diff --git a/app/renderer/components/break.tsx b/app/renderer/components/break.tsx
index 0732d0c8..2ac5a98e 100644
--- a/app/renderer/components/break.tsx
+++ b/app/renderer/components/break.tsx
@@ -183,6 +183,7 @@ export default function Break() {
breakMessage={settings.breakMessage}
breakTitle={settings.breakTitle}
endBreakEnabled={settings.endBreakEnabled}
+ returnFromBreakEnabled={settings.returnFromBreakEnabled}
onEndBreak={handleEndBreak}
settings={settings}
textColor={settings.textColor}
diff --git a/app/renderer/components/break/break-progress.tsx b/app/renderer/components/break/break-progress.tsx
index 3df47fa5..b912e9d4 100644
--- a/app/renderer/components/break/break-progress.tsx
+++ b/app/renderer/components/break/break-progress.tsx
@@ -9,6 +9,7 @@ interface BreakProgressProps {
breakMessage: string;
breakTitle: string;
endBreakEnabled: boolean;
+ returnFromBreakEnabled: boolean;
onEndBreak: () => void;
settings: Settings;
textColor: string;
@@ -20,6 +21,7 @@ export function BreakProgress({
breakMessage,
breakTitle,
endBreakEnabled,
+ returnFromBreakEnabled,
onEndBreak,
settings,
textColor,
@@ -76,25 +78,30 @@ export function BreakProgress({
const now = moment();
if (now > moment(breakEndTime)) {
- // Always track break completion, regardless of which window triggers it
- const breakDurationMs =
- new Date().getTime() - breakStartTime.getTime();
- ipcRenderer.invokeCompleteBreakTracking(breakDurationMs);
-
- onEndBreak();
- return;
+ if(!returnFromBreakEnabled) {
+ // Always track break completion, regardless of which window triggers it
+ const breakDurationMs =
+ new Date().getTime() - breakStartTime.getTime();
+ ipcRenderer.invokeCompleteBreakTracking(breakDurationMs);
+
+ onEndBreak();
+ return;
+ } else {
+ setProgress(1);
+ }
}
-
- const msRemaining = moment(breakEndTime).diff(now, "milliseconds");
- setProgress(1 - msRemaining / startMsRemaining);
- setTimeRemaining({
- hours: Math.floor(msRemaining / 1000 / 3600),
- minutes: Math.floor(msRemaining / 1000 / 60),
- seconds: (msRemaining / 1000) % 60,
- });
-
- if (!isClosingRef.current) {
- timeoutId = setTimeout(tick, 50);
+ else {
+ const msRemaining = moment(breakEndTime).diff(now, "milliseconds");
+ setProgress(1 - msRemaining / startMsRemaining);
+ setTimeRemaining({
+ hours: Math.floor(msRemaining / 1000 / 3600),
+ minutes: Math.floor(msRemaining / 1000 / 60),
+ seconds: (msRemaining / 1000) % 60,
+ });
+
+ if (!isClosingRef.current) {
+ timeoutId = setTimeout(tick, 50);
+ }
}
};
@@ -107,6 +114,7 @@ export function BreakProgress({
}
};
}, [
+ returnFromBreakEnabled,
onEndBreak,
settings,
breakStartTime,
@@ -149,9 +157,26 @@ export function BreakProgress({
borderColor: "rgba(255, 255, 255, 0.2)",
}}
>
- {progress < 0.5 ? "Cancel Break" : "End Break"}
+ {returnFromBreakEnabled && progress == 1 ? "I'm back" : (progress < 0.5 ? "Cancel Break" : "End Break")}
)}
+ {!endBreakEnabled && returnFromBreakEnabled && progress == 1 && (
+