diff --git a/src/renderer/App.tsx b/src/renderer/App.tsx index 2ed2e8a..fe9031f 100644 --- a/src/renderer/App.tsx +++ b/src/renderer/App.tsx @@ -93,6 +93,17 @@ const App = () => { const handleRegister = () => { window.open('https://account.ely.by/register', '_blank'); }; + const [username, setUsername] = useState(null); + + useEffect(() => { + const savedConfig = localStorage.getItem('launcher_config'); + if (savedConfig) { + const config = JSON.parse(savedConfig); + if (config.username) { + setUsername(config.username); + } + } + }, []); return ( @@ -109,7 +120,7 @@ const App = () => { }} > - + } /> diff --git a/src/renderer/components/TopBar.tsx b/src/renderer/components/TopBar.tsx index 0e15333..0254844 100644 --- a/src/renderer/components/TopBar.tsx +++ b/src/renderer/components/TopBar.tsx @@ -2,6 +2,8 @@ import { Box, Button, Typography } from '@mui/material'; import CloseRoundedIcon from '@mui/icons-material/CloseRounded'; import { useLocation, useNavigate } from 'react-router-dom'; import ArrowBackRoundedIcon from '@mui/icons-material/ArrowBackRounded'; +import { useEffect, useState } from 'react'; +import { Tooltip } from '@mui/material'; declare global { interface Window { @@ -18,15 +20,26 @@ declare global { // Определяем пропсы interface TopBarProps { onRegister?: () => void; // Опционально, если нужен обработчик регистрации + username?: string; } -export default function TopBar({ onRegister }: TopBarProps) { +interface CoinsResponse { + username: string; + coins: number; + total_time_played: { + seconds: number; + formatted: string; + }; +} + +export default function TopBar({ onRegister, username }: TopBarProps) { // Получаем текущий путь const location = useLocation(); const isLoginPage = location.pathname === '/login'; const isLaunchPage = location.pathname.startsWith('/launch'); const isVersionsExplorerPage = location.pathname.startsWith('/'); const navigate = useNavigate(); + const [coins, setCoins] = useState(0); const handleLaunchPage = () => { navigate('/'); @@ -45,6 +58,31 @@ export default function TopBar({ onRegister }: TopBarProps) { return 'Неизвестная страница'; }; + // Функция для получения количества монет + const fetchCoins = async () => { + if (!username) return; + + try { + const response = await fetch( + `http://147.78.65.214:8000/users/${username}/coins`, + ); + if (response.ok) { + const data: CoinsResponse = await response.json(); + setCoins(data.coins); + } + } catch (error) { + console.error('Ошибка при получении количества монет:', error); + } + }; + + useEffect(() => { + if (username) { + fetchCoins(); + const intervalId = setInterval(fetchCoins, 60000); + return () => clearInterval(intervalId); + } + }, [username]); + return ( {/* Кнопка регистрации, если на странице логина */} + {username && ( + + + + P + + + {coins} + + + + )} {isLoginPage && (