mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-11 17:29:37 +02:00
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:
2 files changed
+32
-2
No files matched your search
@@ -39,23 +39,53 @@ export function PomodoroTimer({ onStateChange }: PomodoroTimerProps = {}) {
|
|||||||
});
|
});
|
||||||
const intervalRef = useRef<NodeJS.Timeout | null>(null);
|
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(() => {
|
useEffect(() => {
|
||||||
localStorage.setItem('pomodoroMode', mode);
|
localStorage.setItem('pomodoroMode', mode);
|
||||||
|
window.dispatchEvent(new CustomEvent('pomodoroStateChange'));
|
||||||
}, [mode]);
|
}, [mode]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
localStorage.setItem('pomodoroTimeLeft', timeLeft.toString());
|
localStorage.setItem('pomodoroTimeLeft', timeLeft.toString());
|
||||||
|
window.dispatchEvent(new CustomEvent('pomodoroStateChange'));
|
||||||
}, [timeLeft]);
|
}, [timeLeft]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
localStorage.setItem('pomodoroIsRunning', isRunning.toString());
|
localStorage.setItem('pomodoroIsRunning', isRunning.toString());
|
||||||
|
window.dispatchEvent(new CustomEvent('pomodoroStateChange'));
|
||||||
}, [isRunning]);
|
}, [isRunning]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
localStorage.setItem('pomodoroSessionsCompleted', sessionsCompleted.toString());
|
localStorage.setItem('pomodoroSessionsCompleted', sessionsCompleted.toString());
|
||||||
|
window.dispatchEvent(new CustomEvent('pomodoroStateChange'));
|
||||||
}, [sessionsCompleted]);
|
}, [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
|
// Function to play notification sound using Web Audio API
|
||||||
const playNotificationSound = () => {
|
const playNotificationSound = () => {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ export function QuickCaptureWidget({ onNoteCaptured }: QuickCaptureWidgetProps)
|
|||||||
<>
|
<>
|
||||||
{/* Floating Action Button */}
|
{/* Floating Action Button */}
|
||||||
<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)}
|
onClick={() => setOpen(true)}
|
||||||
title="Capture rapide (Ctrl+Q)"
|
title="Capture rapide (Ctrl+Q)"
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in new issue
Block a user