From 2e740cbf81f41804cdf7cf355c3d41de9eca2ac7 Mon Sep 17 00:00:00 2001 From: lonkaars Date: Mon, 22 Mar 2021 16:10:30 +0100 Subject: private games / link invites working :tada: --- api/game/new.py | 19 +++++++++++++++++++ api/game/random.py | 11 +++++------ package.json | 1 + pages/game.tsx | 32 ++++++++++++++++++++++++++------ yarn.lock | 12 ++++++++++++ 5 files changed, 63 insertions(+), 12 deletions(-) diff --git a/api/game/new.py b/api/game/new.py index 80d0cae..8268ea2 100644 --- a/api/game/new.py +++ b/api/game/new.py @@ -1,8 +1,10 @@ import time +from flask import Blueprint, request from db import cursor, connection from socket_io import io from randid import new_uuid from game.socket import games, game +from auth.login_token import token_login def create_game(user_1_id, private = False, user_2_id = None): timestamp = int( time.time() * 1000 ) @@ -29,4 +31,21 @@ def start_game(game_id, user_2_id): io.emit("gameStart", room=games[game_id].room) +new_game = Blueprint('new_game', __name__) +@new_game.route('/new', methods = ["GET", "POST"]) +def index(): + data = request.get_json() + + token = request.cookies.get("token") or "" + if not token: + print("a temporary user should be set up here") + + user_id = token_login(token) + if not user_id: return "", 403 + + game_id = create_game(user_id, True) + + return { "id": game_id }, 200 + +dynamic_route = ["/game", new_game] diff --git a/api/game/random.py b/api/game/random.py index 9c16627..ffba520 100644 --- a/api/game/random.py +++ b/api/game/random.py @@ -1,4 +1,4 @@ -from flask import Blueprint, request, make_response +from flask import Blueprint, request from db import cursor, connection from randid import new_uuid import time @@ -11,17 +11,16 @@ from socket_io import io random_game = Blueprint('random', __name__) -@random_game.route('/random', methods = ['POST']) +@random_game.route('/random') def index(): data = request.get_json() token = request.cookies.get("token") or "" - user_id = data.get("user_id") or "" - if not user_id and not token: + if not token: print("a temporary user should be set up here") - if not user_id and token: - user_id = token_login(token) + user_id = token_login(token) + if not user_id: return "", 403 public_games = cursor.execute("select game_id from games where private = FALSE and status = \"wait_for_opponent\"").fetchall() diff --git a/package.json b/package.json index 5edb6eb..b0e68b5 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@types/react-cookies": "^0.1.0", "@types/uuid": "^8.3.0", "axios": "^0.21.1", + "copy-to-clipboard": "^3.3.1", "email-validator": "^2.0.4", "friendly-time": "^1.1.1", "image-blob-reduce": "^2.2.2", diff --git a/pages/game.tsx b/pages/game.tsx index 29eb4f0..4fa58a9 100644 --- a/pages/game.tsx +++ b/pages/game.tsx @@ -3,6 +3,8 @@ import axios from 'axios'; import * as cookies from 'react-cookies'; import { SocketContext } from '../components/socketContext'; import { Socket } from 'socket.io-client'; +import Icon from '@mdi/react'; +import copy from 'copy-to-clipboard'; import { NavBar } from '../components/navbar'; import { CenteredPage } from '../components/page'; @@ -17,6 +19,7 @@ import WifiTetheringRoundedIcon from '@material-ui/icons/WifiTetheringRounded'; import LinkRoundedIcon from '@material-ui/icons/LinkRounded'; import RefreshIcon from '@material-ui/icons/Refresh'; import FlagOutlinedIcon from '@material-ui/icons/FlagOutlined'; +import { mdiContentCopy } from '@mdi/js'; function VoerGame(props: { gameID: string; @@ -58,8 +61,8 @@ function VoerGame(props: { props.io.on("resign", () => { props.toast({ message: "Het potje is opgegeven", - type: "normal", - icon: }); + type: "normal", + icon: }); }); }, []); @@ -227,10 +230,7 @@ export default function GamePage() { }}> -