diff --git a/backend/routes/player.js b/backend/routes/player.js
index da7bd8f..bf9215f 100644
--- a/backend/routes/player.js
+++ b/backend/routes/player.js
@@ -26,14 +26,9 @@ router.post('/ready', function (req, res){
});
});
-
-//adding users to exisiting room or creating new room if full
-router.post('/add', function (req, res) {
-
-});
//deleting user in case he left before game started
-router.delete('/delete/{id}', function(req,res){
-
+router.post('/exit', function(req,res){
+ console.log("wyszedł XD")
});
module.exports = router;
\ No newline at end of file
diff --git a/backend/server.js b/backend/server.js
index 4a45cf4..e70320d 100644
--- a/backend/server.js
+++ b/backend/server.js
@@ -54,7 +54,7 @@ const roomRoutes = require("./routes/room");
const playerRoutes = require("./routes/player");
app.get('/', (req,res)=>{
- if(req.session.player){
+ if(req.session.name){
res.send({
name: req.session.name,
roomId: req.session.roomId,
diff --git a/package-lock.json b/package-lock.json
index e8d20ad..17b3119 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,7 @@
"@testing-library/user-event": "^12.8.3",
"axios": "^0.21.1",
"react": "^17.0.1",
+ "react-beforeunload": "^2.4.0",
"react-dom": "^17.0.1",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.3",
@@ -15825,6 +15826,18 @@
"node": ">=10"
}
},
+ "node_modules/react-beforeunload": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/react-beforeunload/-/react-beforeunload-2.4.0.tgz",
+ "integrity": "sha512-62n4aInZeZ3uf4Gx1rKvUjv0OoIZpeGVgnHtuMLKxNbDZz+gpsC9VyW7uEPyLHPTWqbP2UebIZa1t0K/I6S9/Q==",
+ "dependencies": {
+ "prop-types": "^15.7.2",
+ "use-latest": "^1.2.0"
+ },
+ "peerDependencies": {
+ "react": "^16.6.0 || ^17.0.0"
+ }
+ },
"node_modules/react-dev-utils": {
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
@@ -19408,6 +19421,35 @@
"node": ">=0.10.0"
}
},
+ "node_modules/use-isomorphic-layout-effect": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz",
+ "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/use-latest": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz",
+ "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==",
+ "dependencies": {
+ "use-isomorphic-layout-effect": "^1.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/util": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
@@ -33764,6 +33806,15 @@
"whatwg-fetch": "^3.4.1"
}
},
+ "react-beforeunload": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/react-beforeunload/-/react-beforeunload-2.4.0.tgz",
+ "integrity": "sha512-62n4aInZeZ3uf4Gx1rKvUjv0OoIZpeGVgnHtuMLKxNbDZz+gpsC9VyW7uEPyLHPTWqbP2UebIZa1t0K/I6S9/Q==",
+ "requires": {
+ "prop-types": "^15.7.2",
+ "use-latest": "^1.2.0"
+ }
+ },
"react-dev-utils": {
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz",
@@ -36596,6 +36647,20 @@
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ=="
},
+ "use-isomorphic-layout-effect": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz",
+ "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==",
+ "requires": {}
+ },
+ "use-latest": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz",
+ "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==",
+ "requires": {
+ "use-isomorphic-layout-effect": "^1.0.0"
+ }
+ },
"util": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
diff --git a/package.json b/package.json
index c681d99..9a103db 100644
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
"@testing-library/user-event": "^12.8.3",
"axios": "^0.21.1",
"react": "^17.0.1",
+ "react-beforeunload": "^2.4.0",
"react-dom": "^17.0.1",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.3",
diff --git a/src/App.js b/src/App.js
index 804c8ad..ad206b9 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,7 +1,10 @@
import React, { useEffect, useState } from 'react';
import axios from 'axios';
+
+import { Beforeunload } from 'react-beforeunload';
import { BrowserRouter as Router , Route , Redirect, Switch } from 'react-router-dom';
+import Gameboard from './components/Gameboard'
import Navbar from './components/Navbar'
import NameInput from './components/NameInput';
@@ -11,10 +14,21 @@ function App() {
withCredentials:true,
mode: 'cors'
})
- .then((response)=> response.id!=null ? setRedirect(true) : null);
+ .then( response => {
+ response.data.roomId!=null ? setRedirect(true) : setRedirect(false)
+ });
})
+
const [id, setId] = useState('')
const [redirect, setRedirect] = useState(false)
+
+ const handleExit = e => {
+ e.preventDefault();
+ window.addEventListener('unload', () => {
+ axios.post('http://localhost:3000/player/exit', {withCredentials:true, mode: 'cors'})
+ });
+ }
+
const idCallback = (id)=>{
setId(id);
@@ -27,10 +41,16 @@ function App() {
}
return (