diff --git a/app/api/__init__.py b/app/api/__init__.py index 6295b28..c3a06e9 100644 --- a/app/api/__init__.py +++ b/app/api/__init__.py @@ -13,7 +13,7 @@ app.register_middleware(close_db_session, "response") from app.api.routes._index import s_index, s_favicon from app.api.routes._system import s_api_v1_node, s_api_system_version, s_api_system_send_status, s_api_v1_node_friendly -from app.api.routes.auth import s_api_v1_auth_twa +from app.api.routes.auth import s_api_v1_auth_twa, s_api_v1_auth_select_wallet from app.api.routes.statics import s_api_tonconnect_manifest, s_api_platform_metadata from app.api.routes.node_storage import s_api_v1_storage_post, s_api_v1_storage_get, \ s_api_v1_storage_decode_cid @@ -37,6 +37,7 @@ app.add_route(s_api_tonconnect_manifest, "/api/tonconnect-manifest.json", method app.add_route(s_api_platform_metadata, "/api/platform-metadata.json", methods=["GET", "OPTIONS"]) app.add_route(s_api_v1_auth_twa, "/api/v1/auth.twa", methods=["POST", "OPTIONS"]) +app.add_route(s_api_v1_auth_select_wallet, "/api/v1/auth.selectWallet", methods=["POST", "OPTIONS"]) app.add_route(s_api_v1_tonconnect_new, "/api/v1/tonconnect.new", methods=["GET", "OPTIONS"]) app.add_route(s_api_v1_tonconnect_logout, "/api/v1/tonconnect.logout", methods=["POST", "OPTIONS"]) diff --git a/app/api/routes/_blockchain.py b/app/api/routes/_blockchain.py index 8e35709..3f597c9 100644 --- a/app/api/routes/_blockchain.py +++ b/app/api/routes/_blockchain.py @@ -90,7 +90,8 @@ async def s_api_v1_blockchain_send_new_content_message(request): title=content_title, cover_url=f"{PROJECT_HOST}/api/v1.5/storage/{image_content_cid.serialize_v2()}" if image_content_cid else None, authors=request.json['authors'], - hashtags=request.json['hashtags'] + hashtags=request.json['hashtags'], + downloadable=request.json['downloadable'] if 'downloadable' in request.json else False, ) royalties_dict = begin_dict(8) diff --git a/app/api/routes/auth.py b/app/api/routes/auth.py index 55eb2a6..ce79427 100644 --- a/app/api/routes/auth.py +++ b/app/api/routes/auth.py @@ -119,3 +119,9 @@ async def s_api_v1_auth_twa(request): 'connected_wallet': ton_connection.json_format() if ton_connection else None, 'auth_v1_token': new_user_key['auth_v1_token'] }) + +async def s_api_v1_auth_select_wallet(request): + if not request.ctx.user: + return response.json({"error": "Unauthorized"}, status=401) + + return response.empty(status=200) diff --git a/app/api/routes/content.py b/app/api/routes/content.py index 2a1b332..8b86adb 100644 --- a/app/api/routes/content.py +++ b/app/api/routes/content.py @@ -154,11 +154,12 @@ async def s_api_v1_content_view(request, content_address: str): content_metadata_json = json.loads(f.read()) display_options['metadata'] = content_metadata_json + opts['downloadable'] = content_metadata_json.get('downloadable', False) return response.json({ **opts, 'encrypted': content['encrypted_content'].json_format(), - 'display_options': display_options + 'display_options': display_options, }) diff --git a/app/core/background/license_service.py b/app/core/background/license_service.py index f999a47..17098ab 100644 --- a/app/core/background/license_service.py +++ b/app/core/background/license_service.py @@ -94,7 +94,7 @@ async def license_index_loop(memory, platform_found: bool, seqno: int) -> [bool, session.commit() except BaseException as e: make_log("LicenseIndex", f"Error: {e}" + '\n' + traceback.format_exc(), level="error") - + # Проверка NFT на актуальность данных, в том числе уже проверенные process_content = session.query(UserContent).filter( and_( diff --git a/app/core/content/utils.py b/app/core/content/utils.py index 04005de..86d985d 100644 --- a/app/core/content/utils.py +++ b/app/core/content/utils.py @@ -51,6 +51,7 @@ async def create_metadata_for_item( cover_url: str = None, authors: list = None, hashtags: list = [], + downloadable: bool = False, ) -> StoredContent: assert title, "No title provided" # assert cover_url, "No cover_url provided" @@ -66,6 +67,7 @@ async def create_metadata_for_item( # 'value': 'Unknown' # }, ], + 'downloadable': downloadable, } if cover_url: item_metadata['image'] = cover_url