From 302a0288730cc1e11cca56fd57d3f4c0c9675956 Mon Sep 17 00:00:00 2001 From: Egor Date: Fri, 14 Nov 2025 00:15:43 +0300 Subject: [PATCH] Allow trial users to renew from miniapp --- app/webapi/routes/miniapp.py | 20 ++++++++++++++++---- miniapp/index.html | 10 +++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/webapi/routes/miniapp.py b/app/webapi/routes/miniapp.py index 203e6e42..3fb902ec 100644 --- a/app/webapi/routes/miniapp.py +++ b/app/webapi/routes/miniapp.py @@ -4862,7 +4862,10 @@ async def get_subscription_settings_endpoint( db: AsyncSession = Depends(get_db_session), ) -> MiniAppSubscriptionSettingsResponse: user = await _authorize_miniapp_user(payload.init_data, db) - subscription = _ensure_paid_subscription(user) + subscription = _ensure_paid_subscription( + user, + allowed_statuses={"active", "trial"}, + ) _validate_subscription_id(payload.subscription_id, subscription) settings_payload = await _build_subscription_settings(db, user, subscription) @@ -4879,7 +4882,10 @@ async def update_subscription_servers_endpoint( db: AsyncSession = Depends(get_db_session), ) -> MiniAppSubscriptionUpdateResponse: user = await _authorize_miniapp_user(payload.init_data, db) - subscription = _ensure_paid_subscription(user) + subscription = _ensure_paid_subscription( + user, + allowed_statuses={"active", "trial"}, + ) _validate_subscription_id(payload.subscription_id, subscription) old_servers = list(getattr(subscription, "connected_squads", []) or []) @@ -5085,7 +5091,10 @@ async def update_subscription_traffic_endpoint( db: AsyncSession = Depends(get_db_session), ) -> MiniAppSubscriptionUpdateResponse: user = await _authorize_miniapp_user(payload.init_data, db) - subscription = _ensure_paid_subscription(user) + subscription = _ensure_paid_subscription( + user, + allowed_statuses={"active", "trial"}, + ) _validate_subscription_id(payload.subscription_id, subscription) old_traffic = subscription.traffic_limit_gb @@ -5249,7 +5258,10 @@ async def update_subscription_devices_endpoint( db: AsyncSession = Depends(get_db_session), ) -> MiniAppSubscriptionUpdateResponse: user = await _authorize_miniapp_user(payload.init_data, db) - subscription = _ensure_paid_subscription(user) + subscription = _ensure_paid_subscription( + user, + allowed_statuses={"active", "trial"}, + ) _validate_subscription_id(payload.subscription_id, subscription) raw_value = payload.devices if payload.devices is not None else payload.device_limit diff --git a/miniapp/index.html b/miniapp/index.html index 4d88463f..35cbaded 100644 --- a/miniapp/index.html +++ b/miniapp/index.html @@ -13955,7 +13955,7 @@ function ensureSubscriptionRenewalData(options = {}) { const { force = false } = options; - if (!hasPaidSubscription()) { + if (!hasActiveSubscription()) { resetSubscriptionRenewalState(null); renderSubscriptionRenewalCard(); return Promise.resolve(null); @@ -14484,7 +14484,7 @@ return; } - const shouldShow = hasPaidSubscription(); + const shouldShow = hasActiveSubscription(); card.classList.toggle('hidden', !shouldShow); if (!shouldShow) { return; @@ -14601,7 +14601,7 @@ return; } - if (!hasPaidSubscription()) { + if (!hasActiveSubscription()) { handleSubscriptionRenewalError(createError('Subscription renewal', t('subscription_renewal.error.validation'))); return; } @@ -14784,7 +14784,7 @@ function ensureSubscriptionSettingsLoaded(options = {}) { const { force = false } = options; - if (!hasPaidSubscription()) { + if (!hasActiveSubscription()) { subscriptionSettingsData = null; subscriptionSettingsPromise = null; subscriptionSettingsError = null; @@ -14912,7 +14912,7 @@ return; } - const shouldShow = hasPaidSubscription(); + const shouldShow = hasActiveSubscription(); card.classList.toggle('hidden', !shouldShow); if (!shouldShow) { return;