Skip to content

Commit 6076bdb

Browse files
committed
Update aa provider
1 parent 444f1f7 commit 6076bdb

File tree

6 files changed

+62
-16
lines changed

6 files changed

+62
-16
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"eslint-plugin-react": "^7.33.2",
4343
"eslint-plugin-react-hooks": "^4.6.0",
4444
"eslint-plugin-react-refresh": "^0.4.5",
45+
"rollup-plugin-node-polyfills": "^0.2.1",
4546
"tailwindcss": "^3.4.0",
4647
"typescript": "^5.3.3",
4748
"vite": "^4.5.1",

pnpm-lock.yaml

Lines changed: 39 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/EvmAA.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { useAaAddress, useCurrentAddress, useUpdateAaAddress } from "../hooks/us
66
import { JoySigner } from "../evm-aa/signer";
77
import { getAAProvider } from "../evm-aa/provider";
88
import { ECDSAProvider } from "@zerodev/sdk";
9+
import { useEffect } from "react";
910

1011
// The NFT contract we will be interacting with
1112
const contractAddress = '0x34bE7f35132E97915633BC1fc020364EA5134863'
@@ -26,15 +27,17 @@ export const EvmAA = () => {
2627
const [signLoading, setSignLoading] = useState(false);
2728
const [mintLoading, setMintLoading] = useState(false);
2829

30+
useEffect(() => {
31+
const init = async () => {
32+
const signer = new JoySigner(webApp, address as Hex);
33+
setProvider(await getAAProvider(signer));
34+
};
35+
init();
36+
}, [address, webApp]);
37+
2938
const onCreate = async () => {
3039
setCreateLoading(true);
31-
const signer = new JoySigner(webApp, address as Hex);
32-
const aaProvider = await getAAProvider(signer);
33-
setProvider(aaProvider);
34-
const aaAddr = await aaProvider.account?.getAddress();
35-
if (aaAddr) {
36-
signer.setAaAddress(aaAddr);
37-
}
40+
const aaAddr = await provider?.account?.getAddress();
3841
updateAaAddress(aaAddr);
3942
setCreateLoading(false);
4043
};

src/evm-aa/signer.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { ConnectResp, SignResp, USER_REJECTED, api } from "../api";
66

77
export class JoySigner implements SmartAccountSigner {
88
address: Hex;
9-
aaAddress: Hex | undefined;
109
webApp: WebApp | undefined;
1110

1211
signerType = "local";
@@ -26,14 +25,10 @@ export class JoySigner implements SmartAccountSigner {
2625
}
2726
}
2827

29-
setAaAddress = (aaAddress: Hex) => {
30-
this.aaAddress = aaAddress
31-
}
32-
3328
readonly getAddress: () => Promise<Hex> = async () => {
34-
if (this.aaAddress) {
29+
if (this.address) {
3530
return new Promise((resolve) => {
36-
resolve(this.aaAddress as Hex)
31+
resolve(this.address as Hex);
3732
})
3833
}
3934
const promise = new Promise<Hex>((resolve, reject) => {

src/hooks/useAccount.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { atom, useAtomValue, useSetAtom } from 'jotai'
1+
import { useAtomValue, useSetAtom } from 'jotai'
22
import { atomWithStorage } from 'jotai/utils'
33
import { Hex } from 'viem';
44

@@ -7,6 +7,6 @@ export const useCurrentAddress = () => useAtomValue(addressAtom);
77
export const useUpdateAddress = () => useSetAtom(addressAtom);
88

99

10-
const aaAddressAtom = atom<Hex | undefined>(undefined);
10+
const aaAddressAtom = atomWithStorage<Hex | undefined>("joyid:aa-address", undefined);
1111
export const useAaAddress = () => useAtomValue(aaAddressAtom);
1212
export const useUpdateAaAddress = () => useSetAtom(aaAddressAtom);

vite.config.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {defineConfig} from "vite";
22
import react from "@vitejs/plugin-react";
33
import mkcert from "vite-plugin-mkcert";
44
import {NodeGlobalsPolyfillPlugin} from "@esbuild-plugins/node-globals-polyfill";
5+
import rollupNodePolyFill from "rollup-plugin-node-polyfills";
56
import {esbuildCommonjs, viteCommonjs} from "@originjs/vite-plugin-commonjs";
67

78
const plugins: any[] = [
@@ -40,6 +41,13 @@ export default defineConfig(({mode}) => {
4041
},
4142
build: {
4243
assetsInlineLimit: 5000,
44+
rollupOptions: {
45+
plugins: [
46+
// Enable rollup polyfills plugin
47+
// used during production bundling
48+
rollupNodePolyFill(),
49+
],
50+
},
4351
},
4452
optimizeDeps: {
4553
esbuildOptions: {

0 commit comments

Comments
 (0)