diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index c449bd6..432b7a5 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -1,6 +1,7 @@
import { createBrowserRouter, redirect, RouterProvider } from 'react-router-dom'
-import Home from './pages/Home'
+
import MainLayout from './layout/MainLayout'
+import Home from './pages/Home'
import Settings from './pages/Settings/Settings'
import Friends from './pages/Settings/Friends'
import Password from './pages/Settings/Password'
@@ -9,11 +10,11 @@ import PlayLayout from './pages/Play/Layout'
import PlayFriend from './pages/Play/PlayFriend'
import Play from './pages/Play/Play'
import AuthenticationPage, { loginAction, signupAction } from './pages/Authentication/Authentication'
-import { getAuthToken, getUserData } from './utils/auth'
import ChallengeFriend, { playFriendAction } from './pages/Play/ChallengeFriend'
import ChessGame from './pages/Chess/ChessGame'
-import ChessGameContextProvider from './context/chess-game-context'
import Profile, { action as profileAction } from './pages/Settings/Profile'
+import ChessGameContextProvider from './context/chess-game-context'
+import { getAuthToken, getUserData } from './utils/auth'
const router = createBrowserRouter([{
path: '/',
diff --git a/frontend/src/components/Cell.jsx b/frontend/src/components/Cell.jsx
index cc6d715..40c5ebd 100644
--- a/frontend/src/components/Cell.jsx
+++ b/frontend/src/components/Cell.jsx
@@ -1,18 +1,23 @@
import React, { useContext } from 'react'
-import Piece from './Piece';
+
import { socket } from '../socket';
import { Box, Flex } from '@mantine/core';
import { useDroppable } from '@dnd-kit/core'
+
+import Piece from './Piece';
import { ChessGameContext } from '../context/chess-game-context';
+
import { SOCKET_EVENTS } from '../constants';
const { CHESS_MOVE } = SOCKET_EVENTS
+
const Cell = ({ cell }) => {
let roomID = localStorage.getItem('roomID');
let { square, type } = cell;
const { getSquareColor, isSquareMarked, handleSquareClick } = useContext(ChessGameContext)
const { isOver, setNodeRef } = useDroppable({ id: square });
let squareColor = getSquareColor(square);
+
let marked = isSquareMarked(square);
let borderColor = isOver ? '#77777777' : 'transparent';
let borderWidth = type ? '3px' : '5px'
diff --git a/frontend/src/components/Challenges.jsx b/frontend/src/components/Challenges.jsx
index 2d632ad..f7cb638 100644
--- a/frontend/src/components/Challenges.jsx
+++ b/frontend/src/components/Challenges.jsx
@@ -1,12 +1,12 @@
-import { Button, Group, Stack, Text, Title } from '@mantine/core';
import React, { useEffect, useState } from 'react'
+
import { useNavigate } from 'react-router-dom';
+import { Button, Group, Stack, Text, Title } from '@mantine/core';
const Challenges = () => {
const navigate = useNavigate();
const [challenges, setChallenges] = useState([]);
const [error, setError] = useState(null);
- console.log(challenges)
useEffect(() => {
if (error) return;
@@ -20,7 +20,7 @@ const Challenges = () => {
if (response.ok) {
setChallenges(data);
} else {
- setError('Cannot')
+ setError('Cannot fetch challenges')
}
} catch (error) {
console.log(error);
@@ -33,10 +33,10 @@ const Challenges = () => {
if (!challenges || challenges.length === 0) {
return (
- <>
+
Challenges
No challenges found
- >
+
)
}
diff --git a/frontend/src/components/FriendsList.jsx b/frontend/src/components/FriendsList.jsx
index 95638d4..fcb5750 100644
--- a/frontend/src/components/FriendsList.jsx
+++ b/frontend/src/components/FriendsList.jsx
@@ -1,8 +1,10 @@
-import { Avatar, Flex, Loader, NavLink, Text, Title } from '@mantine/core';
-import { Link } from 'react-router-dom';
-import { UserDataContext } from '../context/user-data-context';
import React, { useContext } from 'react';
+import { Link } from 'react-router-dom';
+import { Avatar, Flex, Loader, NavLink, Text, Title } from '@mantine/core';
+
+import { UserDataContext } from '../context/user-data-context';
+
const FriendsList = () => {
const { friends } = useContext(UserDataContext)
diff --git a/frontend/src/components/GameHistory.jsx b/frontend/src/components/GameHistory.jsx
index aca74dc..3b2ec09 100644
--- a/frontend/src/components/GameHistory.jsx
+++ b/frontend/src/components/GameHistory.jsx
@@ -1,8 +1,10 @@
import React, { useContext } from 'react'
-import { ChessGameContext } from '../context/chess-game-context'
+
import { Button, Flex, ScrollArea, Tooltip, createStyles } from '@mantine/core';
import { IconChevronLeft, IconChevronRight } from '@tabler/icons-react'
+import { ChessGameContext } from '../context/chess-game-context'
+
const useStyles = createStyles(() => {
return {
movebtn: {
@@ -48,7 +50,7 @@ const GameHistory = () => {
)
}
- // console.log(currentIndex)
+
return (
diff --git a/frontend/src/components/Logout.jsx b/frontend/src/components/Logout.jsx
index 0589e74..424a85a 100644
--- a/frontend/src/components/Logout.jsx
+++ b/frontend/src/components/Logout.jsx
@@ -1,6 +1,7 @@
import React, { useState } from 'react'
+
+import { useNavigate } from 'react-router-dom'
import { Button, Flex, Modal, Text, Title } from '@mantine/core'
-import { redirect, useNavigate } from 'react-router-dom'
import { useDisclosure } from '@mantine/hooks'
const Logout = () => {
@@ -21,17 +22,16 @@ const Logout = () => {
const resData = await response.json();
setIsLoading(false);
if (response.ok) {
- console.log('Logged out')
localStorage.removeItem('user');
- close();
localStorage.removeItem('loggedIn');
+ close();
return navigate('/login');
} else {
return setErrorMsg(resData.message || "Something went wrong")
}
} catch (err) {
setIsLoading(false)
- console.log(err)
+ console.error(err)
setErrorMsg("Something went wrong");
}
}
diff --git a/frontend/src/components/MainLoader.jsx b/frontend/src/components/MainLoader.jsx
index 72c16ee..8964501 100644
--- a/frontend/src/components/MainLoader.jsx
+++ b/frontend/src/components/MainLoader.jsx
@@ -1,8 +1,10 @@
import React from 'react'
+
import { createPortal } from 'react-dom'
-import loaderImage from '../assets/images/chess_board_loader.png'
import { Loader, Title } from '@mantine/core'
+import loaderImage from '../assets/images/chess_board_loader.png'
+
const MainLoader = ({ errorMessage }) => {
return (
<>
@@ -22,10 +24,6 @@ const MainLoader = ({ errorMessage }) => {
}
>
- //
- //

- //
- //
)
}
diff --git a/frontend/src/components/NavbarLinks.jsx b/frontend/src/components/NavbarLinks.jsx
index 30b33a6..a75b283 100644
--- a/frontend/src/components/NavbarLinks.jsx
+++ b/frontend/src/components/NavbarLinks.jsx
@@ -1,7 +1,8 @@
+import React, { useState } from 'react'
+
+import { Link } from 'react-router-dom'
import { NavLink, Text, ThemeIcon } from '@mantine/core'
import { GearIcon, HomeIcon, PlayIcon } from '@radix-ui/react-icons'
-import React, { useState } from 'react'
-import { Link } from 'react-router-dom'
const NavbarLinks = () => {
const [active, setActive] = useState(null);
diff --git a/frontend/src/components/Piece.jsx b/frontend/src/components/Piece.jsx
index 0d3e5c0..b4f478d 100644
--- a/frontend/src/components/Piece.jsx
+++ b/frontend/src/components/Piece.jsx
@@ -17,6 +17,7 @@ const Piece = ({ cell }) => {
let { square, type, color } = cell;
let marked = isSquareMarked(square);
let logo = null;
+
switch (type) {
case 'p':
logo = color === 'w' ? 'pawn_white' : 'pawn_black';
@@ -46,7 +47,6 @@ const Piece = ({ cell }) => {
let borderColor = marked ? '#77777766' : 'transparent'
-
const style = transform ? {
transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`,
cursor: isDragging ? 'grabbing' : 'pointer',
diff --git a/frontend/src/context/chess-game-context.jsx b/frontend/src/context/chess-game-context.jsx
index 6949588..f559927 100644
--- a/frontend/src/context/chess-game-context.jsx
+++ b/frontend/src/context/chess-game-context.jsx
@@ -1,12 +1,13 @@
import React, { createContext, useReducer, useRef, useState } from 'react'
-import { ChessModified, chessInit } from '../utils/chess';
-import { DISPATCH_EVENTS, SOCKET_EVENTS } from '../constants';
+
import { socket } from '../socket';
+import { ChessModified, chessInit } from '../utils/chess';
+
+import { DISPATCH_EVENTS, SOCKET_EVENTS } from '../constants';
const { CAPTURE_PIECE, MOVE_PIECE, SELECT_PIECE, JUMP_TO, SET_GAME_HISTORY, END_GAME } = DISPATCH_EVENTS
const { GAME_END, CHESS_MOVE } = SOCKET_EVENTS;
-export const ChessGameContext = createContext();
-// myColor: null, chess: null, chessBoard: null, moveHints: null, selected: null, dispatch: null, handleOpponentMove: null, handleSquareClick: null, getSquareColor: null, isSquareMarked: null, selectPiece: null, handleDrop: null
+export const ChessGameContext = createContext();
const reducer = (state, action) => {
// console.log('Before', state);
diff --git a/frontend/src/layout/MainLayout.jsx b/frontend/src/layout/MainLayout.jsx
index 0604802..9a0a379 100644
--- a/frontend/src/layout/MainLayout.jsx
+++ b/frontend/src/layout/MainLayout.jsx
@@ -1,10 +1,12 @@
-import { AppShell, Burger, Container, Header, MediaQuery, Navbar, Paper, Text, createStyles, useMantineTheme } from '@mantine/core'
import React, { useContext, useState } from 'react'
-import NavbarLinks from '../components/NavbarLinks';
+
import { Outlet } from 'react-router-dom'
-import Logout from '../components/Logout';
+import { AppShell, Burger, Container, Header, MediaQuery, Navbar, Paper, Text, createStyles, useMantineTheme } from '@mantine/core'
+
import UserDataContextProvider, { UserDataContext } from '../context/user-data-context';
import MainLoader from '../components/MainLoader';
+import NavbarLinks from '../components/NavbarLinks';
+import Logout from '../components/Logout';
const useStyles = createStyles((theme) => ({
body: {
@@ -27,7 +29,7 @@ const MainLayout = () => {
const { classes } = useStyles();
const theme = useMantineTheme();
const [opened, setOpened] = useState(false);
- const { isLoggedIn,errorMessage } = useContext(UserDataContext);
+ const { isLoggedIn, errorMessage } = useContext(UserDataContext);
if (!isLoggedIn) {
return
diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx
index fff52ec..ff9371e 100644
--- a/frontend/src/main.jsx
+++ b/frontend/src/main.jsx
@@ -1,10 +1,12 @@
import React from 'react'
import ReactDOM from 'react-dom/client'
+
import App from './App.jsx'
-import './index.css'
import { MantineProvider } from '@mantine/styles'
import UserDataContextProvider from './context/user-data-context.jsx'
+import './index.css'
+
ReactDOM.createRoot(document.getElementById('root')).render(
diff --git a/frontend/src/pages/Authentication/Authentication.jsx b/frontend/src/pages/Authentication/Authentication.jsx
index 8330431..1b282a9 100644
--- a/frontend/src/pages/Authentication/Authentication.jsx
+++ b/frontend/src/pages/Authentication/Authentication.jsx
@@ -1,8 +1,10 @@
import React, { useContext, useState } from 'react';
+
+import { redirect, useNavigate } from 'react-router-dom';
import { Button, Card, Container, Text, TextInput, Title } from '@mantine/core';
-import { Form, redirect, useNavigate } from 'react-router-dom';
-import { ZodError, z } from 'zod';
import { useForm } from 'react-hook-form'
+import { ZodError, z } from 'zod';
+
import { UserDataContext } from '../../context/user-data-context';
let host = import.meta.env.VITE_BACKEND_HOST;
@@ -122,8 +124,6 @@ const SignupForm = () => {
return navigate('/');
} else {
setIsLoading(false);
- console.log(resData);
- console.log(resData.description);
setErrorMsg(resData.message);
resData?.error?.username && setError('username', { message: resData.error.username });
resData?.error?.email && setError('email', { message: resData.error.email });
@@ -157,67 +157,4 @@ const SignupForm = () => {
);
};
-export const loginAction = async ({ request }) => {
- try {
- const data = await request.formData();
- let url = `${import.meta.env.VITE_BACKEND_HOST}/api/auth/login`;
-
- const authData = {
- username: data.get('username'),
- password: data.get('password')
- }
-
-
-
- const response = await fetch(url, {
- method: 'POST',
- body: JSON.stringify(authData),
- headers: {
- 'Content-Type': 'application/json'
- }
- })
-
- if (response.status >= 400) return response;
- else {
- const responseBody = await response.json();
- localStorage.setItem('token', responseBody.token);
- localStorage.setItem('user', JSON.stringify(responseBody.user))
- return redirect('/home');
- }
- } catch (err) {
- if (err instanceof ZodError) {
-
- } else {
- console.er
- }
- }
-}
-
-export const signupAction = async ({ request }) => {
- const data = await request.formData();
- let url = `${import.meta.env.VITE_BACKEND_HOST}/api/auth/signup`;
-
- const authData = {
- username: data.get('username'),
- email: data.get('email'),
- password: data.get('password')
- }
-
- const response = await fetch(url, {
- method: 'POST',
- body: JSON.stringify(authData),
- headers: {
- 'Content-Type': 'application/json'
- }
- })
-
- if (response.status >= 400) return response;
- else {
- const responseBody = await response.json();
- localStorage.setItem('token', responseBody.token);
- localStorage.setItem('user', JSON.stringify(responseBody.user))
- return redirect('/home');
- }
-}
-
export default AuthenticationPage;
diff --git a/frontend/src/pages/Chess/ChessBoard.jsx b/frontend/src/pages/Chess/ChessBoard.jsx
index b41f8e8..326367a 100644
--- a/frontend/src/pages/Chess/ChessBoard.jsx
+++ b/frontend/src/pages/Chess/ChessBoard.jsx
@@ -1,11 +1,14 @@
-import React, { useContext, useEffect, useReducer, useRef } from 'react';
-import Cell from '../../components/Cell';
-import { socket } from '../../socket';
+import React, { useContext, useEffect } from 'react';
+
import { Flex, createStyles } from '@mantine/core';
import { DndContext } from '@dnd-kit/core'
+
+import Cell from '../../components/Cell';
import { ChessGameContext } from '../../context/chess-game-context';
+import { socket } from '../../socket';
import { SOCKET_EVENTS } from '../../constants';
const { CHESS_OPPONENT_MOVE, CHESS_MOVE } = SOCKET_EVENTS
+
const useStyles = createStyles((theme) => ({
chessboard: {
[theme.fn.largerThan('md')]: {
@@ -35,15 +38,9 @@ const useStyles = createStyles((theme) => ({
const ChessBoard = () => {
const { classes } = useStyles();
const { getChessBoard, handleOpponentMove, handleDrop, hasGameEnded, gameEndedReason } = useContext(ChessGameContext)
- let roomID = localStorage.getItem('roomID');
+ const roomID = localStorage.getItem('roomID');
const chessBoard = getChessBoard();
- let myColor = localStorage.getItem('myColor')
-
- // if (hasGameEnded) {
- // console.log('Game ended due to', gameEndedReason)
- // } else {
- // console.log('Game not ended yet')
- // }
+ const myColor = localStorage.getItem('myColor')
useEffect(() => {
socket.on(CHESS_OPPONENT_MOVE, handleOpponentMove)
diff --git a/frontend/src/pages/Chess/ChessGame.jsx b/frontend/src/pages/Chess/ChessGame.jsx
index 53f495c..0afaf29 100644
--- a/frontend/src/pages/Chess/ChessGame.jsx
+++ b/frontend/src/pages/Chess/ChessGame.jsx
@@ -1,13 +1,15 @@
-import { Avatar, Button, Flex, Group, Image, Loader, MediaQuery, Modal, NavLink, Text, Title } from '@mantine/core'
import React, { useContext, useEffect, useState } from 'react'
-import ChessBoard from '../Chess/ChessBoard'
+
import { useNavigate } from 'react-router-dom'
+import { useDisclosure } from '@mantine/hooks'
+import { Avatar, Button, Flex, Image, MediaQuery, Modal, NavLink, Text, Title } from '@mantine/core'
+
import { socket } from '../../socket'
import { getUserData } from '../../utils/auth'
import { ChessGameContext } from '../../context/chess-game-context'
+import ChessBoard from '../Chess/ChessBoard'
import GameHistory from '../../components/GameHistory'
import MainLoader from '../../components/MainLoader'
-import { useDisclosure } from '@mantine/hooks'
import { SOCKET_EVENTS } from '../../constants'
const { CONNECT, DISCONNECT, CHESS_OPPONENT_MOVE, USER_RESIGNED, JOIN_ROOM, JOIN_ROOM_ERROR, JOIN_ROOM_SUCCESS, ROOM_FULL, USER_JOINED_ROOM } = SOCKET_EVENTS;
@@ -91,7 +93,7 @@ const ChessGame = () => {
)
return (
- <>
+
Game ended due to {gameEndedReason}
@@ -156,7 +158,7 @@ const ChessGame = () => {
- >
+
)
}
diff --git a/frontend/src/pages/Chess/Timer.jsx b/frontend/src/pages/Chess/Timer.jsx
index 64a0fcf..97781fa 100644
--- a/frontend/src/pages/Chess/Timer.jsx
+++ b/frontend/src/pages/Chess/Timer.jsx
@@ -1,7 +1,8 @@
-import React, { useContext } from 'react'
-import useCountDown from '../../hooks/useCountDown'
+import React from 'react'
+
import { Box } from '@mantine/core';
-import { ChessGameContext } from '../../context/chess-game-context';
+
+import useCountDown from '../../hooks/useCountDown'
const Timer = ({ on }) => {
// const { isTimerOn } = useContext(ChessGameContext)
diff --git a/frontend/src/pages/Home.jsx b/frontend/src/pages/Home.jsx
index ba25c87..985d7ad 100644
--- a/frontend/src/pages/Home.jsx
+++ b/frontend/src/pages/Home.jsx
@@ -1,6 +1,7 @@
-import { Text } from '@mantine/core'
import React from 'react'
+import { Text } from '@mantine/core'
+
const Home = () => {
return (
Home
diff --git a/frontend/src/pages/Play/ChallengeFriend.jsx b/frontend/src/pages/Play/ChallengeFriend.jsx
index c8854a8..2bc64a1 100644
--- a/frontend/src/pages/Play/ChallengeFriend.jsx
+++ b/frontend/src/pages/Play/ChallengeFriend.jsx
@@ -1,6 +1,8 @@
-import { Avatar, Button, Card, Flex, Select, Text, Title } from '@mantine/core'
import React from 'react'
+
import { Form, redirect, useParams } from 'react-router-dom'
+import { Avatar, Button, Card, Flex, Select, Text, Title } from '@mantine/core'
+
import { getUserData } from '../../utils/auth'
const ChallengeFriend = () => {
diff --git a/frontend/src/pages/Play/Layout.jsx b/frontend/src/pages/Play/Layout.jsx
index 3dd88dc..66d9d63 100644
--- a/frontend/src/pages/Play/Layout.jsx
+++ b/frontend/src/pages/Play/Layout.jsx
@@ -1,6 +1,8 @@
-import { Avatar, Flex, Image, MediaQuery, NavLink } from '@mantine/core'
import React from 'react'
+
import { Outlet } from 'react-router-dom'
+import { Avatar, Flex, Image, MediaQuery, NavLink } from '@mantine/core'
+
import { getUserData } from '../../utils/auth';
const Layout = () => {
diff --git a/frontend/src/pages/Play/Play.jsx b/frontend/src/pages/Play/Play.jsx
index 0c906fc..f67114b 100644
--- a/frontend/src/pages/Play/Play.jsx
+++ b/frontend/src/pages/Play/Play.jsx
@@ -1,6 +1,7 @@
-import { Card, Flex, Image, NavLink, Title } from '@mantine/core'
import React from 'react'
+
import { Link } from 'react-router-dom'
+import { Card, Flex, Image, NavLink, Title } from '@mantine/core'
const Play = () => {
return (
@@ -8,7 +9,7 @@ const Play = () => {
width: '100%',
height: '600px',
textAlign: 'center',
- backgroundColor:'#262523'
+ backgroundColor: '#262523'
}}>
Play Chess
diff --git a/frontend/src/pages/Play/PlayFriend.jsx b/frontend/src/pages/Play/PlayFriend.jsx
index 744732c..f51b7b9 100644
--- a/frontend/src/pages/Play/PlayFriend.jsx
+++ b/frontend/src/pages/Play/PlayFriend.jsx
@@ -1,7 +1,9 @@
import React from 'react'
-import { Button, Card, Flex, Image, Modal, NativeSelect, Text, TextInput, Title } from '@mantine/core'
+
import { useDisclosure } from '@mantine/hooks'
import { IconSearch } from '@tabler/icons-react'
+import { Button, Card, Flex, Image, Modal, NativeSelect, Text, TextInput, Title } from '@mantine/core'
+
import FriendsList from '../../components/FriendsList'
import Challenges from '../../components/Challenges'
diff --git a/frontend/src/pages/Settings/Friends.jsx b/frontend/src/pages/Settings/Friends.jsx
index fb84bbd..71bc2c7 100644
--- a/frontend/src/pages/Settings/Friends.jsx
+++ b/frontend/src/pages/Settings/Friends.jsx
@@ -1,7 +1,9 @@
import React from 'react'
+
+import { useForm } from '@mantine/form'
import { Button, Card, Flex, TextInput, Title } from '@mantine/core'
import { IconSearch } from '@tabler/icons-react'
-import { useForm } from '@mantine/form'
+
import FriendsList from '../../components/FriendsList'
const Friends = () => {
diff --git a/frontend/src/pages/Settings/Profile.jsx b/frontend/src/pages/Settings/Profile.jsx
index 581f41c..d41224c 100644
--- a/frontend/src/pages/Settings/Profile.jsx
+++ b/frontend/src/pages/Settings/Profile.jsx
@@ -1,9 +1,11 @@
import React, { useContext } from 'react'
-import { Avatar, Button, Flex, Grid, Group, Stack, Text, TextInput, Title } from '@mantine/core'
-import { getUserData } from '../../utils/auth'
-import { UserDataContext } from '../../context/user-data-context'
+
import { useForm } from '@mantine/form'
import { Form } from 'react-router-dom'
+import { Avatar, Button, Flex, Grid, Group, Stack, Text, TextInput, Title } from '@mantine/core'
+
+import { getUserData } from '../../utils/auth'
+import { UserDataContext } from '../../context/user-data-context'
import MainLoader from '../../components/MainLoader'
const Profile = () => {
diff --git a/frontend/src/pages/Settings/Settings.jsx b/frontend/src/pages/Settings/Settings.jsx
index af571a0..23aabaf 100644
--- a/frontend/src/pages/Settings/Settings.jsx
+++ b/frontend/src/pages/Settings/Settings.jsx
@@ -1,7 +1,8 @@
+import React from 'react'
+
+import { Link, Outlet } from 'react-router-dom';
import { Box, Flex, NavLink, Title } from '@mantine/core'
import { ColorWheelIcon, GearIcon, GlobeIcon, LockOpen1Icon, PersonIcon } from '@radix-ui/react-icons'
-import React from 'react'
-import { Link, Outlet } from 'react-router-dom';
const Settings = () => {
return (