diff --git a/app/handlers/subscription.py b/app/handlers/subscription.py index 42392c7b..205c81fd 100644 --- a/app/handlers/subscription.py +++ b/app/handlers/subscription.py @@ -68,7 +68,6 @@ from app.utils.pagination import paginate_list from app.utils.subscription_utils import ( get_display_subscription_link, get_happ_cryptolink_redirect_link, - build_happ_scheme_link, ) logger = logging.getLogger(__name__) @@ -5049,45 +5048,23 @@ async def handle_open_subscription_link( if settings.is_happ_cryptolink_mode(): redirect_link = get_happ_cryptolink_redirect_link(subscription_link) - subscription_crypto_link = getattr(subscription, "subscription_crypto_link", None) - subscription_base_link = getattr(subscription, "subscription_url", None) - happ_scheme_link = ( - build_happ_scheme_link(subscription_crypto_link or subscription_link) - or subscription_link - ) - crypto_link_to_hide = subscription_crypto_link or subscription_link - - if crypto_link_to_hide == happ_scheme_link: - crypto_link_to_hide = subscription_base_link or crypto_link_to_hide - - message_parts = [ + happ_message = ( texts.t( "SUBSCRIPTION_HAPP_OPEN_TITLE", "🔗 Подключение через Happ", - ), - texts.t( - "SUBSCRIPTION_HAPP_OPEN_LINK", - "🔓 Ссылка для Happ:\n{happ_link}", - ).format(happ_link=happ_scheme_link), - ] - - if crypto_link_to_hide and crypto_link_to_hide != happ_scheme_link: - message_parts.append( - texts.t( - "SUBSCRIPTION_HAPP_OPEN_CRYPTO_BLOCK", - "
🪙 CryptoLink:\n{crypto_link}\n
", - ).format(crypto_link=crypto_link_to_hide) ) - - message_parts.append( - texts.t( + + "\n\n" + + texts.t( + "SUBSCRIPTION_HAPP_OPEN_LINK", + "🔓 Открыть ссылку в Happ", + ).format(subscription_link=subscription_link) + + "\n\n" + + texts.t( "SUBSCRIPTION_HAPP_OPEN_HINT", - "💡 Скопируйте ссылку и вставьте её в приложение Happ: {happ_link}", - ).format(happ_link=happ_scheme_link) + "💡 Если ссылка не открывается автоматически, скопируйте её вручную: {subscription_link}", + ).format(subscription_link=subscription_link) ) - happ_message = "\n\n".join(message_parts) - if redirect_link: happ_message += "\n\n" + texts.t( "SUBSCRIPTION_HAPP_OPEN_BUTTON_HINT", diff --git a/app/localization/locales/en.json b/app/localization/locales/en.json index 42f18185..b71ef1df 100644 --- a/app/localization/locales/en.json +++ b/app/localization/locales/en.json @@ -358,11 +358,6 @@ "SUBSCRIPTION_LINK_STEP3": "3. Find the 'Add subscription' or 'Import' option", "SUBSCRIPTION_LINK_STEP4": "4. Paste the copied link", "SUBSCRIPTION_LINK_HINT": "💡 If the link didn't copy, select it manually and copy.", - "SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Connect via Happ", - "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Link for Happ:\n{happ_link}", - "SUBSCRIPTION_HAPP_OPEN_CRYPTO_BLOCK": "
🪙 CryptoLink:\n{crypto_link}\n
", - "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 Copy the link and paste it into the Happ app: {happ_link}", - "SUBSCRIPTION_HAPP_OPEN_BUTTON_HINT": "▶️ Tap the \"Connect\" button below to open Happ and add the subscription automatically.", "REFERRAL_PROGRAM_TITLE": "👥 Referral program", "REFERRAL_STATS_HEADER": "📊 Your statistics:", "REFERRAL_STATS_INVITED": "• Invited users: {count}", diff --git a/app/localization/locales/ru.json b/app/localization/locales/ru.json index 63b4de2b..5824f49d 100644 --- a/app/localization/locales/ru.json +++ b/app/localization/locales/ru.json @@ -360,11 +360,6 @@ "SUBSCRIPTION_LINK_STEP3": "3. Найдите функцию \"Добавить подписку\" или \"Import\"", "SUBSCRIPTION_LINK_STEP4": "4. Вставьте скопированную ссылку", "SUBSCRIPTION_LINK_HINT": "💡 Если ссылка не скопировалась, выделите её вручную и скопируйте.", - "SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Подключение через Happ", - "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Ссылка для Happ:\n{happ_link}", - "SUBSCRIPTION_HAPP_OPEN_CRYPTO_BLOCK": "
🪙 CryptoLink:\n{crypto_link}\n
", - "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 Скопируйте ссылку и вставьте её в приложение Happ: {happ_link}", - "SUBSCRIPTION_HAPP_OPEN_BUTTON_HINT": "▶️ Нажмите кнопку \"Подключиться\" ниже, чтобы открыть Happ и добавить подписку автоматически.", "REFERRAL_PROGRAM_TITLE": "👥 Реферальная программа", "REFERRAL_STATS_HEADER": "📊 Ваша статистика:", "REFERRAL_STATS_INVITED": "• Приглашено пользователей: {count}", diff --git a/app/utils/subscription_utils.py b/app/utils/subscription_utils.py index 2060ee3e..a2741b5d 100644 --- a/app/utils/subscription_utils.py +++ b/app/utils/subscription_utils.py @@ -1,7 +1,7 @@ import logging from datetime import datetime from typing import Optional -from urllib.parse import quote, urlparse +from urllib.parse import quote from sqlalchemy import select, delete, func from sqlalchemy.ext.asyncio import AsyncSession from app.database.models import Subscription, User @@ -141,36 +141,3 @@ def get_happ_cryptolink_redirect_link(subscription_link: Optional[str]) -> Optio return f"{template}{encoded_link}" return f"{template}{encoded_link}" - - -def build_happ_scheme_link(subscription_link: Optional[str]) -> Optional[str]: - """Convert a crypto link into the happ:// URL scheme if possible.""" - - if not subscription_link: - return None - - if subscription_link.startswith("happ://"): - return subscription_link - - parsed = urlparse(subscription_link) - - if parsed.scheme not in {"http", "https"}: - return None - - path_parts = [] - - if parsed.netloc: - path_parts.append(parsed.netloc) - - if parsed.path: - path_parts.append(parsed.path.lstrip("/")) - - path = "/".join(part for part in path_parts if part) - - if not path and not parsed.query and not parsed.fragment: - return None - - query = f"?{parsed.query}" if parsed.query else "" - fragment = f"#{parsed.fragment}" if parsed.fragment else "" - - return f"happ://{path}{query}{fragment}" diff --git a/locales/en.json b/locales/en.json index 9a5a72fa..65b77197 100644 --- a/locales/en.json +++ b/locales/en.json @@ -420,9 +420,8 @@ "SUBSCRIPTION_DEVICE_APPS_NOT_FOUND": "❌ No apps found for this device", "SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Setup for {device_name}", "SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Connect via Happ", - "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Link for Happ:\n{happ_link}", - "SUBSCRIPTION_HAPP_OPEN_CRYPTO_BLOCK": "
🪙 CryptoLink:\n{crypto_link}\n
", - "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 Copy the link and paste it into the Happ app: {happ_link}", + "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Open link in Happ", + "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 If the link doesn't open automatically, copy it manually: {subscription_link}", "SUBSCRIPTION_HAPP_OPEN_BUTTON_HINT": "▶️ Tap the \"Connect\" button below to open Happ and add the subscription automatically.", "SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Subscription link:", "SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Recommended app: {app_name}", diff --git a/locales/ru.json b/locales/ru.json index 41655123..332ce1f0 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -420,9 +420,8 @@ "SUBSCRIPTION_DEVICE_APPS_NOT_FOUND": "❌ Приложения для этого устройства не найдены", "SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Настройка для {device_name}", "SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Подключение через Happ", - "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Ссылка для Happ:\n{happ_link}", - "SUBSCRIPTION_HAPP_OPEN_CRYPTO_BLOCK": "
🪙 CryptoLink:\n{crypto_link}\n
", - "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 Скопируйте ссылку и вставьте её в приложение Happ: {happ_link}", + "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Открыть ссылку в Happ", + "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 Если ссылка не открывается автоматически, скопируйте её вручную: {subscription_link}", "SUBSCRIPTION_HAPP_OPEN_BUTTON_HINT": "▶️ Нажмите кнопку \"Подключиться\" ниже, чтобы открыть Happ и добавить подписку автоматически.", "SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Ссылка подписки:", "SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Рекомендуемое приложение: {app_name}",