diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index cce9d3c..0000000 --- a/.prettierrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "semi": false -} diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..8152947 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "semi": false, + "tabWidth": 2, + "singleQuote": false, + "printWidth": 80, + "trailingComma": "all", + "plugins": ["prettier-plugin-tailwindcss"] +} diff --git a/jsconfig.json b/jsconfig.json index b8d6842..fedeac1 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "paths": { - "@/*": ["./src/*"] - } - } + "@/*": ["./src/*"], + }, + }, } diff --git a/package-lock.json b/package-lock.json index 31f3389..1912f20 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "eslint": "^8", "eslint-config-next": "14.1.0", "postcss": "^8", + "prettier-plugin-tailwindcss": "^0.5.11", "tailwindcss": "^3.3.0" } }, @@ -3671,6 +3672,91 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", + "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", + "dev": true, + "peer": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.5.11.tgz", + "integrity": "sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w==", + "dev": true, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + }, + "prettier-plugin-twig-melody": { + "optional": true + } + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", diff --git a/package.json b/package.json index 17034c9..2eda4a8 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "eslint": "^8", "eslint-config-next": "14.1.0", "postcss": "^8", + "prettier-plugin-tailwindcss": "^0.5.11", "tailwindcss": "^3.3.0" } } diff --git a/postcss.config.js b/postcss.config.js index 12a703d..33ad091 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -3,4 +3,4 @@ module.exports = { tailwindcss: {}, autoprefixer: {}, }, -}; +} diff --git a/rahoot.code-workspace b/rahoot.code-workspace new file mode 100644 index 0000000..22899df --- /dev/null +++ b/rahoot.code-workspace @@ -0,0 +1,55 @@ +{ + "folders": [ + { + "path": "." + } + ], + "extensions": { + "recommendations": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "formulahendry.auto-rename-tag", + "naumovs.color-highlight", + "usernamehw.errorlens", + "bradlc.vscode-tailwindcss" + ] + }, + "settings": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.formatOnSave": true, + "editor.detectIndentation": true, + "editor.rulers": [80], + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.suggestSelection": "recentlyUsed", + "editor.suggest.showKeywords": false + }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.renderWhitespace": "selection", + "files.exclude": { + "USE_GITIGNORE": true + }, + "javascript.validate.enable": false, + "search.exclude": { + "**/node_modules": true, + "**/bower_components": true, + "**/coverage": true, + "**/dist": true, + "**/build": true, + "**/.build": true, + "**/.gh-pages": true + }, + "npm.runSilent": true, + "explorer.confirmDragAndDrop": false, + "editor.formatOnPaste": false, + "files.autoSave": "onFocusChange", + "editor.cursorSmoothCaretAnimation": "off", + "editor.smoothScrolling": true, + "explorer.confirmDelete": false, + "git.autofetch": true, + "editor.tabSize": 2, + "scss.lint.unknownAtRules": "ignore" + } +} diff --git a/socket/package.json b/socket/package.json index c0591ee..e0a0c91 100644 --- a/socket/package.json +++ b/socket/package.json @@ -2,6 +2,9 @@ "version": "0.1.0", "private": true, "type": "module", + "scripts": { + "start": "node ./src/index.js" + }, "dependencies": { "socket.io": "^4.7.4" } diff --git a/socket/src/index.js b/socket/src/index.js index 76b6d4c..2cf6ea0 100644 --- a/socket/src/index.js +++ b/socket/src/index.js @@ -18,28 +18,28 @@ io.on("connection", (socket) => { console.log(`A user connected ${socket.id}`) socket.on("player:join", (player) => - Player.join(gameState, io, socket, player) + Player.join(gameState, io, socket, player), ) socket.on("manager:createRoom", () => - Manager.createRoom(gameState, io, socket) + Manager.createRoom(gameState, io, socket), ) socket.on("manager:kickPlayer", (playerId) => - Manager.kickPlayer(gameState, socket, io, playerId) + Manager.kickPlayer(gameState, socket, io, playerId), ) socket.on("manager:startGame", () => Manager.startGame(gameState, io, socket)) socket.on("player:selectedAnswer", (answerKey) => - Player.selectedAnswer(gameState, io, socket, answerKey) + Player.selectedAnswer(gameState, io, socket, answerKey), ) socket.on("manager:nextQuestion", () => - Manager.nextQuestion(gameState, io, socket) + Manager.nextQuestion(gameState, io, socket), ) socket.on("manager:showLeaderboard", () => - Manager.showLoaderboard(gameState, io, socket) + Manager.showLoaderboard(gameState, io, socket), ) socket.on("disconnect", () => { diff --git a/socket/src/utils/round.js b/socket/src/utils/round.js index 2a28512..7aa8c50 100644 --- a/socket/src/utils/round.js +++ b/socket/src/utils/round.js @@ -33,6 +33,16 @@ export const startRound = async (game, io, socket) => { total: game.questions.length, }) + io.to(game.room).emit("game:status", { + name: "SHOW_PREPARED", + data: { + totalAnswers: game.questions[game.currentQuestion].answers.length, + questionNumber: game.currentQuestion + 1, + }, + }) + + await sleep(4) + io.to(game.room).emit("game:status", { name: "SHOW_QUESTION", data: { diff --git a/socket/web.js b/socket/web.js deleted file mode 100644 index bcc6965..0000000 --- a/socket/web.js +++ /dev/null @@ -1,14 +0,0 @@ -import { Server } from "socket.io" - -const io = new Server({ - cors: { - origin: "*", - }, -}) - -io.on("connection", (socket) => { - console.log("a user connected") - io.to(socket.id).emit("message", "Hello from server") -}) - -io.listen(5057) diff --git a/src/components/AnswerButton.jsx b/src/components/AnswerButton.jsx index 14aac40..42861e1 100644 --- a/src/components/AnswerButton.jsx +++ b/src/components/AnswerButton.jsx @@ -10,8 +10,8 @@ export default function AnswerButton({ return (