ne minor, a ebat fix

This commit is contained in:
aurinex
2025-12-14 21:14:59 +05:00
parent de616ee8ac
commit ae4a67dcdf
20 changed files with 1818 additions and 652 deletions

View File

@ -19,6 +19,7 @@ import { fetchPlayer } from './../api';
import CalendarMonthIcon from '@mui/icons-material/CalendarMonth';
import EmojiEventsIcon from '@mui/icons-material/EmojiEvents';
import PersonIcon from '@mui/icons-material/Person';
import SettingsIcon from '@mui/icons-material/Settings';
declare global {
interface Window {
electron: {
@ -64,10 +65,14 @@ export default function TopBar({ onRegister, username }: TopBarProps) {
}, []);
const [skinUrl, setSkinUrl] = useState<string>('');
const [skinVersion, setSkinVersion] = useState(0);
const [avatarAnchorEl, setAvatarAnchorEl] = useState<null | HTMLElement>(
null,
);
const path = location.pathname || '';
const isAuthPage = path.startsWith('/login') || path.startsWith('/registration');
const TAB_ROUTES: Array<{
value: number;
match: (p: string) => boolean;
@ -219,18 +224,47 @@ export default function TopBar({ onRegister, username }: TopBarProps) {
navigate('/login');
};
useEffect(() => {
const savedConfig = localStorage.getItem('launcher_config');
const loadSkin = useCallback(async () => {
if (!isAuthed) {
setSkinUrl('');
return;
}
const savedConfig = localStorage.getItem('launcher_config');
if (!savedConfig) return;
const config = JSON.parse(savedConfig);
const uuid = config.uuid;
let cfg: any = null;
try {
cfg = JSON.parse(savedConfig);
} catch {
return;
}
const uuid = cfg?.uuid;
if (!uuid) return;
fetchPlayer(uuid)
.then((player) => setSkinUrl(player.skin_url))
.catch((e) => console.error('Не удалось получить скин:', e));
}, []);
try {
const player = await fetchPlayer(uuid);
setSkinUrl(player.skin_url || '');
} catch (e) {
console.error('Не удалось получить скин:', e);
setSkinUrl('');
}
}, [isAuthed]);
useEffect(() => {
loadSkin();
}, [loadSkin, location.pathname]);
useEffect(() => {
const handler = () => {
setSkinVersion((v) => v + 1);
loadSkin();
};
window.addEventListener('skin-updated', handler as EventListener);
return () => window.removeEventListener('skin-updated', handler as EventListener);
}, [loadSkin]);
return (
<Box
@ -251,10 +285,10 @@ export default function TopBar({ onRegister, username }: TopBarProps) {
// убрать если не оч
// стиль как в Registration
background:
'linear-gradient(71deg, rgba(242,113,33,0.18) 0%, rgba(233,64,205,0.14) 70%, rgba(138,35,135,0.16) 100%)',
backdropFilter: 'blur(10px)',
boxShadow: '0 8px 30px rgba(0,0,0,0.35)',
background: isAuthPage ?
'none' : 'linear-gradient(71deg, rgba(242,113,33,0.18) 0%, rgba(233,64,205,0.14) 70%, rgba(138,35,135,0.16) 100%)',
backdropFilter: isAuthPage ? 'none' : 'blur(10px)',
boxShadow: isAuthPage ? 'none' : '0 8px 30px rgba(0,0,0,0.35)',
}}
>
{/* Левая часть */}
@ -433,6 +467,7 @@ export default function TopBar({ onRegister, username }: TopBarProps) {
<HeadAvatar
skinUrl={skinUrl}
size={44}
version={skinVersion}
style={{
borderRadius: '3vw',
cursor: 'pointer',
@ -530,6 +565,7 @@ export default function TopBar({ onRegister, username }: TopBarProps) {
<HeadAvatar
skinUrl={skinUrl}
size={40}
version={skinVersion}
style={{ borderRadius: '3vw' }}
/>
@ -547,7 +583,7 @@ export default function TopBar({ onRegister, username }: TopBarProps) {
username={username}
size="medium"
autoUpdate={true}
showTooltip={true}
showTooltip={false}
sx={{
border: 'none',
padding: '0vw',
@ -615,12 +651,31 @@ export default function TopBar({ onRegister, username }: TopBarProps) {
<EmojiEventsIcon sx={{ fontSize: '2vw' }} /> Ежедневная награда
</MenuItem>
<MenuItem
onClick={() => {
handleAvatarMenuClose();
navigate('/settings');
}}
sx={{
fontFamily: 'Benzin-Bold',
fontSize: '1.5vw',
gap: '0.5vw',
py: '0.7vw',
'&:hover': {
bgcolor: 'rgba(255,77,77,0.15)',
},
}}
>
<SettingsIcon sx={{ fontSize: '2vw' }} /> Настройки
</MenuItem>
<Divider sx={{ my: '0.4vw', borderColor: 'rgba(255,255,255,0.08)' }} />
{!isLoginPage && !isRegistrationPage && username && (
<Button
variant="outlined"
color="primary"
onClick={() => {
handleAvatarMenuClose();
logout();
}}
sx={{