2026-06-02 00:28:22 +08:00
|
|
|
import "@rainbow-me/rainbowkit/styles.css";
|
|
|
|
|
|
|
|
|
|
import {
|
|
|
|
|
RainbowKitProvider,
|
|
|
|
|
connectorsForWallets,
|
|
|
|
|
darkTheme,
|
|
|
|
|
} from "@rainbow-me/rainbowkit";
|
|
|
|
|
import {
|
|
|
|
|
imTokenWallet,
|
|
|
|
|
tokenPocketWallet,
|
|
|
|
|
} from "@rainbow-me/rainbowkit/wallets";
|
|
|
|
|
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
|
|
|
import { useState, type ReactNode } from "react";
|
2026-06-02 22:19:30 +08:00
|
|
|
import { http, createConfig, WagmiProvider, useReconnect } from "wagmi";
|
2026-06-02 02:58:01 +08:00
|
|
|
import { bsc } from "wagmi/chains";
|
2026-06-02 00:28:22 +08:00
|
|
|
|
|
|
|
|
const projectId =
|
|
|
|
|
import.meta.env.VITE_WALLETCONNECT_PROJECT_ID || "ark-library-dev-only";
|
|
|
|
|
|
|
|
|
|
const connectors = connectorsForWallets(
|
|
|
|
|
[
|
|
|
|
|
{
|
|
|
|
|
groupName: "ARK Library",
|
2026-06-04 10:52:41 +08:00
|
|
|
wallets: [imTokenWallet, tokenPocketWallet],
|
2026-06-02 00:28:22 +08:00
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
{
|
|
|
|
|
appName: "ARK Library",
|
|
|
|
|
projectId,
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
export const wagmiConfig = createConfig({
|
2026-06-02 02:58:01 +08:00
|
|
|
chains: [bsc],
|
2026-06-02 00:28:22 +08:00
|
|
|
connectors,
|
|
|
|
|
ssr: false,
|
|
|
|
|
transports: {
|
2026-06-02 02:58:01 +08:00
|
|
|
[bsc.id]: http(),
|
2026-06-02 00:28:22 +08:00
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
|
2026-06-02 22:19:30 +08:00
|
|
|
function WalletReconnectOnMount() {
|
|
|
|
|
useReconnect();
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2026-06-02 00:28:22 +08:00
|
|
|
export function RainbowWalletProvider({ children }: { children: ReactNode }) {
|
|
|
|
|
const [queryClient] = useState(() => new QueryClient());
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<WagmiProvider config={wagmiConfig}>
|
|
|
|
|
<QueryClientProvider client={queryClient}>
|
2026-06-02 22:19:30 +08:00
|
|
|
<WalletReconnectOnMount />
|
2026-06-02 00:28:22 +08:00
|
|
|
<RainbowKitProvider
|
|
|
|
|
modalSize="compact"
|
|
|
|
|
theme={darkTheme({
|
|
|
|
|
accentColor: "#d7b46a",
|
|
|
|
|
accentColorForeground: "#08070c",
|
|
|
|
|
borderRadius: "large",
|
|
|
|
|
fontStack: "system",
|
|
|
|
|
overlayBlur: "small",
|
|
|
|
|
})}
|
|
|
|
|
>
|
|
|
|
|
{children}
|
|
|
|
|
</RainbowKitProvider>
|
|
|
|
|
</QueryClientProvider>
|
|
|
|
|
</WagmiProvider>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function hasWalletConnectProjectId(): boolean {
|
|
|
|
|
return Boolean(import.meta.env.VITE_WALLETCONNECT_PROJECT_ID);
|
|
|
|
|
}
|