Merge pull request #147 from R0m1k3/claude/statistics-modal-popup-01P7c6z7G5KXo9Tk6BwEa4ew

Claude/statistics modal popup 01 p7c6z7 g5 k xo9 tk6 bw ea4ew
This commit is contained in:
LogiFlow authored and GitHub committed 2025-11-28 23:19:24 +01:00
commit 60bae3f9fc
2 files changed
+32 -2

No files matched your search

+31 -1
View File
@@ -39,23 +39,53 @@ export function PomodoroTimer({ onStateChange }: PomodoroTimerProps = {}) {
});
const intervalRef = useRef<NodeJS.Timeout | null>(null);
// Save state to localStorage whenever it changes
// Save state to localStorage whenever it changes and dispatch custom event
useEffect(() => {
localStorage.setItem('pomodoroMode', mode);
window.dispatchEvent(new CustomEvent('pomodoroStateChange'));
}, [mode]);
useEffect(() => {
localStorage.setItem('pomodoroTimeLeft', timeLeft.toString());
window.dispatchEvent(new CustomEvent('pomodoroStateChange'));
}, [timeLeft]);
useEffect(() => {
localStorage.setItem('pomodoroIsRunning', isRunning.toString());
window.dispatchEvent(new CustomEvent('pomodoroStateChange'));
}, [isRunning]);
useEffect(() => {
localStorage.setItem('pomodoroSessionsCompleted', sessionsCompleted.toString());
window.dispatchEvent(new CustomEvent('pomodoroStateChange'));
}, [sessionsCompleted]);
// Listen for localStorage changes from other instances
useEffect(() => {
const handleStorageChange = () => {
const savedMode = localStorage.getItem('pomodoroMode') as TimerMode;
const savedTimeLeft = localStorage.getItem('pomodoroTimeLeft');
const savedIsRunning = localStorage.getItem('pomodoroIsRunning');
const savedSessions = localStorage.getItem('pomodoroSessionsCompleted');
if (savedMode && savedMode !== mode) {
setMode(savedMode);
}
if (savedTimeLeft && parseInt(savedTimeLeft) !== timeLeft) {
setTimeLeft(parseInt(savedTimeLeft));
}
if (savedIsRunning && (savedIsRunning === 'true') !== isRunning) {
setIsRunning(savedIsRunning === 'true');
}
if (savedSessions && parseInt(savedSessions) !== sessionsCompleted) {
setSessionsCompleted(parseInt(savedSessions));
}
};
window.addEventListener('pomodoroStateChange', handleStorageChange);
return () => window.removeEventListener('pomodoroStateChange', handleStorageChange);
}, [mode, timeLeft, isRunning, sessionsCompleted]);
// Function to play notification sound using Web Audio API
const playNotificationSound = () => {
try {
+1 -1
View File
@@ -68,7 +68,7 @@ export function QuickCaptureWidget({ onNoteCaptured }: QuickCaptureWidgetProps)
<>
{/* Floating Action Button */}
<Button
className="fixed bottom-24 right-4 h-14 w-14 rounded-full shadow-lg hover:shadow-xl transition-all z-50"
className="fixed bottom-24 right-4 h-14 w-14 rounded-full shadow-lg hover:shadow-xl transition-all z-40"
onClick={() => setOpen(true)}
title="Capture rapide (Ctrl+Q)"
>