Skip to content

Commit 4499f69

Browse files
committedJan 20, 2025
add internal signer
added internal signer so it can be updated on wallet events; rm unused noPasskeyIframe app param;
1 parent 71a61e9 commit 4499f69

File tree

3 files changed

+90
-12
lines changed

3 files changed

+90
-12
lines changed
 

‎packages/gateway/src/contexts/global.context.tsx

+1-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ function GlobalProvider({ children }: { children: ReactNode }) {
3333
const urlParams = new URLSearchParams(window.location.search);
3434

3535
if (!wallet) {
36-
setWallet(
37-
EmbeddedWalletSDK({ clientId: urlParams.get('clientId') || '', noPasskeyIframe: true })
38-
);
36+
setWallet(EmbeddedWalletSDK({ clientId: urlParams.get('clientId') || '' }));
3937
}
4038

4139
const referrer = urlParams.get('ref');

‎packages/sdk/lib/adapters/ethers.ts

+88-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ import { abort, getEmbeddedWallet } from '../utils';
33
import EmbeddedWallet from '..';
44

55
class EmbeddedEthersSigner extends ethers.AbstractSigner<ethers.JsonRpcProvider> {
6-
address = '';
76
wallet: EmbeddedWallet;
8-
// override provider: ethers.JsonRpcProvider;
7+
internalSigner: InternalEmbeddedEthersSignerextends;
98

109
constructor(provider?: ethers.JsonRpcProvider) {
1110
const w = getEmbeddedWallet();
@@ -16,8 +15,94 @@ class EmbeddedEthersSigner extends ethers.AbstractSigner<ethers.JsonRpcProvider>
1615

1716
super(provider || w.getRpcProviderForChainId(w.defaultNetworkId));
1817

18+
this.internalSigner = new InternalEmbeddedEthersSignerextends(
19+
provider || w.getRpcProviderForChainId(w.defaultNetworkId),
20+
w
21+
);
22+
1923
this.wallet = w!;
20-
// this.provider = provider;
24+
25+
/**
26+
* Reinitialize signer with new provider when chain changes
27+
*/
28+
w.events.on('dataUpdated', ({ name, newValue }) => {
29+
if (name === 'defaultNetworkId') {
30+
this.internalSigner = new InternalEmbeddedEthersSignerextends(
31+
w.getRpcProviderForChainId(newValue),
32+
this.wallet
33+
);
34+
}
35+
});
36+
}
37+
38+
override connect(): ethers.Signer {
39+
return this.internalSigner;
40+
}
41+
42+
override async getAddress(): Promise<string> {
43+
const a = await this.wallet.getAccountAddress();
44+
return a || '';
45+
}
46+
47+
override async signTransaction(
48+
tx: ethers.TransactionRequest,
49+
mustConfirm = true
50+
): Promise<string> {
51+
return this.internalSigner.signTransaction(tx, mustConfirm);
52+
}
53+
54+
override async signMessage(message: string | Uint8Array, mustConfirm = true): Promise<string> {
55+
return this.internalSigner.signMessage(message, mustConfirm);
56+
}
57+
58+
override async sendTransaction(
59+
tx: ethers.TransactionRequest
60+
): Promise<ethers.TransactionResponse> {
61+
return this.internalSigner.sendTransaction(tx);
62+
}
63+
64+
/**
65+
* NOT implemented
66+
*/
67+
override async signTypedData(
68+
domain: ethers.TypedDataDomain,
69+
types: Record<string, ethers.TypedDataField[]>,
70+
value: Record<string, any>
71+
): Promise<string> {
72+
console.error('EmbeddedEthersSigner#signTypedData Not implemented', { domain, types, value });
73+
return '';
74+
}
75+
76+
/**
77+
* @deprecated v5 signer properties
78+
*/
79+
_isSigner = true;
80+
async getBalance(blockTag?: ethers.BlockTag) {
81+
return this.internalSigner.getBalance(blockTag);
82+
}
83+
async getTransactionCount(blockTag?: ethers.BlockTag) {
84+
return this.internalSigner.getTransactionCount(blockTag);
85+
}
86+
async getChainId() {
87+
return this.internalSigner.getChainId();
88+
}
89+
async getGasPrice() {
90+
return this.internalSigner.getGasPrice();
91+
}
92+
async getFeeData() {
93+
return this.internalSigner.getFeeData();
94+
}
95+
}
96+
97+
class InternalEmbeddedEthersSignerextends extends ethers.AbstractSigner<ethers.JsonRpcProvider> {
98+
// address = '';
99+
// override provider: ethers.JsonRpcProvider;
100+
101+
constructor(
102+
provider: ethers.JsonRpcProvider,
103+
private wallet: EmbeddedWallet
104+
) {
105+
super(provider);
21106
}
22107

23108
override connect(): ethers.Signer {

‎packages/sdk/lib/types.ts

+1-6
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,9 @@ export type AppParams = {
5252
networks?: Network[];
5353

5454
/**
55-
* Use a new window for creating and authenticating with a passkey
55+
* Method for authenticating with passkey to make it global.
5656
*/
5757
passkeyAuthMode?: AuthPasskeyMode;
58-
59-
/**
60-
* Iframe uses same wallet code. Set this to prevent implosion.
61-
*/
62-
noPasskeyIframe?: boolean;
6358
};
6459

6560
export type AuthData = {

0 commit comments

Comments
 (0)