Skip to content

Commit a56be11

Browse files
author
dschlabach
committed
init
1 parent fbd1457 commit a56be11

File tree

2 files changed

+24
-38
lines changed

2 files changed

+24
-38
lines changed

playground/nextjs-app-router/components/AppProvider.tsx

+4-34
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,14 @@ import {
1212
import { OnchainKitProvider } from '@coinbase/onchainkit';
1313
import type React from 'react';
1414
import { createContext, useEffect, useState } from 'react';
15-
import { useConnect, useConnectors } from 'wagmi';
1615
import { base } from 'wagmi/chains';
17-
import { WalletPreference } from './form/wallet-type';
1816

1917
type State = {
2018
activeComponent?: OnchainKitComponent;
2119
setActiveComponent?: (component: OnchainKitComponent) => void;
22-
walletType?: WalletPreference;
23-
setWalletType?: (walletType: WalletPreference) => void;
24-
clearWalletType?: () => void;
20+
// walletType?: WalletPreference;
21+
// setWalletType?: (walletType: WalletPreference) => void;
22+
// clearWalletType?: () => void;
2523
chainId?: number;
2624
defaultMaxSlippage?: number;
2725
setDefaultMaxSlippage?: (defaultMaxSlippage: number) => void;
@@ -58,12 +56,9 @@ const defaultState: State = {
5856
export const AppContext = createContext(defaultState);
5957

6058
export const AppProvider = ({ children }: { children: React.ReactNode }) => {
61-
const { connect } = useConnect();
62-
const connectors = useConnectors();
63-
6459
const [activeComponent, setActiveComponentState] =
6560
useState<OnchainKitComponent>();
66-
const [walletType, setWalletTypeState] = useState<WalletPreference>();
61+
6762
const [chainId, setChainIdState] = useState<number>();
6863
const [transactionType, setTransactionTypeState] = useState<TransactionTypes>(
6964
TransactionTypes.Contracts,
@@ -90,7 +85,6 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => {
9085
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: TODO Refactor this component
9186
useEffect(() => {
9287
const storedActiveComponent = localStorage.getItem('activeComponent');
93-
const storedWalletType = localStorage.getItem('walletType');
9488
const storedChainId = localStorage.getItem('chainId');
9589
const storedPaymasters = localStorage.getItem('paymasters');
9690
const storedTransactionType = localStorage.getItem('transactionType');
@@ -107,9 +101,6 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => {
107101
if (storedActiveComponent) {
108102
setActiveComponent(storedActiveComponent as OnchainKitComponent);
109103
}
110-
if (storedWalletType) {
111-
setWalletType(storedWalletType as WalletPreference);
112-
}
113104
if (storedChainId) {
114105
setChainIdState(Number.parseInt(storedChainId));
115106
}
@@ -136,31 +127,13 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => {
136127
}
137128
}, []);
138129

139-
// Connect to wallet if walletType changes
140-
useEffect(() => {
141-
if (walletType === WalletPreference.SMART_WALLET) {
142-
connect({ connector: connectors[0] });
143-
} else if (walletType === WalletPreference.EOA) {
144-
connect({ connector: connectors[1] });
145-
}
146-
}, [connect, connectors, walletType]);
147130
// Update localStorage whenever the state changes
148131

149132
function setActiveComponent(component: OnchainKitComponent) {
150133
localStorage.setItem('activeComponent', component.toString());
151134
setActiveComponentState(component);
152135
}
153136

154-
function setWalletType(newWalletType: WalletPreference) {
155-
localStorage.setItem('walletType', newWalletType.toString());
156-
setWalletTypeState(newWalletType);
157-
}
158-
159-
function clearWalletType() {
160-
localStorage.setItem('walletType', '');
161-
setWalletTypeState(undefined);
162-
}
163-
164137
const setChainId = (newChainId: number) => {
165138
localStorage.setItem('chainId', newChainId.toString());
166139
setChainIdState(newChainId);
@@ -225,9 +198,6 @@ export const AppProvider = ({ children }: { children: React.ReactNode }) => {
225198
value={{
226199
activeComponent,
227200
setActiveComponent,
228-
walletType,
229-
setWalletType,
230-
clearWalletType,
231201
chainId,
232202
setChainId,
233203
componentTheme,

playground/nextjs-app-router/components/form/wallet-type.tsx

+20-4
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,36 @@
11
import { Label } from '@/components/ui/label';
22
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
33
import { getSlicedAddress } from '@/lib/utils';
4-
import { useContext } from 'react';
5-
import { useAccount, useConnectors, useDisconnect } from 'wagmi';
6-
import { AppContext } from '../AppProvider';
4+
import { useEffect, useState } from 'react';
5+
import { useAccount, useConnect, useConnectors, useDisconnect } from 'wagmi';
76

87
export enum WalletPreference {
98
SMART_WALLET = 'smartWalletOnly',
109
EOA = 'eoaOnly',
1110
}
1211

1312
export function WalletType() {
14-
const { walletType, setWalletType, clearWalletType } = useContext(AppContext);
13+
// const { walletType, setWalletType, clearWalletType } = useContext(AppContext);
1514
const { disconnectAsync } = useDisconnect();
1615
const connectors = useConnectors();
1716
const account = useAccount();
17+
const { connect } = useConnect();
18+
19+
const [walletType, setWalletType] = useState<WalletPreference>();
20+
21+
// Connect to wallet if walletType changes
22+
useEffect(() => {
23+
if (walletType === WalletPreference.SMART_WALLET) {
24+
connect({ connector: connectors[0] });
25+
} else if (walletType === WalletPreference.EOA) {
26+
connect({ connector: connectors[1] });
27+
}
28+
}, [connect, connectors, walletType]);
29+
30+
async function clearWalletType() {
31+
localStorage.removeItem('walletType');
32+
setWalletType?.(undefined);
33+
}
1834

1935
async function disconnectAll() {
2036
await disconnectAsync({ connector: connectors[0] });

0 commit comments

Comments
 (0)