Skip to content

Commit 841d5ec

Browse files
committed
fix(clerk-js): require wallet name for Solana authentication and improve error handling
Signed-off-by: Kenton Duprey <kenton@clerk.dev>
1 parent 0c3eb2c commit 841d5ec

File tree

4 files changed

+21
-9
lines changed

4 files changed

+21
-9
lines changed

packages/clerk-js/src/core/clerk.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2294,7 +2294,13 @@ export class Clerk implements ClerkInterface {
22942294
generateSignature = generateSignatureWithCoinbaseWallet;
22952295
break;
22962296
case 'solana':
2297-
generateSignature = generateSignatureWithSolana;
2297+
if (!walletName) {
2298+
throw new ClerkRuntimeError('Wallet name is required for Solana authentication.', {
2299+
code: 'web3_solana_wallet_name_required',
2300+
});
2301+
}
2302+
// Solana requires walletName; bind it into the helper
2303+
generateSignature = params => generateSignatureWithSolana({ ...params, walletName });
22982304
break;
22992305
default:
23002306
generateSignature = generateSignatureWithOKXWallet;

packages/clerk-js/src/core/resources/SignIn.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ export class SignIn extends BaseResource implements SignInResource {
473473
const identifier = await getSolanaIdentifier(params.walletName);
474474
return this.authenticateWithWeb3({
475475
identifier,
476-
generateSignature: generateSignatureWithSolana,
476+
generateSignature: p => generateSignatureWithSolana({ ...p, walletName: params.walletName }),
477477
strategy: 'web3_solana_signature',
478478
walletName: params.walletName,
479479
});
@@ -1006,8 +1006,13 @@ class SignInFuture implements SignInFutureResource {
10061006
generateSignature = generateSignatureWithOKXWallet;
10071007
break;
10081008
case 'solana':
1009+
if (!params.walletName) {
1010+
throw new ClerkRuntimeError('Wallet name is required for Solana authentication.', {
1011+
code: 'web3_solana_wallet_name_required',
1012+
});
1013+
}
10091014
identifier = await getSolanaIdentifier(params.walletName);
1010-
generateSignature = generateSignatureWithSolana;
1015+
generateSignature = p => generateSignatureWithSolana({ ...p, walletName: params.walletName as string });
10111016
break;
10121017
default:
10131018
throw new Error(`Unsupported Web3 provider: ${provider}`);

packages/clerk-js/src/core/resources/SignUp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ export class SignUp extends BaseResource implements SignUpResource {
388388
const identifier = await getSolanaIdentifier(params.walletName);
389389
return this.authenticateWithWeb3({
390390
identifier,
391-
generateSignature: generateSignatureWithSolana,
391+
generateSignature: p => generateSignatureWithSolana({ ...p, walletName: params.walletName }),
392392
unsafeMetadata: params?.unsafeMetadata,
393393
strategy: 'web3_solana_signature',
394394
legalAccepted: params?.legalAccepted,

packages/clerk-js/src/utils/web3.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,7 @@ export async function getBaseIdentifier(): Promise<string> {
9898
return await getWeb3Identifier({ provider: 'base' });
9999
}
100100

101-
export async function getSolanaIdentifier(walletName?: string): Promise<string> {
102-
if (!walletName) {
103-
throw new Error('walletName is required for solana web3 authentication');
104-
}
101+
export async function getSolanaIdentifier(walletName: string): Promise<string> {
105102
return await getWeb3Identifier({ provider: 'solana', walletName });
106103
}
107104

@@ -110,6 +107,10 @@ type GenerateSignatureParams = {
110107
nonce: string;
111108
};
112109

110+
type GenerateSolanaSignatureParams = GenerateSignatureParams & {
111+
walletName: string;
112+
};
113+
113114
export async function generateSignatureWithMetamask(params: GenerateSignatureParams): Promise<string> {
114115
return await generateWeb3Signature({ ...params, provider: 'metamask' });
115116
}
@@ -126,7 +127,7 @@ export async function generateSignatureWithBase(params: GenerateSignatureParams)
126127
return await generateWeb3Signature({ ...params, provider: 'base' });
127128
}
128129

129-
export async function generateSignatureWithSolana(params: GenerateSignatureParams): Promise<string> {
130+
export async function generateSignatureWithSolana(params: GenerateSolanaSignatureParams): Promise<string> {
130131
return await generateWeb3Signature({ ...params, provider: 'solana' });
131132
}
132133

0 commit comments

Comments
 (0)