fix: sync squads to Remnawave panel on tariff purchase/switch
When sync_squads parameter was introduced (4aaf0ddd) to prevent FK
violations from stale squad UUIDs, all update_remnawave_user calls
defaulted to sync_squads=False. This broke squad synchronization for
purchase/tariff-change flows where squads are freshly assigned and
must be sent to the panel.
Adds sync_squads=True to all purchase, tariff switch, and country
selection call sites across cabinet, bot handlers, miniapp, and
auto-purchase service.
This commit is contained in:
@@ -2071,6 +2071,7 @@ async def purchase_tariff(
|
||||
subscription,
|
||||
reset_traffic=True,
|
||||
reset_reason='покупка тарифа (cabinet)',
|
||||
sync_squads=True,
|
||||
)
|
||||
else:
|
||||
await service.create_remnawave_user(
|
||||
@@ -3144,7 +3145,7 @@ async def update_countries(
|
||||
try:
|
||||
subscription_service = SubscriptionService()
|
||||
if getattr(user, 'remnawave_uuid', None):
|
||||
await subscription_service.update_remnawave_user(db, user.subscription)
|
||||
await subscription_service.update_remnawave_user(db, user.subscription, sync_squads=True)
|
||||
else:
|
||||
await subscription_service.create_remnawave_user(db, user.subscription)
|
||||
except Exception as e:
|
||||
@@ -4174,6 +4175,7 @@ async def switch_tariff(
|
||||
subscription,
|
||||
reset_traffic=should_reset_traffic,
|
||||
reset_reason='смена тарифа',
|
||||
sync_squads=True,
|
||||
)
|
||||
else:
|
||||
await subscription_service.create_remnawave_user(
|
||||
|
||||
@@ -2448,6 +2448,7 @@ async def confirm_purchase(callback: types.CallbackQuery, state: FSMContext, db_
|
||||
subscription,
|
||||
reset_traffic=True,
|
||||
reset_reason='покупка подписки',
|
||||
sync_squads=True,
|
||||
)
|
||||
else:
|
||||
remnawave_user = await subscription_service.create_remnawave_user(
|
||||
|
||||
@@ -460,6 +460,7 @@ async def _auto_extend_subscription(
|
||||
updated_subscription,
|
||||
reset_traffic=should_reset_traffic,
|
||||
reset_reason='смена тарифа' if is_tariff_change else 'продление подписки',
|
||||
sync_squads=is_tariff_change,
|
||||
)
|
||||
except Exception as error: # pragma: no cover - defensive logging
|
||||
logger.error(
|
||||
|
||||
@@ -1091,6 +1091,7 @@ class MiniAppSubscriptionPurchaseService:
|
||||
subscription,
|
||||
reset_traffic=True,
|
||||
reset_reason='miniapp purchase',
|
||||
sync_squads=True,
|
||||
)
|
||||
else:
|
||||
await subscription_service.create_remnawave_user(
|
||||
|
||||
@@ -5691,7 +5691,7 @@ async def update_subscription_servers_endpoint(
|
||||
pass
|
||||
|
||||
service = SubscriptionService()
|
||||
await service.update_remnawave_user(db, subscription)
|
||||
await service.update_remnawave_user(db, subscription, sync_squads=True)
|
||||
|
||||
await with_admin_notification_service(
|
||||
lambda service: service.send_subscription_update_notification(
|
||||
@@ -6500,6 +6500,7 @@ async def purchase_tariff_endpoint(
|
||||
subscription,
|
||||
reset_traffic=True,
|
||||
reset_reason='покупка тарифа (miniapp)',
|
||||
sync_squads=True,
|
||||
)
|
||||
|
||||
# Сохраняем корзину для автопродления
|
||||
@@ -6873,6 +6874,7 @@ async def switch_tariff_endpoint(
|
||||
subscription,
|
||||
reset_traffic=should_reset_traffic,
|
||||
reset_reason='смена тарифа',
|
||||
sync_squads=True,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error('Ошибка синхронизации с RemnaWave при смене тарифа', error=e)
|
||||
|
||||
Reference in New Issue
Block a user