mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
* migrate from yarn to pnpm * feature-reporter: migrate from webpack to vite * remove unnecessary deps * bump pnpm to 10.32.1 * fix sitemap and favicon generator tools in docker * review and workflow fixes * fix pw test * update screenshots * update screenshot and add default maxDiffPixels value
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, mock } from 'wagmi';
|
|
import { mainnet } from 'wagmi/chains';
|
|
|
|
import type { Props as PageProps } from 'nextjs/getServerSideProps/handlers';
|
|
|
|
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 = createConfig({
|
|
chains: [ currentChain ?? mainnet ],
|
|
connectors: [
|
|
mock({
|
|
accounts: [
|
|
'0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
],
|
|
}),
|
|
],
|
|
transports: {
|
|
[currentChain?.id ?? mainnet.id]: http(),
|
|
},
|
|
});
|
|
|
|
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;
|