Loading DexScreener...
window.tokenData = {"success":true,"data":{"address":"BHCdQCumiLKfgMoPh3krxCGqo8YBwizo21wH2yZQpump","name":"Axioom","symbol":"Axioom","description":"","image":"https:\/\/cdn.dexscreener.com\/cms\/images\/5sv6Hep0_7Gk4Png?width=800&height=800&quality=90","supply":0,"decimals":6,"price":1.864e-5,"price_change_24h":-48.24,"volume_24h":400008.84,"market_cap":18649,"liquidity":11083.06,"holders":0,"token_standard":"FungibleToken","creators":[],"attributes":[],"external_url":"https:\/\/dexscreener.com\/solana\/4lzrhkrda1aeaxsxei9uh4neyjzqzz5z7mfrhpnupvqu"}}; // Function to populate modal with token data function populateTokenModal(data) { if (!data || data.error) { console.error('Error loading token data:', data?.error); return; } const modal = document.querySelector('.chakra-modal__overlay.custom-1oi6sm6'); if (!modal) { console.error('Modal not found'); return; } // Create token info HTML const tokenInfo = `
${data.data?.name || 'Token'}

${data.data?.name || 'Unknown Token'}

${data.data?.symbol || '???'} • ${data.data?.address}

Price
$${data.data?.price?.toFixed(6) || '0.000000'}
${(data.data?.price_change_24h || 0) >= 0 ? '+' : ''}${(data.data?.price_change_24h || 0).toFixed(2)}%
Market Cap
$${formatNumber(data.data?.market_cap || 0)}
Volume 24H
$${formatNumber(data.data?.volume_24h || 0)}
Liquidity
$${formatNumber(data.data?.liquidity || 0)}
Holders
${formatNumber(data.data?.holders || 0)}
Decimals
${data.data?.decimals || 9}
${data.data?.description ? `
Description
${data.data.description}
` : ''}
`; // Find modal content and inject token info const modalContent = modal.querySelector('.chakra-modal__content'); if (modalContent) { modalContent.insertAdjacentHTML('afterbegin', tokenInfo); modal.style.display = 'block'; modal.style.opacity = '1'; } } // Helper function to format numbers function formatNumber(num) { if (num >= 1e9) return (num / 1e9).toFixed(2) + 'B'; if (num >= 1e6) return (num / 1e6).toFixed(2) + 'M'; if (num >= 1e3) return (num / 1e3).toFixed(2) + 'K'; return num.toFixed(2); } // Function to load token data via API async function loadTokenData(solAddress) { try { const response = await fetch(`/api/token/${solAddress}`); const data = await response.json(); if (data.success) { populateTokenModal(data); } else { console.error('API Error:', data.error); showErrorModal(data.error); } } catch (error) { console.error('Network Error:', error); showErrorModal('Failed to load token data'); } } // Function to show error modal function showErrorModal(message) { const modal = document.querySelector('.chakra-modal__overlay.custom-1oi6sm6'); if (modal) { const errorHtml = `
⚠️
Error
${message}
`; const modalContent = modal.querySelector('.chakra-modal__content'); if (modalContent) { modalContent.innerHTML = errorHtml; modal.style.display = 'block'; modal.style.opacity = '1'; } } } // Initialize on page load document.addEventListener('DOMContentLoaded', function() { // Check if we have token data from server-side rendering if (window.tokenData && !window.tokenData.error) { populateTokenModal(window.tokenData); } // Add click handlers for boost buttons or links document.addEventListener('click', function(e) { const boostLink = e.target.closest('[href*="/boosts/"]'); if (boostLink) { e.preventDefault(); const href = boostLink.getAttribute('href'); const solAddress = href.split('/boosts/')[1]; if (solAddress) { loadTokenData(solAddress); } } }); }); // Global function to manually trigger modal for testing window.showTokenModal = function(solAddress) { loadTokenData(solAddress); };