diff --git a/handlers/instructions/instructions.py b/handlers/instructions/instructions.py index 16a32072..d0d9bafc 100644 --- a/handlers/instructions/instructions.py +++ b/handlers/instructions/instructions.py @@ -1,4 +1,5 @@ import os +import urllib.parse from typing import Any @@ -106,7 +107,13 @@ async def process_windows_menu(callback_query: CallbackQuery, session: Any): builder = InlineKeyboardBuilder() builder.row(InlineKeyboardButton(text=DOWNLOAD_PC_BUTTON, url=DOWNLOAD_PC)) - builder.row(InlineKeyboardButton(text=CONNECT_WINDOWS_BUTTON, url=f"{CONNECT_WINDOWS}{key_link}")) + + if key_link and key_link.startswith("happ://crypt3/"): + processed_link = urllib.parse.quote(key_link, safe='') + else: + processed_link = key_link + + builder.row(InlineKeyboardButton(text=CONNECT_WINDOWS_BUTTON, url=f"{CONNECT_WINDOWS}{processed_link}")) builder.row(InlineKeyboardButton(text=SUPPORT, url=SUPPORT_CHAT_URL)) builder.row(InlineKeyboardButton(text=BACK, callback_data=f"connect_pc|{key_name}")) @@ -131,7 +138,13 @@ async def process_macos_menu(callback_query: CallbackQuery, session: Any): builder = InlineKeyboardBuilder() builder.row(InlineKeyboardButton(text=DOWNLOAD_MACOS_BUTTON, url=DOWNLOAD_MACOS)) - builder.row(InlineKeyboardButton(text=CONNECT_MACOS_BUTTON, url=f"{CONNECT_MACOS}{key_link}")) + + if key_link and key_link.startswith("happ://crypt3/"): + processed_link = urllib.parse.quote(key_link, safe='') + else: + processed_link = key_link + + builder.row(InlineKeyboardButton(text=CONNECT_MACOS_BUTTON, url=f"{CONNECT_MACOS}{processed_link}")) builder.row(InlineKeyboardButton(text=SUPPORT, url=SUPPORT_CHAT_URL)) builder.row(InlineKeyboardButton(text=BACK, callback_data=f"connect_pc|{key_name}")) diff --git a/handlers/keys/key_connect.py b/handlers/keys/key_connect.py index 273ca0a1..830389e1 100644 --- a/handlers/keys/key_connect.py +++ b/handlers/keys/key_connect.py @@ -1,4 +1,5 @@ import os +import urllib.parse from io import BytesIO @@ -106,9 +107,14 @@ async def process_callback_connect_phone(callback_query: CallbackQuery, session: InlineKeyboardButton(text=DOWNLOAD_IOS_BUTTON, url=DOWNLOAD_IOS), InlineKeyboardButton(text=DOWNLOAD_ANDROID_BUTTON, url=DOWNLOAD_ANDROID), ) + if key_link and key_link.startswith("happ://crypt3/"): + processed_link = urllib.parse.quote(key_link, safe='') + else: + processed_link = key_link + builder.row( - InlineKeyboardButton(text=IMPORT_IOS, url=f"{CONNECT_IOS}{key_link}"), - InlineKeyboardButton(text=IMPORT_ANDROID, url=f"{CONNECT_ANDROID}{key_link}"), + InlineKeyboardButton(text=IMPORT_IOS, url=f"{CONNECT_IOS}{processed_link}"), + InlineKeyboardButton(text=IMPORT_ANDROID, url=f"{CONNECT_ANDROID}{processed_link}"), ) if INSTRUCTIONS_BUTTON: builder.row(InlineKeyboardButton(text=MANUAL_INSTRUCTIONS, callback_data="instructions")) @@ -140,7 +146,13 @@ async def process_callback_connect_ios(callback_query: CallbackQuery, session: A builder = InlineKeyboardBuilder() builder.row(InlineKeyboardButton(text=DOWNLOAD_IOS_BUTTON, url=DOWNLOAD_IOS)) - builder.row(InlineKeyboardButton(text=IMPORT_IOS, url=f"{CONNECT_IOS}{key_link}")) + + if key_link and key_link.startswith("happ://crypt3/"): + processed_link = urllib.parse.quote(key_link, safe='') + else: + processed_link = key_link + + builder.row(InlineKeyboardButton(text=IMPORT_IOS, url=f"{CONNECT_IOS}{processed_link}")) if INSTRUCTIONS_BUTTON: builder.row(InlineKeyboardButton(text=MANUAL_INSTRUCTIONS, callback_data="instructions")) builder.row(InlineKeyboardButton(text=BACK, callback_data=f"connect_device|{email}")) @@ -172,7 +184,13 @@ async def process_callback_connect_android(callback_query: CallbackQuery, sessio builder = InlineKeyboardBuilder() builder.row(InlineKeyboardButton(text=DOWNLOAD_ANDROID_BUTTON, url=DOWNLOAD_ANDROID)) - builder.row(InlineKeyboardButton(text=IMPORT_ANDROID, url=f"{CONNECT_ANDROID}{key_link}")) + + if key_link and key_link.startswith("happ://crypt3/"): + processed_link = urllib.parse.quote(key_link, safe='') + else: + processed_link = key_link + + builder.row(InlineKeyboardButton(text=IMPORT_ANDROID, url=f"{CONNECT_ANDROID}{processed_link}")) if INSTRUCTIONS_BUTTON: builder.row(InlineKeyboardButton(text=MANUAL_INSTRUCTIONS, callback_data="instructions")) builder.row(InlineKeyboardButton(text=BACK, callback_data=f"connect_device|{email}"))