from app.core._utils.tg_process_template import tg_process_template from app.core._keyboards import get_inline_keyboard from app.core.logger import logger from app.core.models.wallet_connection import WalletConnection from app.core.models._blockchain.ton.connect import TonConnect, unpack_wallet_info from app.core._config import WEB_APP_URLS from aiogram import types, Router, F from aiogram.filters import Command main_router = Router() async def send_home_menu(chat_wrap, user, wallet_connection): return await tg_process_template( chat_wrap, user.translated('home_menu').format( wallet_address=wallet_connection.wallet_address ), keyboard=get_inline_keyboard([ [{ 'text': user.translated('ownedContent_button'), 'callback_data': 'ownedContent' }], [{ 'text': user.translated('disconnectWallet_button'), 'callback_data': 'disconnectWallet' }] ]) ) async def send_connect_wallets_list(db_session, chat_wrap, user): ton_connect, ton_connection = TonConnect.by_user(db_session, user, callback_fn=()) await ton_connect.restore_connection() wallets = ton_connect._sdk_client.get_wallets() message_text = user.translated("connectWalletsList_menu") return await tg_process_template( chat_wrap, message_text, keyboard=get_inline_keyboard([ [ { 'text': f"{wallets[i]['name']}", 'callback_data': f"initTonconnect_{wallets[i]['app_name']}" } if i < len(wallets) else None, { 'text': f"{wallets[i + 1]['name']}", 'callback_data': f"initTonconnect_{wallets[i + 1]['app_name']}" } if i + 1 < len(wallets) else None, ] for i in range(0, len(wallets), 2) ]) ) async def t_home_menu(__msg, **extra): memory, user, db_session, chat_wrap = extra['memory'], extra['user'], extra['db_session'], extra['chat_wrap'] if extra.get('state'): await extra['state'].clear() wallet_connection = db_session.query(WalletConnection).filter( WalletConnection.user_id == user.id, WalletConnection.invalidated == False ).first() if not wallet_connection: return await send_connect_wallets_list(db_session, chat_wrap, user) return await send_home_menu(chat_wrap, user, wallet_connection) main_router.message.register(t_home_menu, Command('start')) main_router.callback_query.register(t_home_menu, F.data == 'home') router = main_router