nimbus-bridge
Version:
183 lines • 8.08 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { ThemeProvider } from "next-themes";
import { useEffect, useMemo, useState } from "react";
import { LogLevel, MAINNET_RELAY_API } from "@reservoir0x/relay-sdk";
import { RelayKitProvider } from "@reservoir0x/relay-kit-ui";
import { WagmiProvider, createConfig, http } from "wagmi";
import { useRelayChains } from "@reservoir0x/relay-kit-hooks";
import { mainnet, arbitrum, ancient8, apeChain, arbitrumNova, avalanche, b3, base, blast, bob, boba, cyber, degen, forma, gnosis, ham, hychain, ink, linea, mantle, mint, mode, optimism, polygon, polygonZkEvm, scroll, redstone, sei, zksync, } from "wagmi/chains";
import { DynamicWagmiConnector } from "@dynamic-labs/wagmi-connector";
import { DynamicContextProvider, FilterChain, } from "@dynamic-labs/sdk-react-core";
import { EthereumWalletConnectors } from "@dynamic-labs/ethereum";
import { BitcoinWalletConnectors } from "@dynamic-labs/bitcoin";
import { SolanaWalletConnectors } from "@dynamic-labs/solana";
import { EclipseWalletConnectors } from "@dynamic-labs/eclipse";
import { SuiWalletConnectors } from "@dynamic-labs/sui";
import { AbstractEvmWalletConnectors } from "@dynamic-labs-connectors/abstract-global-wallet-evm";
import { convertRelayChainToDynamicNetwork } from "./utils/dynamic";
import { useWalletFilter } from "./context/walletFilter";
import { Bridge } from "./Bridge";
export const AppWrapped = ({ fee, recipientAddress, duneApiKey, dynamicApiKey, isDarkMode, config, }) => {
const theme = useMemo(() => {
return {
widget: {
background: isDarkMode ? "#0f0f0f" : "#",
borderRadius: "20px",
card: {
background: isDarkMode ? "#0f0f0f" : "",
borderRadius: "20px",
},
selector: {
background: isDarkMode ? "#0f0f0f" : "",
hover: {
background: isDarkMode ? "#0f0f0f" : "",
},
},
swapCurrencyButtonBorderColor: isDarkMode ? "gray" : "",
swapCurrencyButtonBorderWidth: "2px",
},
modal: {
background: isDarkMode ? "#0f0f0f" : "",
},
input: {
background: isDarkMode ? "#0f0f0f" : "",
color: isDarkMode ? "#fff" : "",
},
anchor: {
color: isDarkMode ? "#fff" : "#000",
hover: {
color: isDarkMode ? "#fff" : "#000",
},
},
primaryColor: "#1e96fc",
focusColor: "#1e96fc",
buttons: {
primary: {
background: "#1e96fc",
hover: {
background: "#1469b0",
},
},
},
};
}, [isDarkMode]);
const { walletFilter, setWalletFilter } = useWalletFilter();
const [wagmiConfig, setWagmiConfig] = useState();
const { chains, viemChains } = useRelayChains(MAINNET_RELAY_API, {
includeChains: "bfb8677a-eefc-47fa-9388-beca0c6f9d17,e7f3d1fc-1d6e-4043-b57e-81db1a4301f7,32d4ad9e-0de1-4993-a07b-a27c27d869c4,52824ebe-d1ee-4e5e-a00f-9866218b44a1",
referrer: "relay-demo",
});
useEffect(() => {
if (chains && viemChains && !wagmiConfig) {
setWagmiConfig(createConfig({
chains: (viemChains && viemChains.length === 0
? [
mainnet,
arbitrum,
ancient8,
apeChain,
arbitrumNova,
avalanche,
b3,
base,
blast,
bob,
boba,
cyber,
degen,
forma,
gnosis,
ham,
hychain,
ink,
linea,
mantle,
mint,
mode,
optimism,
polygon,
polygonZkEvm,
scroll,
redstone,
sei,
zksync,
]
: viemChains),
multiInjectedProviderDiscovery: false,
transports: chains.reduce((transportsConfig, chain) => {
transportsConfig[chain.id] = http();
return transportsConfig;
}, {}),
}));
}
}, [chains, viemChains]);
// if (!wagmiConfig || !chains) {
// return null;
// }
return (_jsx(ThemeProvider, { attribute: "class", defaultTheme: isDarkMode ? "dark" : "light", enableSystem: true, disableTransitionOnChange: true, children: _jsx(RelayKitProvider, { theme: theme, options: {
baseApiUrl: MAINNET_RELAY_API,
source: "relay-demo",
logLevel: LogLevel.Verbose,
duneConfig: {
apiKey: duneApiKey,
apiBaseUrl: "https://api.dune.com",
},
chains,
appName: "Nimbus",
useGasFeeEstimations: true,
pollingInterval: 1000,
confirmationPollingInterval: 1000,
appFees: fee && recipientAddress
? [
{
recipient: recipientAddress,
fee,
},
]
: undefined,
}, children: _jsx(WagmiProvider, { config: wagmiConfig ||
createConfig({
chains: [mainnet],
multiInjectedProviderDiscovery: false,
transports: {
[mainnet.id]: http(),
},
}), children: _jsx(DynamicContextProvider, { theme: isDarkMode ? "dark" : "light", settings: {
logLevel: "INFO",
environmentId: dynamicApiKey ?? "",
walletConnectors: [
EthereumWalletConnectors,
SolanaWalletConnectors,
BitcoinWalletConnectors,
EclipseWalletConnectors,
SuiWalletConnectors,
AbstractEvmWalletConnectors,
],
cssOverrides: `
[data-testid="send-balance-button"] {
display: none;
}
`,
walletsFilter: walletFilter
? FilterChain(walletFilter)
: undefined,
overrides: {
evmNetworks: () => {
return chains
? chains
.filter((chain) => chain.vmType === "evm")
.map((chain) => {
return convertRelayChainToDynamicNetwork(chain);
})
: [];
},
},
initialAuthenticationMode: "connect-only",
events: {
onAuthFlowClose: () => {
setWalletFilter(undefined);
},
},
}, children: _jsx(DynamicWagmiConnector, { children: _jsx(Bridge, { config: config }) }) }) }) }) }));
};
//# sourceMappingURL=AppWrapped.js.map