Fix autodraft settings panel not reflecting auto-disable after pick (#50)
This commit is contained in:
commit
425b4724d2
5 changed files with 18 additions and 14 deletions
|
|
@ -62,11 +62,6 @@ export function useDraftAuthRecovery({
|
||||||
mode: (userAutodraftSettings?.mode || "next_pick") as "next_pick" | "while_on",
|
mode: (userAutodraftSettings?.mode || "next_pick") as "next_pick" | "while_on",
|
||||||
queueOnly: userAutodraftSettings?.queueOnly || false,
|
queueOnly: userAutodraftSettings?.queueOnly || false,
|
||||||
});
|
});
|
||||||
const userAutodraftRef = useRef(userAutodraft);
|
|
||||||
useEffect(() => {
|
|
||||||
userAutodraftRef.current = userAutodraft;
|
|
||||||
}, [userAutodraft]);
|
|
||||||
|
|
||||||
// Re-fetch loader data after each reconnect so stale picks/timers are refreshed.
|
// Re-fetch loader data after each reconnect so stale picks/timers are refreshed.
|
||||||
const revalidationRetryRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
const revalidationRetryRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -194,10 +189,19 @@ export function useDraftAuthRecovery({
|
||||||
});
|
});
|
||||||
return status;
|
return status;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (userAutodraftSettings) {
|
||||||
|
setUserAutodraft({
|
||||||
|
isEnabled: userAutodraftSettings.isEnabled,
|
||||||
|
mode: userAutodraftSettings.mode,
|
||||||
|
queueOnly: userAutodraftSettings.queueOnly,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
setIsSyncing(false);
|
setIsSyncing(false);
|
||||||
}
|
}
|
||||||
}, [revalidatorState, draftPicks, season, userQueue, timers, autodraftSettings, currentUserId,
|
}, [revalidatorState, draftPicks, season, userQueue, timers, autodraftSettings, currentUserId, userAutodraftSettings,
|
||||||
setPicks, setCurrentPick, setIsPaused, setIsDraftComplete, setQueue, setTeamTimers, setAutodraftStatus, setIsSyncing]);
|
setPicks, setCurrentPick, setIsPaused, setIsDraftComplete, setQueue, setTeamTimers, setAutodraftStatus, setUserAutodraft, setIsSyncing]);
|
||||||
|
|
||||||
const authFetch = useCallback(async (url: string, init?: RequestInit): Promise<Response | null> => {
|
const authFetch = useCallback(async (url: string, init?: RequestInit): Promise<Response | null> => {
|
||||||
const response = await fetch(url, init);
|
const response = await fetch(url, init);
|
||||||
|
|
@ -213,7 +217,6 @@ export function useDraftAuthRecovery({
|
||||||
authFetch,
|
authFetch,
|
||||||
userAutodraft,
|
userAutodraft,
|
||||||
setUserAutodraft,
|
setUserAutodraft,
|
||||||
userAutodraftRef,
|
|
||||||
isRevalidatingRef,
|
isRevalidatingRef,
|
||||||
pendingPicksDuringRevalidationRef,
|
pendingPicksDuringRevalidationRef,
|
||||||
pendingQueueMutationsRef,
|
pendingQueueMutationsRef,
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,6 @@ interface UseDraftSocketEventsParams {
|
||||||
isRevalidatingRef: RefObject<boolean>;
|
isRevalidatingRef: RefObject<boolean>;
|
||||||
pendingPicksDuringRevalidationRef: MutableRefObject<DraftPicks>;
|
pendingPicksDuringRevalidationRef: MutableRefObject<DraftPicks>;
|
||||||
pendingQueueMutationsRef: MutableRefObject<number>;
|
pendingQueueMutationsRef: MutableRefObject<number>;
|
||||||
userAutodraftRef: MutableRefObject<{ isEnabled: boolean; mode: "next_pick" | "while_on"; queueOnly: boolean }>;
|
|
||||||
// Notification refs from the component
|
// Notification refs from the component
|
||||||
sendNotificationRef: MutableRefObject<(title: string, body: string) => void>;
|
sendNotificationRef: MutableRefObject<(title: string, body: string) => void>;
|
||||||
notificationsModeRef: MutableRefObject<string>;
|
notificationsModeRef: MutableRefObject<string>;
|
||||||
|
|
@ -55,7 +54,6 @@ export function useDraftSocketEvents({
|
||||||
isRevalidatingRef,
|
isRevalidatingRef,
|
||||||
pendingPicksDuringRevalidationRef,
|
pendingPicksDuringRevalidationRef,
|
||||||
pendingQueueMutationsRef,
|
pendingQueueMutationsRef,
|
||||||
userAutodraftRef,
|
|
||||||
sendNotificationRef,
|
sendNotificationRef,
|
||||||
notificationsModeRef,
|
notificationsModeRef,
|
||||||
setPicks,
|
setPicks,
|
||||||
|
|
@ -139,6 +137,7 @@ export function useDraftSocketEvents({
|
||||||
mode: "next_pick" | "while_on";
|
mode: "next_pick" | "while_on";
|
||||||
queueOnly: boolean;
|
queueOnly: boolean;
|
||||||
source?: "commissioner" | "user";
|
source?: "commissioner" | "user";
|
||||||
|
reason?: "queue_empty" | "pick_complete";
|
||||||
}) => {
|
}) => {
|
||||||
setAutodraftStatus((prev) => ({
|
setAutodraftStatus((prev) => ({
|
||||||
...prev,
|
...prev,
|
||||||
|
|
@ -153,8 +152,9 @@ export function useDraftSocketEvents({
|
||||||
toast.info(`Commissioner changed your autodraft to "${getAutodraftLabel(data.isEnabled, data.mode, data.queueOnly)}"`);
|
toast.info(`Commissioner changed your autodraft to "${getAutodraftLabel(data.isEnabled, data.mode, data.queueOnly)}"`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const prev = userAutodraftRef.current;
|
if (!data.isEnabled && data.reason === "pick_complete") {
|
||||||
if (!data.isEnabled && prev.isEnabled && prev.queueOnly && prev.mode === "while_on") {
|
toast.info("Autodraft turned off — next pick complete");
|
||||||
|
} else if (!data.isEnabled && data.reason === "queue_empty") {
|
||||||
toast.info("Autodraft disabled — your queue is empty");
|
toast.info("Autodraft disabled — your queue is empty");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -569,6 +569,7 @@ export async function executeAutoPick(params: {
|
||||||
isEnabled: false,
|
isEnabled: false,
|
||||||
mode: autodraftSettings.mode,
|
mode: autodraftSettings.mode,
|
||||||
queueOnly: autodraftSettings.queueOnly,
|
queueOnly: autodraftSettings.queueOnly,
|
||||||
|
reason: "queue_empty" as const,
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error("[AutoPick] Socket.IO autodraft-updated error (queue-empty shutoff):", error);
|
logger.error("[AutoPick] Socket.IO autodraft-updated error (queue-empty shutoff):", error);
|
||||||
|
|
@ -774,6 +775,7 @@ export async function executeAutoPick(params: {
|
||||||
isEnabled: false,
|
isEnabled: false,
|
||||||
mode: autodraftSettings.mode,
|
mode: autodraftSettings.mode,
|
||||||
queueOnly: autodraftSettings.queueOnly,
|
queueOnly: autodraftSettings.queueOnly,
|
||||||
|
reason: "pick_complete" as const,
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error("[AutoPick] Socket.IO autodraft-updated error:", error);
|
logger.error("[AutoPick] Socket.IO autodraft-updated error:", error);
|
||||||
|
|
|
||||||
|
|
@ -343,7 +343,6 @@ export default function DraftRoom() {
|
||||||
authFetch,
|
authFetch,
|
||||||
userAutodraft,
|
userAutodraft,
|
||||||
setUserAutodraft,
|
setUserAutodraft,
|
||||||
userAutodraftRef,
|
|
||||||
isRevalidatingRef,
|
isRevalidatingRef,
|
||||||
pendingPicksDuringRevalidationRef,
|
pendingPicksDuringRevalidationRef,
|
||||||
pendingQueueMutationsRef,
|
pendingQueueMutationsRef,
|
||||||
|
|
@ -504,7 +503,6 @@ export default function DraftRoom() {
|
||||||
isRevalidatingRef,
|
isRevalidatingRef,
|
||||||
pendingPicksDuringRevalidationRef,
|
pendingPicksDuringRevalidationRef,
|
||||||
pendingQueueMutationsRef,
|
pendingQueueMutationsRef,
|
||||||
userAutodraftRef,
|
|
||||||
sendNotificationRef,
|
sendNotificationRef,
|
||||||
notificationsModeRef,
|
notificationsModeRef,
|
||||||
setPicks,
|
setPicks,
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ interface ServerToClientEvents {
|
||||||
mode: "next_pick" | "while_on";
|
mode: "next_pick" | "while_on";
|
||||||
queueOnly: boolean;
|
queueOnly: boolean;
|
||||||
source?: "commissioner" | "user";
|
source?: "commissioner" | "user";
|
||||||
|
reason?: "queue_empty" | "pick_complete";
|
||||||
}) => void;
|
}) => void;
|
||||||
"team-connected": (data: { teamId: string }) => void;
|
"team-connected": (data: { teamId: string }) => void;
|
||||||
"team-disconnected": (data: { teamId: string }) => void;
|
"team-disconnected": (data: { teamId: string }) => void;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue