From cb518a133a94eaea7069dc10a87e4255463eb4b2 Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Tue, 20 Aug 2024 19:55:45 +0300 Subject: [PATCH 01/16] =?UTF-8?q?=D1=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .prettierrc.js | 1 + README.md | 6 ++ src/components/Cards/Cards.jsx | 67 ++++++++++++++++--- src/components/Cards/Cards.module.css | 5 +- src/context/easyMode.js | 14 ++++ src/index.js | 5 +- src/pages/SelectLevelPage/SelectLevelPage.jsx | 13 ++++ .../SelectLevelPage.module.css | 42 ++++++++++++ 8 files changed, 140 insertions(+), 13 deletions(-) create mode 100644 src/context/easyMode.js diff --git a/.prettierrc.js b/.prettierrc.js index 65e18f5ff..97139a108 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -7,4 +7,5 @@ module.exports = { bracketSpacing: true, arrowParens: "avoid", htmlWhitespaceSensitivity: "ignore", + endOfLine: 'auto' }; diff --git a/README.md b/README.md index 9b90842c4..476a745ac 100644 --- a/README.md +++ b/README.md @@ -44,3 +44,9 @@ https://skypro-web-developer.github.io/react-memo/ Запускает eslint проверку кода, эта же команда запускается перед каждым коммитом. Если не получается закоммитить, попробуйте запустить эту команду и исправить все ошибки и предупреждения. + +### Оценочное время выполнения + +20 часов + +### Фактическое время выполнения diff --git a/src/components/Cards/Cards.jsx b/src/components/Cards/Cards.jsx index 7526a56c8..15be8eb2d 100644 --- a/src/components/Cards/Cards.jsx +++ b/src/components/Cards/Cards.jsx @@ -1,10 +1,12 @@ import { shuffle } from "lodash"; -import { useEffect, useState } from "react"; +import { useContext, useEffect, useState } from "react"; import { generateDeck } from "../../utils/cards"; import styles from "./Cards.module.css"; import { EndGameModal } from "../../components/EndGameModal/EndGameModal"; import { Button } from "../../components/Button/Button"; import { Card } from "../../components/Card/Card"; +import { LightContext } from "../../context/easyMode"; +// import { useNavigate } from "react-router-dom"; // Игра закончилась const STATUS_LOST = "STATUS_LOST"; @@ -41,8 +43,12 @@ function getTimerValue(startDate, endDate) { * previewSeconds - сколько секунд пользователь будет видеть все карты открытыми до начала игры */ export function Cards({ pairsCount = 3, previewSeconds = 5 }) { + const { isLight, tries, setTries } = useContext(LightContext); // В cards лежит игровое поле - массив карт и их состояние открыта\закрыта const [cards, setCards] = useState([]); + + const [playerLost, setPlayerLost] = useState(false); + // Текущий статус игры const [status, setStatus] = useState(STATUS_PREVIEW); @@ -68,7 +74,12 @@ export function Cards({ pairsCount = 3, previewSeconds = 5 }) { setTimer(getTimerValue(startDate, null)); setStatus(STATUS_IN_PROGRESS); } + // const navigate = useNavigate(); + function resetGame() { + // navigate("/"); + setTries(isLight ? 3 : 1); + setPlayerLost(false); setGameStartDate(null); setGameEndDate(null); setTimer(getTimerValue(null, null)); @@ -77,16 +88,26 @@ export function Cards({ pairsCount = 3, previewSeconds = 5 }) { /** * Обработка основного действия в игре - открытие карты. - * После открытия карты игра может пепереходит в следующие состояния + * После открытия карты игра может переходить в следующие состояния * - "Игрок выиграл", если на поле открыты все карты * - "Игрок проиграл", если на поле есть две открытые карты без пары * - "Игра продолжается", если не случилось первых двух условий */ + + useEffect(() => { + if (tries === 0) setPlayerLost(true); + }, [tries, playerLost]); + + useEffect(() => { + if (playerLost) finishGame(STATUS_LOST); + }, [playerLost]); + const openCard = clickedCard => { // Если карта уже открыта, то ничего не делаем if (clickedCard.open) { return; } + // Игровое поле после открытия кликнутой карты const nextCards = cards.map(card => { if (card.id !== clickedCard.id) { @@ -123,13 +144,37 @@ export function Cards({ pairsCount = 3, previewSeconds = 5 }) { return false; }); - const playerLost = openCardsWithoutPair.length >= 2; + function tryLost() { + if (openCardsWithoutPair.length === 2) { + setTries(tries - 1); + setTimeout(() => { + setCards( + cards.reduce((acc, card) => { + if (card.id === clickedCard.id) { + return [...acc, { ...card, open: false }]; + } + return [...acc, card]; + }, []), + ); + setCards( + cards.reduce((acc, card) => { + const previousCard = openCardsWithoutPair.find(item => item.id !== clickedCard.id); + if (card.id === previousCard.id) { + return [...acc, { ...card, open: false }]; + } + return [...acc, card]; + }, []), + ); + }, 1000); + } + } + tryLost(); // "Игрок проиграл", т.к на поле есть две открытые карты без пары - if (playerLost) { - finishGame(STATUS_LOST); - return; - } + // if (lost) { + // finishGame(STATUS_LOST); + // return; + // } // ... игра продолжается }; @@ -195,9 +240,13 @@ export function Cards({ pairsCount = 3, previewSeconds = 5 }) { )} - {status === STATUS_IN_PROGRESS ? : null} + {status === STATUS_IN_PROGRESS ? ( +
+ {isLight &&

Осталось попыток {tries}

} + +
+ ) : null} -
{cards.map(card => ( { + const [isLight, setIsLight] = useState(true); + const [tries, setTries] = useState(3); + + useEffect(() => { + isLight ? setTries(3) : setTries(1); + }, [isLight]); + + return {children}; +}; diff --git a/src/index.js b/src/index.js index f689c5f0b..ce8753683 100644 --- a/src/index.js +++ b/src/index.js @@ -3,10 +3,13 @@ import ReactDOM from "react-dom/client"; import "./index.css"; import { RouterProvider } from "react-router-dom"; import { router } from "./router"; +import { LightProvider } from "./context/easyMode"; const root = ReactDOM.createRoot(document.getElementById("root")); root.render( - + + + , ); diff --git a/src/pages/SelectLevelPage/SelectLevelPage.jsx b/src/pages/SelectLevelPage/SelectLevelPage.jsx index 758942e51..094aab3d4 100644 --- a/src/pages/SelectLevelPage/SelectLevelPage.jsx +++ b/src/pages/SelectLevelPage/SelectLevelPage.jsx @@ -1,7 +1,10 @@ import { Link } from "react-router-dom"; import styles from "./SelectLevelPage.module.css"; +import { useContext } from "react"; +import { LightContext } from "../../context/easyMode"; export function SelectLevelPage() { + const { isLight, setIsLight } = useContext(LightContext); return (
@@ -23,6 +26,16 @@ export function SelectLevelPage() { +
); diff --git a/src/pages/SelectLevelPage/SelectLevelPage.module.css b/src/pages/SelectLevelPage/SelectLevelPage.module.css index 390ac0def..6586529d2 100644 --- a/src/pages/SelectLevelPage/SelectLevelPage.module.css +++ b/src/pages/SelectLevelPage/SelectLevelPage.module.css @@ -62,3 +62,45 @@ .levelLink:visited { color: #0080c1; } + +.checkbox { + position: relative; + width: 24px; + height: 13px; + border-radius: 100px; + background: #0080c1; + outline: none; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + + &::before { + content: ""; + position: absolute; + top: 1px; + left: 1px; + width: 11px; + height: 11px; + border-radius: 50%; + background-color: #fff; + transition: 0.5s; + } + &:checked::before { + left: 12px; + background: #fff; + } + &:checked { + background-color: #046d2c; + } +} + +.checkboxLabel { + color: #004980; + text-align: center; + font-variant-numeric: lining-nums proportional-nums; + font-family: StratosSkyeng; + font-size: 20px; + font-style: normal; + font-weight: 400; + line-height: 48px; +} From b07fd9e011cbd27ee9fc4db47bdc47975b7e73ab Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Tue, 20 Aug 2024 19:59:48 +0300 Subject: [PATCH 02/16] s --- src/components/Cards/Cards.jsx | 4 ++-- src/components/Cards/Cards.module.css | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/Cards/Cards.jsx b/src/components/Cards/Cards.jsx index 15be8eb2d..464596c40 100644 --- a/src/components/Cards/Cards.jsx +++ b/src/components/Cards/Cards.jsx @@ -241,9 +241,9 @@ export function Cards({ pairsCount = 3, previewSeconds = 5 }) { )}
{status === STATUS_IN_PROGRESS ? ( -
- {isLight &&

Осталось попыток {tries}

} +
+ {isLight &&

Осталось попыток: {tries}

}
) : null}
diff --git a/src/components/Cards/Cards.module.css b/src/components/Cards/Cards.module.css index 3869c924c..e437c169f 100644 --- a/src/components/Cards/Cards.module.css +++ b/src/components/Cards/Cards.module.css @@ -69,3 +69,8 @@ margin-bottom: -12px; } + +.tries { + color: #fff; + margin-left: 50px; +} From ea1c797b7dce729017043478dee2f3188bb253d2 Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Tue, 20 Aug 2024 23:11:41 +0300 Subject: [PATCH 03/16] api js created --- public/assets/fonts/Poppins-Regular.woff2 | Bin 0 -> 49048 bytes public/assets/fonts/Roboto-Regular.woff2 | Bin 0 -> 65916 bytes src/api.js | 30 +++++++ src/pages/LeaderBoardPage/LeaderBoardPage.jsx | 45 ++++++++++ .../LeaderBoardPage.module.css | 80 ++++++++++++++++++ src/pages/SelectLevelPage/SelectLevelPage.jsx | 3 + .../SelectLevelPage.module.css | 12 +++ src/router.js | 5 ++ 8 files changed, 175 insertions(+) create mode 100644 public/assets/fonts/Poppins-Regular.woff2 create mode 100644 public/assets/fonts/Roboto-Regular.woff2 create mode 100644 src/api.js create mode 100644 src/pages/LeaderBoardPage/LeaderBoardPage.jsx create mode 100644 src/pages/LeaderBoardPage/LeaderBoardPage.module.css diff --git a/public/assets/fonts/Poppins-Regular.woff2 b/public/assets/fonts/Poppins-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4aae28cf15ebf4e02bf9d9007a5f9c12be78a949 GIT binary patch literal 49048 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"bI<&cle5@u_qzx(6Sz8d< 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 literal 0 HcmV?d00001 diff --git a/public/assets/fonts/Roboto-Regular.woff2 b/public/assets/fonts/Roboto-Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..30370cf27b2b98b5a7a7e4f04b13c8be443f64b2 GIT binary patch literal 65916 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 NUVuvsa)1la{{pZsGTs0H literal 0 HcmV?d00001 diff --git a/src/api.js b/src/api.js new file mode 100644 index 000000000..edb0ca895 --- /dev/null +++ b/src/api.js @@ -0,0 +1,30 @@ +const URL = "https://wedev-api.sky.pro/api/leaderboard"; + +export async function getLeaders() { + const response = await fetch(URL); + + if (response.status !== 200) { + throw new Error("Ошибка"); + } + const data = await response.json(); + return data.leaders; +} + +export async function addLeader({ name, time }) { + const response = await fetch(URL, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + name, + time, + }), + }); + + if (!response.ok) { + throw new Error("Ошибка!"); + } + const data = await response.json(); + return data.leaders; +} diff --git a/src/pages/LeaderBoardPage/LeaderBoardPage.jsx b/src/pages/LeaderBoardPage/LeaderBoardPage.jsx new file mode 100644 index 000000000..fb4d58b06 --- /dev/null +++ b/src/pages/LeaderBoardPage/LeaderBoardPage.jsx @@ -0,0 +1,45 @@ +import React, { useEffect, useState } from "react"; +import { Link } from "react-router-dom"; +import styles from "../LeaderBoardPage/LeaderBoardPage.module.css"; +import { getLeaders } from "../../api"; + +export function LeaderBoard() { + const [leaders, setLeaders] = useState([]); + + useEffect(() => { + const fetchLeaders = async () => { + try { + const data = await getLeaders(); + setLeaders(data); + } catch (error) { + console.error("Ошибка при загрузке данных:", error); + } + }; + fetchLeaders(); + }, []); + + return ( +
+
+

Лидерборд

+ + + +
+
+
+

Позиция

+

Пользователь

+

Время

+
+ {leaders.map((leader, index) => ( +
+

#{index + 1}

+

{leader.name}

+

{leader.time}

+
+ ))} +
+
+ ); +} diff --git a/src/pages/LeaderBoardPage/LeaderBoardPage.module.css b/src/pages/LeaderBoardPage/LeaderBoardPage.module.css new file mode 100644 index 000000000..15d3a38c8 --- /dev/null +++ b/src/pages/LeaderBoardPage/LeaderBoardPage.module.css @@ -0,0 +1,80 @@ +@font-face { + font-family: "Roboto"; + src: url("/public/assets/fonts/Roboto-Regular.woff2") format("woff2"); + src: url("/public/assets/fonts/Poppins-Regular.woff2") format("woff2"); + font-weight: 400; + font-style: normal; +} + +.header { + display: flex; + flex-direction: row; + justify-content: space-around; + margin-top: 50px; +} + +.title { + font-family: Roboto; + font-size: 24px; + font-weight: 400; + line-height: 32px; + text-align: left; + color: #fff; +} + +.btn { + width: 246px; + height: 50px; + border-radius: 12px; + border: none; + background-color: rgba(122, 193, 0, 1); + font-family: Roboto; + font-size: 24px; + font-weight: 400; + line-height: 32px; + text-align: center; + color: #fff; + cursor: pointer; +} + +.btn:hover { + background: #7ac100cc; +} + +.listHeader { + width: 944px; + height: 64px; + border-radius: 15px; + background-color: #fff; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + margin-top: 40px; + padding-left: 20px; + padding-right: 20px; +} + +.listHeaderText { + font-family: Poppins; + font-size: 24px; + font-weight: 400; + line-height: 32px; + text-align: left; + color: rgba(153, 153, 153, 1); +} + +.listText { + font-family: Poppins; + font-size: 24px; + font-weight: 400; + line-height: 32px; + text-align: left; + color: rgba(0, 0, 0, 1); +} + +.flex { + display: flex; + flex-direction: column; + align-items: center; +} diff --git a/src/pages/SelectLevelPage/SelectLevelPage.jsx b/src/pages/SelectLevelPage/SelectLevelPage.jsx index 094aab3d4..56e52ba17 100644 --- a/src/pages/SelectLevelPage/SelectLevelPage.jsx +++ b/src/pages/SelectLevelPage/SelectLevelPage.jsx @@ -36,6 +36,9 @@ export function SelectLevelPage() { /> Easy mode + + Перейти к лидерборду + ); diff --git a/src/pages/SelectLevelPage/SelectLevelPage.module.css b/src/pages/SelectLevelPage/SelectLevelPage.module.css index 6586529d2..91aaadfec 100644 --- a/src/pages/SelectLevelPage/SelectLevelPage.module.css +++ b/src/pages/SelectLevelPage/SelectLevelPage.module.css @@ -104,3 +104,15 @@ font-weight: 400; line-height: 48px; } + +.leaderboard { + font-family: Roboto; + font-size: 18px; + font-weight: 400; + line-height: 32px; + text-align: left; + color: #004980; +} +.leaderboard:visited { + color: #004980; +} diff --git a/src/router.js b/src/router.js index da6e94b51..7fe177892 100644 --- a/src/router.js +++ b/src/router.js @@ -1,6 +1,7 @@ import { createBrowserRouter } from "react-router-dom"; import { GamePage } from "./pages/GamePage/GamePage"; import { SelectLevelPage } from "./pages/SelectLevelPage/SelectLevelPage"; +import { LeaderBoard } from "./pages/LeaderBoardPage/LeaderBoardPage"; export const router = createBrowserRouter( [ @@ -12,6 +13,10 @@ export const router = createBrowserRouter( path: "/game/:pairsCount", element: , }, + { + path: "/leaderboard", + element: , + }, ], /** * basename нужен для корректной работы в gh pages From 50f7edfea658a44ca74b3af2ee1f7d87d1ec95c4 Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Wed, 21 Aug 2024 01:02:58 +0300 Subject: [PATCH 04/16] HElp --- README.md | 1 + src/api.js | 3 +- src/components/EndGameModal/EndGameModal.jsx | 69 +++++++++++++++---- .../EndGameModal/EndGameModal.module.css | 29 +++++++- 4 files changed, 86 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 476a745ac..9589133a1 100644 --- a/README.md +++ b/README.md @@ -50,3 +50,4 @@ https://skypro-web-developer.github.io/react-memo/ 20 часов ### Фактическое время выполнения +4 + 2 \ No newline at end of file diff --git a/src/api.js b/src/api.js index edb0ca895..5ad147c59 100644 --- a/src/api.js +++ b/src/api.js @@ -10,13 +10,14 @@ export async function getLeaders() { return data.leaders; } -export async function addLeader({ name, time }) { +export async function addLeader({ id, name, time }) { const response = await fetch(URL, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ + id, name, time, }), diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index 722394833..5422d4071 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -1,27 +1,68 @@ import styles from "./EndGameModal.module.css"; - import { Button } from "../Button/Button"; - import deadImageUrl from "./images/dead.png"; import celebrationImageUrl from "./images/celebration.png"; +import { addLeader } from "../../api"; +import { useContext, useState } from "react"; +import { LightContext } from "../../context/easyMode"; +import { useNavigate } from "react-router-dom"; export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, onClick }) { - const title = isWon ? "Вы победили!" : "Вы проиграли!"; - + const { isLight } = useContext(LightContext); + const title = isWon ? `${isLight ? "Вы выиграли" : "Вы попали на Лидерборд!"}` : "Вы проиграли!"; const imgSrc = isWon ? celebrationImageUrl : deadImageUrl; + const imgAlt = isWon ? "celebration emoji" : "dead emoji"; + const [addPlayer, setAddPlayer] = useState({ + id: "", + name: "", + time: gameDurationSeconds.toString().padStart(2, "0"), + }); + const navigate = useNavigate(); - const imgAlt = isWon ? "celebration emodji" : "dead emodji"; + const addUser = async e => { + e.preventDefault(); + try { + await addLeader(addPlayer); + navigate("/leaderboard"); + } catch (error) { + console.error("Ошибка при добавлении игрока:", error); + } + }; return ( -
- {imgAlt} -

{title}

-

Затраченное время:

-
- {gameDurationMinutes.toString().padStart("2", "0")}.{gameDurationSeconds.toString().padStart("2", "0")} +
{ + e.preventDefault(); + navigate("/leaderboard"); + } + } + > +
+ {imgAlt} +

{title}

+ {isWon && !isLight && ( + setAddPlayer({ ...addPlayer, name: e.target.value })} + className={styles.input} + placeholder="Пользователь" + type="text" + value={addPlayer.name} + /> + )} +

Затраченное время:

+
+ {gameDurationMinutes.toString().padStart(2, "0")}.{gameDurationSeconds.toString().padStart(2, "0")} +
+ +
- - -
+ ); } diff --git a/src/components/EndGameModal/EndGameModal.module.css b/src/components/EndGameModal/EndGameModal.module.css index 9368cb8b5..1f400fef8 100644 --- a/src/components/EndGameModal/EndGameModal.module.css +++ b/src/components/EndGameModal/EndGameModal.module.css @@ -1,6 +1,6 @@ .modal { width: 480px; - height: 459px; + height: 634px; border-radius: 12px; background: #c2f5ff; display: flex; @@ -16,6 +16,7 @@ } .title { + text-align: center; color: #004980; font-variant-numeric: lining-nums proportional-nums; font-family: StratosSkyeng; @@ -49,3 +50,29 @@ margin-bottom: 40px; } +.input { + border-radius: 10px; + border: none; + margin-bottom: 30px; + width: 276px; + height: 45px; + text-align: center; +} +input::placeholder{ + color: #999999; + font-weight: 400; + font-size: 24px; +} + +.btnLeaderBoard{ + padding-top: 20px; + background: none; + border: none; + text-decoration: underline; + cursor: pointer; + font-size: 18px; +} +.btnLeaderBoard:hover{ + transform: scale(1.05); + color: rgb(113, 113, 255); +} \ No newline at end of file From 5de3e19fbb445e565f64baa7a5d2786af648d30e Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Wed, 21 Aug 2024 11:24:03 +0300 Subject: [PATCH 05/16] =?UTF-8?q?=D1=84=D1=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api.js | 21 ++++++++------------ src/components/EndGameModal/EndGameModal.jsx | 1 - 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/api.js b/src/api.js index 5ad147c59..f7cd9b3b4 100644 --- a/src/api.js +++ b/src/api.js @@ -10,22 +10,17 @@ export async function getLeaders() { return data.leaders; } -export async function addLeader({ id, name, time }) { - const response = await fetch(URL, { +export async function postLeader({ name, time }) { + const response = await fetch(baseHost, { method: "POST", - headers: { - "Content-Type": "application/json", - }, body: JSON.stringify({ - id, - name, - time, + name: name, + time: time, }), }); - - if (!response.ok) { - throw new Error("Ошибка!"); + if (response.status === 400) { + throw new Error("Полученные данные не в формате JSON"); } const data = await response.json(); - return data.leaders; -} + return data; +} \ No newline at end of file diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index 5422d4071..371116b80 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -13,7 +13,6 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, const imgSrc = isWon ? celebrationImageUrl : deadImageUrl; const imgAlt = isWon ? "celebration emoji" : "dead emoji"; const [addPlayer, setAddPlayer] = useState({ - id: "", name: "", time: gameDurationSeconds.toString().padStart(2, "0"), }); From 73b44c23d19e209200103b987d1ca9834eae69cd Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Wed, 21 Aug 2024 11:24:31 +0300 Subject: [PATCH 06/16] aaa --- src/api.js | 4 ++-- src/components/EndGameModal/EndGameModal.jsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/api.js b/src/api.js index f7cd9b3b4..35d5f2b2e 100644 --- a/src/api.js +++ b/src/api.js @@ -11,7 +11,7 @@ export async function getLeaders() { } export async function postLeader({ name, time }) { - const response = await fetch(baseHost, { + const response = await fetch(URL, { method: "POST", body: JSON.stringify({ name: name, @@ -23,4 +23,4 @@ export async function postLeader({ name, time }) { } const data = await response.json(); return data; -} \ No newline at end of file +} diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index 371116b80..c149c92f9 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -2,7 +2,7 @@ import styles from "./EndGameModal.module.css"; import { Button } from "../Button/Button"; import deadImageUrl from "./images/dead.png"; import celebrationImageUrl from "./images/celebration.png"; -import { addLeader } from "../../api"; +import { postLeader } from "../../api"; import { useContext, useState } from "react"; import { LightContext } from "../../context/easyMode"; import { useNavigate } from "react-router-dom"; @@ -21,7 +21,7 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, const addUser = async e => { e.preventDefault(); try { - await addLeader(addPlayer); + await postLeader(addPlayer); navigate("/leaderboard"); } catch (error) { console.error("Ошибка при добавлении игрока:", error); From acf6fdd3ff529aa61d409fd82bbd2f6ad975dd87 Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Thu, 22 Aug 2024 20:39:56 +0300 Subject: [PATCH 07/16] =?UTF-8?q?=D0=BB=D0=B8=D0=B4=D0=B5=D1=80=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?=D0=BD=D0=BE=D1=80=D0=BC=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/EndGameModal/EndGameModal.jsx | 27 ++++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index c149c92f9..069241152 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -18,27 +18,20 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, }); const navigate = useNavigate(); - const addUser = async e => { + const handleLeaderboardRedirect = async e => { e.preventDefault(); - try { - await postLeader(addPlayer); - navigate("/leaderboard"); - } catch (error) { - console.error("Ошибка при добавлении игрока:", error); + if (isWon && !isLight) { + try { + await postLeader(addPlayer); + } catch (error) { + console.error("Ошибка при добавлении игрока:", error); + } } + navigate("/leaderboard"); }; return ( -
{ - e.preventDefault(); - navigate("/leaderboard"); - } - } - > +
{imgAlt}

{title}

@@ -58,7 +51,7 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, -
From a2ebe9bd2c4c785aeac4519fde95e80aaf90f260 Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Thu, 22 Aug 2024 20:44:39 +0300 Subject: [PATCH 08/16] =?UTF-8?q?=D0=9F=D1=80=D0=B8=20=D0=BD=D0=B0=D0=B6?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D0=B8=20=D0=BD=D0=B0=20=D1=8D=D0=BD=D0=B5?= =?UTF-8?q?=D1=82=D1=80=20=D1=82=D0=B0=D0=BA=20=D0=B6=D0=B5=20=D0=BE=D1=82?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?=D0=BB=D0=B8=D0=B4=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/EndGameModal/EndGameModal.jsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index 069241152..af8f09380 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -29,7 +29,12 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, } navigate("/leaderboard"); }; - + const handleKeyDown = e => { + if (e.key === "Enter") { + e.preventDefault(); + handleLeaderboardRedirect(e); + } + }; return (
@@ -38,6 +43,7 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, {isWon && !isLight && ( setAddPlayer({ ...addPlayer, name: e.target.value })} + onKeyDown={handleKeyDown} className={styles.input} placeholder="Пользователь" type="text" From e2675ebf0403afa96607f91e600bf9546668835d Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Thu, 22 Aug 2024 21:05:45 +0300 Subject: [PATCH 09/16] =?UTF-8?q?=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BB=D0=B8=D0=B4=D0=B5=D1=80=D0=B1?= =?UTF-8?q?=D0=BE=D1=80=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/LeaderBoardPage/LeaderBoardPage.jsx | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/pages/LeaderBoardPage/LeaderBoardPage.jsx b/src/pages/LeaderBoardPage/LeaderBoardPage.jsx index fb4d58b06..ada34c3bf 100644 --- a/src/pages/LeaderBoardPage/LeaderBoardPage.jsx +++ b/src/pages/LeaderBoardPage/LeaderBoardPage.jsx @@ -5,19 +5,38 @@ import { getLeaders } from "../../api"; export function LeaderBoard() { const [leaders, setLeaders] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); useEffect(() => { const fetchLeaders = async () => { try { const data = await getLeaders(); - setLeaders(data); - } catch (error) { - console.error("Ошибка при загрузке данных:", error); + if (Array.isArray(data)) { + const sortedLeaders = data.sort((a, b) => a.time - b.time); + setLeaders(sortedLeaders); + } else { + setError("Неверный формат данных"); + } + } catch (err) { + console.error("Ошибка при загрузке данных:", err); + setError("Ошибка при загрузке данных"); + } finally { + setLoading(false); } }; + fetchLeaders(); }, []); + if (loading) { + return

Загрузка...

; + } + + if (error) { + return

{error}

; + } + return (
@@ -26,20 +45,20 @@ export function LeaderBoard() {
-
-
+
    +
  • Позиция

    Пользователь

    Время

    -
+ {leaders.map((leader, index) => ( -
+
  • #{index + 1}

    {leader.name}

    {leader.time}

    -
  • + ))} -
    +
    ); } From 787dd903bbe474a78387341d819e73ed2b0d5ffe Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Thu, 22 Aug 2024 23:28:01 +0300 Subject: [PATCH 10/16] =?UTF-8?q?=D0=A3=D1=81=D0=BB=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BF=D0=B0=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=20=D0=BB=D0=B8=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B1=D0=BE=D1=80=D0=B4=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/EndGameModal/EndGameModal.jsx | 8 +++++--- src/context/PairsCountContext.jsx | 12 ++++++++++++ src/pages/GamePage/GamePage.jsx | 10 +++++----- 3 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 src/context/PairsCountContext.jsx diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index af8f09380..e0ee9325f 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -6,10 +6,12 @@ import { postLeader } from "../../api"; import { useContext, useState } from "react"; import { LightContext } from "../../context/easyMode"; import { useNavigate } from "react-router-dom"; +import { usePairsCount } from "../../context/PairsCountContext"; export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, onClick }) { const { isLight } = useContext(LightContext); - const title = isWon ? `${isLight ? "Вы выиграли" : "Вы попали на Лидерборд!"}` : "Вы проиграли!"; + const { pairsCount } = usePairsCount(); + const title = isWon ? (isLight || pairsCount < 9 ? "Вы выиграли" : "Вы попали на Лидерборд!") : "Вы проиграли!"; const imgSrc = isWon ? celebrationImageUrl : deadImageUrl; const imgAlt = isWon ? "celebration emoji" : "dead emoji"; const [addPlayer, setAddPlayer] = useState({ @@ -20,7 +22,7 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, const handleLeaderboardRedirect = async e => { e.preventDefault(); - if (isWon && !isLight) { + if (isWon && !isLight && pairsCount >= 9) { try { await postLeader(addPlayer); } catch (error) { @@ -40,7 +42,7 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes,
    {imgAlt}

    {title}

    - {isWon && !isLight && ( + {isWon && !isLight && pairsCount >= 9 && ( setAddPlayer({ ...addPlayer, name: e.target.value })} onKeyDown={handleKeyDown} diff --git a/src/context/PairsCountContext.jsx b/src/context/PairsCountContext.jsx new file mode 100644 index 000000000..554d84773 --- /dev/null +++ b/src/context/PairsCountContext.jsx @@ -0,0 +1,12 @@ +import { createContext, useContext, useState } from "react"; + +const PairsCountContext = createContext(); + +export function usePairsCount() { + return useContext(PairsCountContext); +} + +export function PairsCountProvider({ children, initialPairsCount }) { + const [pairsCount, setPairsCount] = useState(initialPairsCount); + return {children}; +} diff --git a/src/pages/GamePage/GamePage.jsx b/src/pages/GamePage/GamePage.jsx index a4be871db..0845d0d99 100644 --- a/src/pages/GamePage/GamePage.jsx +++ b/src/pages/GamePage/GamePage.jsx @@ -1,13 +1,13 @@ import { useParams } from "react-router-dom"; - import { Cards } from "../../components/Cards/Cards"; +import { PairsCountProvider } from "../../context/PairsCountContext"; export function GamePage() { const { pairsCount } = useParams(); - + const parsedPairsCount = parseInt(pairsCount, 10); return ( - <> - - + + + ); } From ed412c8a385227df672d932cad25a23e6becb3a6 Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Fri, 23 Aug 2024 00:09:29 +0300 Subject: [PATCH 11/16] =?UTF-8?q?=D0=BF=D0=BE=D1=87=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/EndGameModal/EndGameModal.jsx | 43 +++++++++++++++---- src/pages/LeaderBoardPage/LeaderBoardPage.jsx | 2 +- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index e0ee9325f..1a94d834d 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -2,8 +2,8 @@ import styles from "./EndGameModal.module.css"; import { Button } from "../Button/Button"; import deadImageUrl from "./images/dead.png"; import celebrationImageUrl from "./images/celebration.png"; -import { postLeader } from "../../api"; -import { useContext, useState } from "react"; +import { postLeader, getLeaders } from "../../api"; +import { useContext, useState, useEffect } from "react"; import { LightContext } from "../../context/easyMode"; import { useNavigate } from "react-router-dom"; import { usePairsCount } from "../../context/PairsCountContext"; @@ -11,18 +11,43 @@ import { usePairsCount } from "../../context/PairsCountContext"; export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, onClick }) { const { isLight } = useContext(LightContext); const { pairsCount } = usePairsCount(); - const title = isWon ? (isLight || pairsCount < 9 ? "Вы выиграли" : "Вы попали на Лидерборд!") : "Вы проиграли!"; - const imgSrc = isWon ? celebrationImageUrl : deadImageUrl; - const imgAlt = isWon ? "celebration emoji" : "dead emoji"; + const [isInTopTen, setIsInTopTen] = useState(false); const [addPlayer, setAddPlayer] = useState({ name: "", time: gameDurationSeconds.toString().padStart(2, "0"), }); const navigate = useNavigate(); + useEffect(() => { + if (isWon && !isLight && pairsCount >= 9) { + const checkLeaderboard = async () => { + try { + const leaders = await getLeaders(); + if (Array.isArray(leaders) && leaders.length >= 10) { + const sortedLeaders = leaders.sort((a, b) => a.time - b.time); + const slowestTimeInTopTen = sortedLeaders[9].time; + if (gameDurationSeconds < slowestTimeInTopTen) { + setIsInTopTen(true); + } + } else { + setIsInTopTen(true); + } + } catch (error) { + console.error("Ошибка при проверке лидерборда:", error); + } + }; + checkLeaderboard(); + } + }, [isWon, isLight, pairsCount, gameDurationSeconds]); + + const title = isWon ? (isInTopTen ? "Поздравляю, вы попали в Лидерборд!" : "Вы выиграли") : "Вы проиграли!"; + + const imgSrc = isWon ? celebrationImageUrl : deadImageUrl; + const imgAlt = isWon ? "celebration emoji" : "dead emoji"; + const handleLeaderboardRedirect = async e => { e.preventDefault(); - if (isWon && !isLight && pairsCount >= 9) { + if (isWon && isInTopTen) { try { await postLeader(addPlayer); } catch (error) { @@ -31,23 +56,25 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, } navigate("/leaderboard"); }; + const handleKeyDown = e => { if (e.key === "Enter") { e.preventDefault(); handleLeaderboardRedirect(e); } }; + return (
    {imgAlt}

    {title}

    - {isWon && !isLight && pairsCount >= 9 && ( + {isWon && isInTopTen && ( setAddPlayer({ ...addPlayer, name: e.target.value })} onKeyDown={handleKeyDown} className={styles.input} - placeholder="Пользователь" + placeholder="Введите имя" type="text" value={addPlayer.name} /> diff --git a/src/pages/LeaderBoardPage/LeaderBoardPage.jsx b/src/pages/LeaderBoardPage/LeaderBoardPage.jsx index ada34c3bf..3c41bd344 100644 --- a/src/pages/LeaderBoardPage/LeaderBoardPage.jsx +++ b/src/pages/LeaderBoardPage/LeaderBoardPage.jsx @@ -13,7 +13,7 @@ export function LeaderBoard() { try { const data = await getLeaders(); if (Array.isArray(data)) { - const sortedLeaders = data.sort((a, b) => a.time - b.time); + const sortedLeaders = data.sort((a, b) => a.time - b.time).slice(0, 10); setLeaders(sortedLeaders); } else { setError("Неверный формат данных"); From 2491517f844f7d0b528c663301b3338880870f0d Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Fri, 23 Aug 2024 03:42:53 +0300 Subject: [PATCH 12/16] =?UTF-8?q?=D0=BB=D0=B8=D0=B4=D0=B5=D1=80=D0=B1?= =?UTF-8?q?=D0=BE=D1=80=D0=B4=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=BD=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/EndGameModal/EndGameModal.jsx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index 1a94d834d..a75ad582e 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -11,7 +11,7 @@ import { usePairsCount } from "../../context/PairsCountContext"; export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, onClick }) { const { isLight } = useContext(LightContext); const { pairsCount } = usePairsCount(); - const [isInTopTen, setIsInTopTen] = useState(false); + const [shouldAddToLeaderboard, setShouldAddToLeaderboard] = useState(false); const [addPlayer, setAddPlayer] = useState({ name: "", time: gameDurationSeconds.toString().padStart(2, "0"), @@ -27,10 +27,10 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, const sortedLeaders = leaders.sort((a, b) => a.time - b.time); const slowestTimeInTopTen = sortedLeaders[9].time; if (gameDurationSeconds < slowestTimeInTopTen) { - setIsInTopTen(true); + setShouldAddToLeaderboard(true); } } else { - setIsInTopTen(true); + setShouldAddToLeaderboard(true); } } catch (error) { console.error("Ошибка при проверке лидерборда:", error); @@ -40,14 +40,18 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, } }, [isWon, isLight, pairsCount, gameDurationSeconds]); - const title = isWon ? (isInTopTen ? "Поздравляю, вы попали в Лидерборд!" : "Вы выиграли") : "Вы проиграли!"; + const title = isWon + ? shouldAddToLeaderboard + ? "Поздравляю, вы попали в Лидерборд!" + : "Вы выиграли!" + : "Вы проиграли!"; const imgSrc = isWon ? celebrationImageUrl : deadImageUrl; const imgAlt = isWon ? "celebration emoji" : "dead emoji"; const handleLeaderboardRedirect = async e => { e.preventDefault(); - if (isWon && isInTopTen) { + if (isWon && shouldAddToLeaderboard) { try { await postLeader(addPlayer); } catch (error) { @@ -69,7 +73,7 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes,
    {imgAlt}

    {title}

    - {isWon && isInTopTen && ( + {shouldAddToLeaderboard && ( setAddPlayer({ ...addPlayer, name: e.target.value })} onKeyDown={handleKeyDown} From f85a18b8dccd8ef1f4522ad191075111915362ba Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Fri, 23 Aug 2024 03:46:14 +0300 Subject: [PATCH 13/16] =?UTF-8?q?=D0=BC=D0=B8=D0=BD=D1=83=D1=82=D1=8B=20?= =?UTF-8?q?=D0=B8=20=D1=81=D0=B5=D0=BA=D1=83=D0=BD=D0=B4=D1=8B=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=83?= =?UTF-8?q?=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/EndGameModal/EndGameModal.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index a75ad582e..bc4d597ef 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -14,7 +14,7 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, const [shouldAddToLeaderboard, setShouldAddToLeaderboard] = useState(false); const [addPlayer, setAddPlayer] = useState({ name: "", - time: gameDurationSeconds.toString().padStart(2, "0"), + time: `${gameDurationMinutes.toString().padStart(2, "0")}:${gameDurationSeconds.toString().padStart(2, "0")}`, }); const navigate = useNavigate(); @@ -24,9 +24,9 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, try { const leaders = await getLeaders(); if (Array.isArray(leaders) && leaders.length >= 10) { - const sortedLeaders = leaders.sort((a, b) => a.time - b.time); + const sortedLeaders = leaders.sort((a, b) => a.time.localeCompare(b.time)); const slowestTimeInTopTen = sortedLeaders[9].time; - if (gameDurationSeconds < slowestTimeInTopTen) { + if (addPlayer.time.localeCompare(slowestTimeInTopTen) < 0) { setShouldAddToLeaderboard(true); } } else { @@ -38,7 +38,7 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, }; checkLeaderboard(); } - }, [isWon, isLight, pairsCount, gameDurationSeconds]); + }, [isWon, isLight, pairsCount, addPlayer.time]); const title = isWon ? shouldAddToLeaderboard From 90ecf9e3495caf891c4b54bd7ac0a3dbcca8cb12 Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Fri, 23 Aug 2024 03:50:51 +0300 Subject: [PATCH 14/16] =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D1=83=D0=B5=D0=BC=20=D0=B2=D1=80=D0=B5=D0=BC=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/LeaderBoardPage/LeaderBoardPage.jsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/pages/LeaderBoardPage/LeaderBoardPage.jsx b/src/pages/LeaderBoardPage/LeaderBoardPage.jsx index 3c41bd344..5008685e8 100644 --- a/src/pages/LeaderBoardPage/LeaderBoardPage.jsx +++ b/src/pages/LeaderBoardPage/LeaderBoardPage.jsx @@ -3,6 +3,12 @@ import { Link } from "react-router-dom"; import styles from "../LeaderBoardPage/LeaderBoardPage.module.css"; import { getLeaders } from "../../api"; +function formatTime(seconds) { + const minutes = Math.floor(seconds / 60); + const remainingSeconds = seconds % 60; + return `${minutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`; +} + export function LeaderBoard() { const [leaders, setLeaders] = useState([]); const [loading, setLoading] = useState(true); @@ -55,7 +61,7 @@ export function LeaderBoard() {
  • #{index + 1}

    {leader.name}

    -

    {leader.time}

    +

    {formatTime(leader.time)}

    {}
  • ))} From 321013fd9ea2e11cb4658f16405a746985fb4a04 Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Fri, 23 Aug 2024 03:51:56 +0300 Subject: [PATCH 15/16] =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9589133a1..2c442bea5 100644 --- a/README.md +++ b/README.md @@ -50,4 +50,4 @@ https://skypro-web-developer.github.io/react-memo/ 20 часов ### Фактическое время выполнения -4 + 2 \ No newline at end of file +13ч \ No newline at end of file From dc84412ebe19c5266b8701f49b88468257fa92a6 Mon Sep 17 00:00:00 2001 From: Allizaveta Date: Fri, 23 Aug 2024 04:26:12 +0300 Subject: [PATCH 16/16] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=BE=D1=81=D0=9B=D0=95=D0=94?= =?UTF-8?q?=D0=9D=D0=AF=D0=AF=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api.js | 25 ++++++++++---------- src/components/EndGameModal/EndGameModal.jsx | 12 ++++++---- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/api.js b/src/api.js index 35d5f2b2e..606a7f53c 100644 --- a/src/api.js +++ b/src/api.js @@ -10,17 +10,18 @@ export async function getLeaders() { return data.leaders; } -export async function postLeader({ name, time }) { - const response = await fetch(URL, { - method: "POST", - body: JSON.stringify({ - name: name, - time: time, - }), - }); - if (response.status === 400) { - throw new Error("Полученные данные не в формате JSON"); +export async function postLeader(data) { + try { + const response = await fetch("https://wedev-api.sky.pro/api/leaderboard", { + method: "POST", + body: JSON.stringify(data), + }); + if (!response.ok) { + throw new Error(`Ошибка: ${response.status}`); + } + return await response.json(); + } catch (error) { + console.error("Ошибка при отправке данных:", error); + throw error; } - const data = await response.json(); - return data; } diff --git a/src/components/EndGameModal/EndGameModal.jsx b/src/components/EndGameModal/EndGameModal.jsx index bc4d597ef..2290ce1ff 100644 --- a/src/components/EndGameModal/EndGameModal.jsx +++ b/src/components/EndGameModal/EndGameModal.jsx @@ -8,13 +8,13 @@ import { LightContext } from "../../context/easyMode"; import { useNavigate } from "react-router-dom"; import { usePairsCount } from "../../context/PairsCountContext"; -export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, onClick }) { +export function EndGameModal({ isWon, gameDurationSeconds, onClick }) { const { isLight } = useContext(LightContext); const { pairsCount } = usePairsCount(); const [shouldAddToLeaderboard, setShouldAddToLeaderboard] = useState(false); const [addPlayer, setAddPlayer] = useState({ name: "", - time: `${gameDurationMinutes.toString().padStart(2, "0")}:${gameDurationSeconds.toString().padStart(2, "0")}`, + time: gameDurationSeconds, }); const navigate = useNavigate(); @@ -24,9 +24,9 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, try { const leaders = await getLeaders(); if (Array.isArray(leaders) && leaders.length >= 10) { - const sortedLeaders = leaders.sort((a, b) => a.time.localeCompare(b.time)); + const sortedLeaders = leaders.sort((a, b) => a.time - b.time); const slowestTimeInTopTen = sortedLeaders[9].time; - if (addPlayer.time.localeCompare(slowestTimeInTopTen) < 0) { + if (addPlayer.time < slowestTimeInTopTen) { setShouldAddToLeaderboard(true); } } else { @@ -85,7 +85,9 @@ export function EndGameModal({ isWon, gameDurationSeconds, gameDurationMinutes, )}

    Затраченное время:

    - {gameDurationMinutes.toString().padStart(2, "0")}.{gameDurationSeconds.toString().padStart(2, "0")} + {`${Math.floor(gameDurationSeconds / 60) + .toString() + .padStart(2, "0")}:${(gameDurationSeconds % 60).toString().padStart(2, "0")}`}