2022-04-12 13:48:22 -07:00
|
|
|
import type { AppProps } from 'next/app'
|
2022-07-05 20:37:49 -07:00
|
|
|
import { useEffect, useMemo } from 'react'
|
|
|
|
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base'
|
2022-07-26 18:30:51 -07:00
|
|
|
import { ConnectionProvider } from '@solana/wallet-adapter-react'
|
2022-06-10 06:05:45 -07:00
|
|
|
import {
|
|
|
|
GlowWalletAdapter,
|
|
|
|
PhantomWalletAdapter,
|
|
|
|
SolflareWalletAdapter,
|
|
|
|
} from '@solana/wallet-adapter-wallets'
|
|
|
|
import { clusterApiUrl } from '@solana/web3.js'
|
|
|
|
|
2022-07-05 20:37:49 -07:00
|
|
|
import '../styles/globals.css'
|
2022-09-12 08:53:57 -07:00
|
|
|
import mangoStore from '@store/mangoStore'
|
2022-06-10 06:05:45 -07:00
|
|
|
import useInterval from '../components/shared/useInterval'
|
2022-07-05 20:37:49 -07:00
|
|
|
import Notifications from '../components/shared/Notification'
|
|
|
|
import { ThemeProvider } from 'next-themes'
|
2022-07-14 16:36:31 -07:00
|
|
|
import { appWithTranslation } from 'next-i18next'
|
2022-07-26 19:45:27 -07:00
|
|
|
import Layout from '../components/Layout'
|
2022-07-18 04:17:56 -07:00
|
|
|
import { ViewportProvider } from '../hooks/useViewport'
|
2022-07-26 18:47:11 -07:00
|
|
|
import { WalletProvider } from '../components/wallet/WalletProvider'
|
2022-06-10 06:05:45 -07:00
|
|
|
|
2022-09-13 23:24:26 -07:00
|
|
|
const rehydrateStore = async () => {
|
2022-06-10 06:05:45 -07:00
|
|
|
const actions = mangoStore.getState().actions
|
2022-08-02 11:04:00 -07:00
|
|
|
actions.fetchGroup()
|
2022-08-25 20:30:39 -07:00
|
|
|
const mangoAccount = mangoStore.getState().mangoAccount.current
|
|
|
|
if (mangoAccount) {
|
2022-08-26 09:01:28 -07:00
|
|
|
// actions.reloadMangoAccount()
|
2022-08-25 20:30:39 -07:00
|
|
|
}
|
2022-07-05 20:37:49 -07:00
|
|
|
}
|
|
|
|
|
2022-06-29 20:37:25 -07:00
|
|
|
const HydrateStore = () => {
|
2022-06-10 06:05:45 -07:00
|
|
|
useInterval(() => {
|
2022-09-13 23:24:26 -07:00
|
|
|
rehydrateStore()
|
2022-08-25 20:30:39 -07:00
|
|
|
}, 5000)
|
2022-06-10 06:05:45 -07:00
|
|
|
|
|
|
|
useEffect(() => {
|
2022-08-02 11:04:00 -07:00
|
|
|
const actions = mangoStore.getState().actions
|
|
|
|
actions.fetchGroup().then(() => {
|
|
|
|
actions.fetchJupiterTokens()
|
|
|
|
})
|
2022-09-13 23:24:26 -07:00
|
|
|
actions.fetchCoingeckoPrices()
|
2022-06-10 06:05:45 -07:00
|
|
|
}, [])
|
2022-06-29 20:37:25 -07:00
|
|
|
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
|
|
|
|
function MyApp({ Component, pageProps }: AppProps) {
|
2022-06-10 06:05:45 -07:00
|
|
|
const network = WalletAdapterNetwork.Devnet
|
|
|
|
const endpoint = useMemo(() => clusterApiUrl(network), [network])
|
|
|
|
const wallets = useMemo(
|
|
|
|
() => [
|
|
|
|
new PhantomWalletAdapter(),
|
|
|
|
new GlowWalletAdapter(),
|
|
|
|
new SolflareWalletAdapter({ network }),
|
|
|
|
],
|
|
|
|
[network]
|
|
|
|
)
|
|
|
|
|
|
|
|
return (
|
2022-06-29 20:37:25 -07:00
|
|
|
<>
|
|
|
|
<HydrateStore />
|
|
|
|
<ConnectionProvider endpoint={endpoint}>
|
2022-07-05 20:37:49 -07:00
|
|
|
<WalletProvider wallets={wallets}>
|
2022-08-01 08:53:09 -07:00
|
|
|
<ThemeProvider defaultTheme="Dark">
|
2022-07-26 18:21:17 -07:00
|
|
|
<ViewportProvider>
|
|
|
|
<Layout>
|
|
|
|
<Component {...pageProps} />
|
|
|
|
</Layout>
|
|
|
|
</ViewportProvider>
|
|
|
|
<Notifications />
|
|
|
|
</ThemeProvider>
|
2022-06-29 20:37:25 -07:00
|
|
|
</WalletProvider>
|
|
|
|
</ConnectionProvider>
|
|
|
|
</>
|
2022-06-10 06:05:45 -07:00
|
|
|
)
|
2022-04-12 13:48:22 -07:00
|
|
|
}
|
|
|
|
|
2022-07-14 16:36:31 -07:00
|
|
|
export default appWithTranslation(MyApp)
|