Skip to content

Commit 53a8c6d

Browse files
authored
Merge pull request #100 from geobrowser/ng/migrate-to-viem
replace ethers with viem
2 parents d6a4f0a + 99abb35 commit 53a8c6d

File tree

5 files changed

+60
-112
lines changed

5 files changed

+60
-112
lines changed

apps/events/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
"class-variance-authority": "^0.7.0",
2222
"clsx": "^2.1.1",
2323
"effect": "^3.12.2",
24-
"ethers": "^5.7.2",
2524
"isomorphic-ws": "^5.0.0",
2625
"lucide-react": "^0.441.0",
2726
"react": "^18.3.1",
@@ -30,7 +29,7 @@
3029
"tailwind-merge": "^2.5.3",
3130
"tailwindcss-animate": "^1.0.7",
3231
"uuid": "^11.0.3",
33-
"viem": "^2.21.56",
32+
"viem": "^2.22.9",
3433
"vite": "^6.0.7"
3534
},
3635
"devDependencies": {

apps/events/src/components/auth.tsx

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { Identity } from '@graphprotocol/hypergraph';
22
import { PrivyProvider, usePrivy, useWallets } from '@privy-io/react-auth';
3-
import { ethers } from 'ethers';
43
import { useEffect, useState } from 'react';
4+
import { createWalletClient, custom } from 'viem';
5+
import { mainnet } from 'viem/chains';
56

67
function DoGraphLogin() {
78
const { login } = Identity.useGraphLogin();
@@ -24,16 +25,27 @@ function Auth({ children }: { children: React.ReactNode }) {
2425
(async () => {
2526
const embeddedWallet = wallets.find((wallet) => wallet.walletClientType === 'privy') || wallets[0];
2627
const privyProvider = await embeddedWallet.getEthereumProvider();
27-
const ethersProvider = new ethers.providers.Web3Provider(privyProvider);
28-
const newSigner = await ethersProvider.getSigner();
2928

30-
if (embeddedWallet.walletClientType === 'privy') {
31-
newSigner.signMessage = async (message) => {
32-
// @ts-expect-error signMessage is a string in this case
33-
const { signature } = await signMessage({ message }); //, uiConfig);
34-
return signature;
35-
};
36-
}
29+
const walletClient = createWalletClient({
30+
chain: mainnet,
31+
transport: custom(privyProvider),
32+
});
33+
34+
// create a signer-like interface compatible with Identity.Signer
35+
const newSigner: Identity.Signer = {
36+
getAddress: async () => {
37+
const [address] = await walletClient.getAddresses();
38+
return address;
39+
},
40+
signMessage: async (message: string) => {
41+
if (embeddedWallet.walletClientType === 'privy') {
42+
const { signature } = await signMessage({ message });
43+
return signature;
44+
}
45+
const [address] = await walletClient.getAddresses();
46+
return await walletClient.signMessage({ account: address, message });
47+
},
48+
};
3749

3850
setSigner(newSigner);
3951
})();

apps/server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"effect": "^3.12.2",
1515
"express": "^5.0.1",
1616
"siwe": "^2.3.2",
17-
"viem": "^2.21.56",
17+
"viem": "^2.22.9",
1818
"ws": "^8.17.1"
1919
},
2020
"devDependencies": {

packages/hypergraph/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,6 @@
5151
"effect": "^3.12.1",
5252
"siwe": "^2.3.2",
5353
"uuid": "^11.0.4",
54-
"viem": "^2.22.6"
54+
"viem": "^2.22.9"
5555
}
5656
}

pnpm-lock.yaml

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

0 commit comments

Comments
 (0)