From 2d89b5e342b7dbd3f6ae6457a7aba06db962c91c Mon Sep 17 00:00:00 2001 From: Fringg Date: Wed, 18 Mar 2026 04:27:33 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B8?= =?UTF-8?q?=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=D0=B5?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Аналогичная блокировка как на дашборде — disabled + haptic + предупреждение --- src/pages/Subscription.tsx | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/pages/Subscription.tsx b/src/pages/Subscription.tsx index 95514ae..56700ae 100644 --- a/src/pages/Subscription.tsx +++ b/src/pages/Subscription.tsx @@ -14,6 +14,7 @@ import { useCurrency } from '../hooks/useCurrency'; import { useCloseOnSuccessNotification } from '../store/successNotification'; import PurchaseCTAButton from '../components/subscription/PurchaseCTAButton'; import { CopyIcon, CheckIcon } from '../components/icons'; +import { useHaptic } from '../platform'; import { getErrorMessage, getInsufficientBalanceError, @@ -169,6 +170,7 @@ export default function Subscription() { const navigate = useNavigate(); const { isDark } = useTheme(); const g = getGlassColors(isDark); + const haptic = useHaptic(); const [copied, setCopied] = useState(false); // Helper to format price from kopeks @@ -444,6 +446,8 @@ export default function Subscription() { const isUnlimited = (trafficData?.is_unlimited ?? false) || subscription.traffic_limit_gb === 0; const connectedDevices = devicesData?.total ?? 0; + const isAtDeviceLimit = + subscription.device_limit > 0 && connectedDevices >= subscription.device_limit; return (
navigate('/connection')} - className="mb-5 flex w-full items-center gap-3.5 rounded-[14px] p-3.5 text-left transition-shadow duration-300" + disabled={isAtDeviceLimit} + onClick={() => { + if (isAtDeviceLimit) { + haptic.notification('error'); + return; + } + navigate('/connection'); + }} + className={`mb-5 flex w-full items-center gap-3.5 rounded-[14px] p-3.5 text-left transition-shadow duration-300${isAtDeviceLimit ? 'cursor-not-allowed opacity-50' : ''}`} style={{ fontFamily: 'inherit' }} >
+ {isAtDeviceLimit && ( +
+ {t('dashboard.deviceLimitReached')} +
+ )}
{subscription.device_limit === 0 ? (