add secret page

This commit is contained in:
2025-12-20 19:32:47 +05:00
parent b1d369e49d
commit 5f23adc9ae
6 changed files with 554 additions and 7 deletions

View File

@ -21,6 +21,9 @@ interface CoinsDisplayProps {
backgroundColor?: string;
textColor?: string;
onClick?: () => void;
disableRefreshOnClick?: boolean;
sx?: SxProps<Theme>;
}
@ -40,6 +43,9 @@ export default function CoinsDisplay({
backgroundColor = 'rgba(0, 0, 0, 0.2)',
textColor = 'white',
onClick,
disableRefreshOnClick = false,
sx,
}: CoinsDisplayProps) {
const [isLoading, setIsLoading] = useState<boolean>(false);
@ -61,6 +67,14 @@ export default function CoinsDisplay({
}
};
const handleClick = () => {
// 1) если передали внешний обработчик — выполняем его
if (onClick) onClick();
// 2) опционально оставляем обновление баланса по клику
if (!disableRefreshOnClick && username) fetchCoinsData();
};
const [coins, setCoins] = useState<number>(() => {
// 1) если пришло значение извне — оно приоритетнее
if (externalValue !== undefined) return externalValue;
@ -76,7 +90,8 @@ export default function CoinsDisplay({
useEffect(() => {
const handler = () => setSettingsVersion((v) => v + 1);
window.addEventListener('settings-updated', handler as EventListener);
return () => window.removeEventListener('settings-updated', handler as EventListener);
return () =>
window.removeEventListener('settings-updated', handler as EventListener);
}, []);
const isTooltipDisabledBySettings = useMemo(() => {
@ -191,7 +206,7 @@ export default function CoinsDisplay({
borderRadius: sizes.borderRadius,
padding: sizes.containerPadding,
border: '1px solid rgba(255, 255, 255, 0.1)',
cursor: tooltipEnabled ? 'help' : 'default',
cursor: onClick ? 'pointer' : tooltipEnabled ? 'help' : 'default',
// можно оставить лёгкий намёк на загрузку, но без "пульса" текста
opacity: isLoading ? 0.85 : 1,
@ -199,7 +214,7 @@ export default function CoinsDisplay({
...sx,
}}
onClick={username ? handleRefresh : undefined}
onClick={handleClick}
title={username ? 'Нажмите для обновления' : undefined}
>
{showIcon && (