import { TRANSACTIONS_PATH } from '@urls' import { useState, useEffect } from 'react' import { OverviewChart } from '@components/ChainChart' import TextField from '@mui/material/TextField' import { inputStyle } from '@utils/styles/muiStyles' import { HorizontalDivider } from '@components/misc/HorizontalDivider' import { StandardPageContainer } from '@components/layouts/StandardPageContainer' import { BridgeTransactionTable } from '@components/BridgeTransaction/BridgeTransactionTable' import { useLazyQuery, useQuery } from '@apollo/client' import { SynapseLogoSvg } from '@components/layouts/MainLayout/SynapseLogoSvg' import { CHAINS } from '@synapsecns/synapse-constants' import { GET_BRIDGE_TRANSACTIONS_QUERY, DAILY_STATISTICS_BY_CHAIN, } from '@graphql/queries' import { HolisticStats } from '@components/misc/HolisticStats' import _ from 'lodash' const CHAIN_ID_NAMES_REVERSE = CHAINS.CHAIN_ID_NAMES_REVERSE export const Home = () => { const [platform, setPlatform] = useState('ALL') const [transactionsArr, setTransactionsArr] = useState([]) const [dailyDataArr, setDailyDataArr] = useState([]) const [kappa, setKappa] = useState('') const [pending, setPending] = useState(false) const [completed] = useState(false) const [dailyStatisticType, setDailyStatisticType] = useState('VOLUME') const [dailyStatisticDuration, SetDailyStatisticDuration] = useState('PAST_6_MONTHS') const [dailyStatisticCumulative, SetDailyStatisticCumulative] = useState(true) const unSelectStyle = 'transition ease-out border-l-0 border-gray-700 border-opacity-30 text-gray-500 bg-gray-700 bg-opacity-30 hover:bg-opacity-20 hover:text-white' const selectStyle = 'text-white border-[#BE78FF] bg-synapse-radial' const { loading, stopPolling, startPolling } = useQuery( GET_BRIDGE_TRANSACTIONS_QUERY, { pollInterval: 10000, fetchPolicy: 'network-only', variables: { pending, useMv: true, }, onCompleted: (data) => { let bridgeTransactionsTable = data.bridgeTransactions bridgeTransactionsTable = _.orderBy( bridgeTransactionsTable, 'fromInfo.time', ['desc'] ).slice(0, 15) setTransactionsArr(bridgeTransactionsTable) }, } ) const [getDailyStatisticsByChain, { loading: loadingDailyData }] = useLazyQuery(DAILY_STATISTICS_BY_CHAIN, { onCompleted: (data) => { let chartData = data.dailyStatisticsByChain if (dailyStatisticCumulative) { chartData = JSON.parse(JSON.stringify(data.dailyStatisticsByChain)) for (let i = 1; i < chartData.length; i++) { for (const key in data.dailyStatisticsByChain[i]) { if (key !== 'date' && key !== '__typename') { chartData[i][key] += chartData[i - 1]?.[key] ? chartData[i - 1][key] : 0 } } } } setDailyDataArr(chartData) }, }) // update chart useEffect(() => { let type = dailyStatisticType if (platform === 'MESSAGE_BUS' && dailyStatisticType !== 'TRANSACTIONS') { type = 'TRANSACTIONS' setDailyStatisticType('TRANSACTIONS') } getDailyStatisticsByChain({ variables: { type, duration: dailyStatisticDuration, platform, useCache: true, useMv: true, }, }) }, [ dailyStatisticDuration, dailyStatisticType, dailyStatisticCumulative, platform, ]) // Get initial data useEffect(() => { getDailyStatisticsByChain({ variables: { type: dailyStatisticType, duration: dailyStatisticDuration, useCache: true, useMv: true, }, }) }, []) useEffect(() => { if (!completed) { startPolling(10000) } else { stopPolling() } return () => { stopPolling() } }, [stopPolling, startPolling, completed]) return (
{platform === 'MESSAGE_BUS' ? null : ( )} {platform === 'MESSAGE_BUS' ? null : ( <> )}




Recent Transactions

{ setKappa(e.target.value) }} onKeyDown={(e) => { if (e.key === 'Enter') { window.location.href = TRANSACTIONS_PATH + (kappa ? '?hash=' + kappa : '') } }} id="outlined-basic" label="Search by TXID / TXHash" variant="outlined" sx={inputStyle} /> Search
{loading ? (
) : ( )}
) }