diff --git a/src/app/_components/_sharedcomponents/CreateGameForm/CreateGameForm.tsx b/src/app/_components/_sharedcomponents/CreateGameForm/CreateGameForm.tsx index 3deadb67..09d5ddd0 100644 --- a/src/app/_components/_sharedcomponents/CreateGameForm/CreateGameForm.tsx +++ b/src/app/_components/_sharedcomponents/CreateGameForm/CreateGameForm.tsx @@ -38,10 +38,11 @@ const CreateGameForm = () => { const [deckLink, setDeckLink] = useState(''); const [saveDeck, setSaveDeck] = useState(false); const [errorModalOpen, setErrorModalOpen] = useState(false); + + const formatOptions = Object.values(SwuGameFormat); const savedFormat = localStorage.getItem('format') || SwuGameFormat.Premier; const [format, setFormat] = useState(savedFormat); - const formatOptions = Object.values(SwuGameFormat); // For a short, user-friendly error message const [deckErrorSummary, setDeckErrorSummary] = useState(null); @@ -175,7 +176,7 @@ const CreateGameForm = () => { } {/* Deck Link Input */} - + SWU Stats diff --git a/src/app/_components/_sharedcomponents/QuickGameForm/QuickGameForm.tsx b/src/app/_components/_sharedcomponents/QuickGameForm/QuickGameForm.tsx index 9270805c..1bc5e722 100644 --- a/src/app/_components/_sharedcomponents/QuickGameForm/QuickGameForm.tsx +++ b/src/app/_components/_sharedcomponents/QuickGameForm/QuickGameForm.tsx @@ -9,6 +9,7 @@ import { IDeckValidationFailures } from '@/app/_validators/DeckValidation/DeckValidationTypes'; import { ErrorModal } from '@/app/_components/_sharedcomponents/Error/ErrorModal'; +import { SwuGameFormat, FormatLabels } from '@/app/_constants/constants'; interface ICreateGameFormProps { format?: string | null; @@ -26,6 +27,10 @@ const QuickGameForm: React.FC = () => { const [saveDeck, setSaveDeck] = useState(false); const [queueState, setQueueState] = useState(false) + const formatOptions = Object.values(SwuGameFormat); + const savedFormat = localStorage.getItem('format') || SwuGameFormat.Premier; + const [format, setFormat] = useState(savedFormat); + // error states const [errorModalOpen, setErrorModalOpen] = useState(false); // For a short, user-friendly error message @@ -39,6 +44,11 @@ const QuickGameForm: React.FC = () => { 'ThisIsTheWay', ]; + const handleChangeFormat = (format: SwuGameFormat) => { + localStorage.setItem('format', format); + setFormat(format); + } + // Handle Create Game Submission const handleJoinGameQueue = async (event: FormEvent) => { event.preventDefault(); @@ -66,6 +76,7 @@ const QuickGameForm: React.FC = () => { user: { id: user?.id || sessionStorage.getItem('anonymousUserId'), username:user?.username || 'anonymous '+sessionStorage.getItem('anonymousUserId')?.substring(0,6) }, deck: deckData, + format: format, }; const response = await fetch(`${process.env.NEXT_PUBLIC_ROOT_URL}/api/enter-queue`, { @@ -160,7 +171,7 @@ const QuickGameForm: React.FC = () => { } {/* Deck Link Input */} - + SWU Stats @@ -200,6 +211,24 @@ const QuickGameForm: React.FC = () => { )} + + Format + ) => + handleChangeFormat(e.target.value as SwuGameFormat) + } + > + {formatOptions.map((fmt) => ( + + {FormatLabels[fmt] || fmt} + + ))} + + + {/* Save Deck To Favourites Checkbox { const { openPopup, clearPopups, prunePromptStatePopups } = usePopup(); const { user, anonymousUserId } = useUser(); const searchParams = useSearchParams(); + const router = useRouter(); const [distributionPromptData, setDistributionPromptData] = useState(null); useEffect(() => { @@ -117,6 +119,11 @@ export const GameProvider = ({ children }: { children: ReactNode }) => { } }; + newSocket.on('connection_error', (error: any) => { + console.error('Connection error:', error); + router.push('/'); + }); + newSocket.on('gamestate', (gameState: any) => { if (gameState?.id && gameState.id !== lastGameIdRef.current) { clearPopups();