diff --git a/app/components/AutodraftSettings.tsx b/app/components/AutodraftSettings.tsx index 9006589..8679d43 100644 --- a/app/components/AutodraftSettings.tsx +++ b/app/components/AutodraftSettings.tsx @@ -22,6 +22,7 @@ export function AutodraftSettings({ }: AutodraftSettingsProps) { const [localEnabled, setLocalEnabled] = useState(isEnabled); const [localMode, setLocalMode] = useState<"next_pick" | "while_on">(mode); + const [isUpdating, setIsUpdating] = useState(false); // Sync local state with props when they change (from socket events) useEffect(() => { @@ -33,7 +34,10 @@ export function AutodraftSettings({ }, [mode]); const handleToggle = async (checked: boolean) => { + if (isUpdating) return; // Prevent multiple simultaneous updates + setLocalEnabled(checked); + setIsUpdating(true); try { const formData = new FormData(); @@ -58,11 +62,17 @@ export function AutodraftSettings({ // Revert on error setLocalEnabled(!checked); console.error("Error updating autodraft settings:", error); + } finally { + setIsUpdating(false); } }; const handleModeChange = async (newMode: "next_pick" | "while_on") => { + if (isUpdating) return; // Prevent multiple simultaneous updates + + const previousMode = localMode; setLocalMode(newMode); + setIsUpdating(true); try { const formData = new FormData(); @@ -80,13 +90,15 @@ export function AutodraftSettings({ onUpdate(localEnabled, newMode); } else { // Revert on error - setLocalMode(localMode); + setLocalMode(previousMode); console.error("Failed to update autodraft mode"); } } catch (error) { // Revert on error - setLocalMode(localMode); + setLocalMode(previousMode); console.error("Error updating autodraft mode:", error); + } finally { + setIsUpdating(false); } }; @@ -100,7 +112,7 @@ export function AutodraftSettings({ id="autodraft-switch" checked={localEnabled} onCheckedChange={handleToggle} - disabled={isMyTurn} + disabled={isMyTurn || isUpdating} /> @@ -108,23 +120,23 @@ export function AutodraftSettings({ handleModeChange(value as "next_pick" | "while_on")} - disabled={isMyTurn} + disabled={isMyTurn || isUpdating} className="space-y-2" >
- +
- +