Skip to content

Commit

Permalink
refactor: solana and evm are unified into one package (#181)
Browse files Browse the repository at this point in the history
* feat: Split into four packages: ui, wagmi, solana and walletkit

* feat: Split packages & support solana

* feat: Split package into solana & wagmi

* feat: Split package into solana & wagmi

* feat: Update soft link

* feat: Update soft link (#179)

* feat: Split into four packages: ui, wagmi, solana and walletkit

* feat: Split packages & support solana

* feat: Split package into solana & wagmi

* feat: Split package into solana & wagmi

* feat: Update soft link

* chore: update versions (alpha) (#180)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* refactor: Refactor walletkit

* refactor: Refactor wallets

* feat: Update pack config

* feat: Add ConnectModal

* refactor: Normalized names

* refactor: solana and evm are unified into one package

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored Aug 15, 2024
1 parent fcf0e97 commit 527329f
Show file tree
Hide file tree
Showing 262 changed files with 19,444 additions and 9,296 deletions.
5 changes: 5 additions & 0 deletions .changeset/friendly-weeks-applaud.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@node-real/walletkit': minor
---

refactor: solana and evm are unified into one package
6 changes: 4 additions & 2 deletions examples/nextjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@
},
"dependencies": {
"@node-real/walletkit": "workspace:*",
"@tanstack/react-query": "^5",
"encoding": "^0.1.13",
"next": "^14",
"pino-pretty": "^11.2.2",
"react": "^18",
"react-dom": "^18",
"viem": "^2",
"wagmi": "^2",
"@tanstack/react-query": "^5.51.1"
"wagmi": "^2"
},
"devDependencies": {
"@types/node": "^20",
Expand Down
77 changes: 45 additions & 32 deletions examples/nextjs/pages/_app.tsx
Original file line number Diff line number Diff line change
@@ -1,62 +1,75 @@
import '@node-real/walletkit/styles.css';
import '@/styles/globals.css';
import { bsc, mainnet, opBNB } from 'wagmi/chains';
import { mainnet } from 'wagmi/chains';

import { trustWallet, metaMask, walletConnect } from '@node-real/walletkit/wallets';
import { trustWallet, metaMask, walletConnect } from '@node-real/walletkit/evm';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import {
defaultWagmiConfig,
SwitchNetworkModal,
WalletKitButton,
WalletKitOptions,
WalletKitProvider,
ProfileModal,
ConnectModal,
useConnectModal,
WalletKitConfig,
} from '@node-real/walletkit';
import { WagmiProvider } from 'wagmi';
import { AppProps } from 'next/app';
import {
trustWallet as solanaTrustWallet,
phantomWallet as solanaPhantomWallet,
} from '@node-real/walletkit/solana';

const queryClient = new QueryClient();

const config = defaultWagmiConfig({
appName: 'WalletKit',
chains: [bsc, mainnet, opBNB],
connectors: [trustWallet(), metaMask(), walletConnect()],

// WalletConnect 2.0 requires a projectId which you can create quickly
// and easily for free over at WalletConnect Cloud https://cloud.walletconnect.com/sign-in
walletConnectProjectId: 'e68a1816d39726c2afabf05661a32767',
});

const options: WalletKitOptions = {
initialChainId: 1,
const config: WalletKitConfig = {
walletSetting: {
autoConnect: true,
evm: {
initialChainId: 1,
wallets: [metaMask(), trustWallet(), walletConnect()],
chains: [mainnet] as any[],
},
solana: {
rpcUrl: 'https://solana-rpc.debridge.finance',
wallets: [solanaTrustWallet(), solanaPhantomWallet()],
},
},
appearance: {
mode: 'light',
},
events: {
closeModalOnEsc: false,
closeModalOnOverlayClick: false,
closeModalAfterConnected: true,
},
};

export default function App({ Component, pageProps }: AppProps) {
return (
<WagmiProvider config={config} reconnectOnMount={true}>
<WalletKitProvider config={config}>
<QueryClientProvider client={queryClient}>
<WalletKitProvider options={options} mode="light">
<Component {...pageProps} />

<WalletKitButton />
<Component {...pageProps} />

<ConnectModal />
{/* <ConnectButton /> */}
<ConnectButton />
<ConnectModal />

{/*
{/*
Profile modal shows some basic information about the current account,
If you don't need this modal, you can remove it.
*/}
<ProfileModal />
{/* <ProfileModal /> */}

{/*
{/*
👇 Here's the SwitchNetworkModal
If the user switches to a network that is not supported by our dApp,
this modal will be displayed to remind the user to switch to our supported networks.
*/}
<SwitchNetworkModal />
</WalletKitProvider>
{/* <SwitchNetworkModal /> */}
</QueryClientProvider>
</WagmiProvider>
</WalletKitProvider>
);
}

function ConnectButton() {
const { onOpen } = useConnectModal();

return <button onClick={() => onOpen()}>connect</button>;
}
2 changes: 1 addition & 1 deletion examples/nextjs/pages/_document.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Html, Head, Main, NextScript } from 'next/document';
import { EthereumScript } from '@node-real/walletkit';
import { EthereumScript } from '@node-real/walletkit/evm';

export default function Document() {
return (
Expand Down
5 changes: 3 additions & 2 deletions examples/vite/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@
},
"dependencies": {
"@node-real/walletkit": "workspace:*",
"@particle-network/connectkit": "^2.0.0",
"@tanstack/react-query": "^5",
"react": "^18",
"react-dom": "^18",
"viem": "^2",
"wagmi": "^2",
"@tanstack/react-query": "^5.51.1"
"wagmi": "^2"
},
"devDependencies": {
"@types/react": "^18",
Expand Down
126 changes: 94 additions & 32 deletions examples/vite/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,47 +1,109 @@
import '@node-real/walletkit/styles.css';
import './global.css';
import { bsc, mainnet, opBNB } from 'wagmi/chains';

import { trustWallet, metaMask, walletConnect } from '@node-real/walletkit/wallets';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import {
BaseWallet,
ConnectModal,
defaultWagmiConfig,
ProfileModal,
SwitchNetworkModal,
WalletKitButton,
WalletKitOptions,
useConnectModal,
useWallets,
WalletKitConfig,
WalletKitProvider,
} from '@node-real/walletkit';
import { WagmiProvider } from 'wagmi';

const queryClient = new QueryClient();
import VConsole from 'vconsole';
import { metaMask, trustWallet, walletConnect } from '@node-real/walletkit/evm';
import {
trustWallet as solanaTrustWallet,
phantomWallet as solanaPhantomWallet,
} from '@node-real/walletkit/solana';
import { mainnet } from 'viem/chains';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const config = defaultWagmiConfig({
appName: 'WalletKit',
chains: [mainnet, bsc, opBNB],
connectors: [trustWallet(), metaMask(), walletConnect()],
new VConsole();

// WalletConnect 2.0 requires a projectId which you can create quickly
// and easily for free over at WalletConnect Cloud https://cloud.walletconnect.com/sign-in
walletConnectProjectId: 'e68a1816d39726c2afabf05661a32767',
});
const queryClient = new QueryClient();

const options: WalletKitOptions = {
initialChainId: 1,
const config: WalletKitConfig = {
walletSetting: {
autoConnect: true,
evm: {
initialChainId: 1,
wallets: [metaMask(), trustWallet(), walletConnect()],
chains: [mainnet] as any[],
},
solana: {
rpcUrl: 'https://solana-rpc.debridge.finance',
wallets: [solanaTrustWallet(), solanaPhantomWallet()],
},
},
appearance: {},
events: {
closeModalOnEsc: false,
closeModalOnOverlayClick: false,
closeModalAfterConnected: true,
},
};

export default function App() {
return (
<WagmiProvider config={config} reconnectOnMount={false}>
<WalletKitProvider config={config}>
<QueryClientProvider client={queryClient}>
<WalletKitProvider options={options} mode="light">
<WalletKitButton />
<ConnectModal />
<ProfileModal />
<SwitchNetworkModal />
</WalletKitProvider>
<ConnectButton />
<ConnectModal />
</QueryClientProvider>
</WagmiProvider>
</WalletKitProvider>
);
}

function selectWallets(wallets: BaseWallet[], include: string, exclude: string) {
const newWallets: BaseWallet[] = [];
wallets.forEach((item) => {
if (item.walletType === include) {
newWallets.push({ ...item });
} else if (item.walletType === exclude) {
newWallets.push({
...item,
render: ({ wallet, onClick }) => {
return <button onClick={onClick}>{wallet.name}</button>;
},
});
}
});

newWallets.forEach((item) => {
if (
newWallets.find(
(e) => e.walletType === include && item.walletType === exclude && e.id === item.id,
)
) {
item.isVisible = false;
}
});

newWallets.sort((a, b) => {
if (a.walletType === b.walletType) return 0;
if (a.walletType === include) return -1;
return 0;
});

return newWallets;
}

function ConnectButton() {
const { onOpen } = useConnectModal();
const { wallets, setWallets } = useWallets();

const onEvm = () => {
const newWallets = selectWallets(wallets, 'evm', 'solana');
setWallets(newWallets);
};

const onSolana = () => {
const newWallets = selectWallets(wallets, 'solana', 'evm');
setWallets(newWallets);
};

return (
<>
<button onClick={() => onOpen()}>connect</button>
<button onClick={() => onEvm()}>evm</button>
<button onClick={() => onSolana()}>solana</button>
</>
);
}
10 changes: 4 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
"scripts": {
"prepare": "husky install",
"lint": "pnpm eslint .",
"dev": "pnpm --F @node-real/walletkit dev",
"build": "pnpm --F @node-real/walletkit build",
"dev:docs": "pnpm --F @node-real/walletkit build:watch & pnpm --F website dev",
"build": "pnpm --F @node-real/* build",
"build:docs": "pnpm build && pnpm --F website build",
"ci:enter": "pnpm changeset pre enter alpha || true",
"ci:exit": "pnpm changeset pre exit || true",
Expand All @@ -21,7 +19,7 @@
"ci:stable-version": "pnpm ci:exit && pnpm ci:version"
},
"devDependencies": {
"@changesets/cli": "^2.27.5",
"@changesets/cli": "^2.27.7",
"@commitlint/cli": "^18.6.1",
"@commitlint/config-conventional": "^18.6.3",
"@typescript-eslint/eslint-plugin": "^5.62.0",
Expand All @@ -30,7 +28,7 @@
"eslint-plugin-react-hooks": "^4.6.2",
"eslint-plugin-react-refresh": "^0.3.5",
"husky": "^8.0.3",
"lint-staged": "^15.2.7",
"prettier": "^3.3.2"
"lint-staged": "^15.2.9",
"prettier": "^3.3.3"
}
}
40 changes: 0 additions & 40 deletions packages/walletkit/CHANGELOG.md

This file was deleted.

Loading

0 comments on commit 527329f

Please sign in to comment.