mirror of
https://github.com/luxfi/explore.git
synced 2026-07-27 05:54:15 +00:00
* context for storing subchain config and tx view for subchain * address page and block page for subchain * address aggregated page: local txs tab * connect MultichainSelect to context * home page placeholder * refactor subchain select state * envs for demo * fix ts * clear value for l2 review * subchain widgets on home page * csp policies * sockets, duck and goose * fix socket on subchain address page * link builder for subchain views * update home widget * fix time increment * enable tx interpretator and metadata service * generate multichain config based on every chain app config * Fix the multichain config to work in Docker * multichain socket test * rename subchain-id to subchain-slug path param * refactoring * update chain icons on entities * home page: latest local txs * latest cross-chain txs * minor improvements * renaming, pt. 1 * rename chain routes * enable blockchain interaction * add loading state to icon shield * fix build * fix tests * update types package
98 lines
2.8 KiB
TypeScript
98 lines
2.8 KiB
TypeScript
import { GrowthBookProvider } from '@growthbook/growthbook-react';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
import React from 'react';
|
|
import { http } from 'viem';
|
|
import { WagmiProvider, createConfig } from 'wagmi';
|
|
import { mock } from 'wagmi/connectors';
|
|
|
|
import type { Props as PageProps } from 'nextjs/getServerSideProps';
|
|
|
|
import config from 'configs/app';
|
|
import { AppContextProvider } from 'lib/contexts/app';
|
|
import { MarketplaceContext } from 'lib/contexts/marketplace';
|
|
import { RewardsContextProvider } from 'lib/contexts/rewards';
|
|
import { SettingsContextProvider } from 'lib/contexts/settings';
|
|
import { SocketProvider } from 'lib/socket/context';
|
|
import { currentChain } from 'lib/web3/chains';
|
|
import { Provider as ChakraProvider } from 'toolkit/chakra/provider';
|
|
|
|
import { port as socketPort } from './utils/socket';
|
|
|
|
export type Props = {
|
|
children: React.ReactNode;
|
|
withSocket?: boolean;
|
|
withWalletClient?: boolean;
|
|
appContext?: {
|
|
pageProps: PageProps;
|
|
};
|
|
marketplaceContext?: {
|
|
isAutoConnectDisabled: boolean;
|
|
setIsAutoConnectDisabled: (isAutoConnectDisabled: boolean) => void;
|
|
};
|
|
};
|
|
|
|
const defaultAppContext = {
|
|
pageProps: {
|
|
cookies: '',
|
|
referrer: '',
|
|
query: {},
|
|
adBannerProvider: 'slise' as const,
|
|
apiData: null,
|
|
uuid: '123',
|
|
},
|
|
};
|
|
|
|
const defaultMarketplaceContext = {
|
|
isAutoConnectDisabled: false,
|
|
setIsAutoConnectDisabled: () => {},
|
|
};
|
|
|
|
const wagmiConfig = currentChain ? createConfig({
|
|
chains: [ currentChain ],
|
|
connectors: [
|
|
mock({
|
|
accounts: [
|
|
'0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
],
|
|
}),
|
|
],
|
|
transports: {
|
|
[currentChain.id]: http(),
|
|
},
|
|
}) : undefined;
|
|
|
|
const TestApp = ({ children, withSocket, appContext = defaultAppContext, marketplaceContext = defaultMarketplaceContext }: Props) => {
|
|
const [ queryClient ] = React.useState(() => new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
refetchOnWindowFocus: false,
|
|
retry: 0,
|
|
},
|
|
},
|
|
}));
|
|
|
|
return (
|
|
<ChakraProvider>
|
|
<QueryClientProvider client={ queryClient }>
|
|
<SocketProvider url={ withSocket ? `ws://${ config.app.host }:${ socketPort }` : undefined }>
|
|
<AppContextProvider { ...appContext }>
|
|
<MarketplaceContext.Provider value={ marketplaceContext }>
|
|
<SettingsContextProvider>
|
|
<GrowthBookProvider>
|
|
<WagmiProvider config={ wagmiConfig! }>
|
|
<RewardsContextProvider>
|
|
{ children }
|
|
</RewardsContextProvider>
|
|
</WagmiProvider>
|
|
</GrowthBookProvider>
|
|
</SettingsContextProvider>
|
|
</MarketplaceContext.Provider>
|
|
</AppContextProvider>
|
|
</SocketProvider>
|
|
</QueryClientProvider>
|
|
</ChakraProvider>
|
|
);
|
|
};
|
|
|
|
export default TestApp;
|