import ReactPlayer from "react-player/lazy"; import { useTonConnectUI } from "@tonconnect/ui-react"; import { useWebApp } from "@vkruglikov/react-telegram-web-app"; import { Button } from "~/shared/ui/button"; import { usePurchaseContent, useViewContent } from "~/shared/services/content"; import { fromNanoTON } from "~/shared/utils"; import { useCallback } from "react"; import { AudioPlayer } from "~/shared/ui/audio-player"; export const ViewContentPage = () => { const WebApp = useWebApp(); const { data: content } = useViewContent(WebApp.initDataUnsafe?.start_param); const { mutateAsync: purchaseContent } = usePurchaseContent(); const [tonConnectUI] = useTonConnectUI(); const handleBuyContent = useCallback(async () => { try { if (!tonConnectUI.connected) { await tonConnectUI.openModal(); return; } const contentResponse = await purchaseContent({ content_address: content?.data?.encrypted?.cid, license_type: "listen", }); const transactionResponse = await tonConnectUI.sendTransaction({ validUntil: Math.floor(Date.now() / 1000) + 120, messages: [ { amount: contentResponse.data.amount, address: contentResponse.data.address, payload: contentResponse.data.payload, }, ], }); if (transactionResponse.boc) { WebApp.close(); await tonConnectUI.disconnect(); } else { console.error("Transaction failed:", transactionResponse); } } catch (error) { await tonConnectUI.disconnect(); console.error("Error handling Ton Connect subscription:", error); } }, [content]); return (
{content?.data?.display_options?.metadata?.image && (
{"content_image"}
)} {content?.data?.content_type.startsWith("audio") ? ( ) : ( )}

{content?.data?.display_options?.metadata?.name}

{/*

Russian

*/} {/*

2022

*/}

{content?.data?.display_options?.metadata?.description}

); };