import React from 'react' import { Form, redirect, useActionData, useParams } from 'react-router-dom' import { Avatar, Button, Card, Flex, Select, Text, Title } from '@mantine/core' import { getUserData } from '../../utils/auth' const ChallengeFriend = () => { const params = useParams(); let friend_username = params["friend_username"]; const res = useActionData(); console.log(res); return (
Play vs {friend_username} {friend_username[0].toUpperCase()} {friend_username} I play as} placeholder='choose your color' data={[ { value: 'w', label: 'White' }, { value: 'b', label: 'Black' }, { value: 'RANDOM', label: 'Random' } ]} /> {res?.message}
) } // TESTED export const playFriendAction = async ({ request, params }) => { const formData = await request.formData(); let color = formData.get('color'); let timeLimit = formData.get('timeLimit'); let username = getUserData().username; let challenged = params.friend_username; let roomIDURL = `${import.meta.env.VITE_BACKEND_HOST}/api/room`; let reqBody = { challenger: username, challenged, timeLimit, color } try { const response = await fetch(roomIDURL, { method: 'POST', body: JSON.stringify(reqBody), headers: { 'Content-Type': 'application/json' }, credentials: 'include' }); console.log(response.status); if (response.ok) { const resJSON = await response.json(); const { roomID } = resJSON; console.log('Room ID:', roomID); // set properties of the game localStorage.setItem('roomID', roomID); localStorage.setItem('myColor', color); localStorage.setItem('timeLimit', timeLimit); localStorage.setItem('opponent', challenged); return redirect(`/game/friend/${roomID}`); } else { return response; } } catch (err) { console.log(err) return err; } } export default ChallengeFriend;