Skip to content

Commit

Permalink
chore(clerk-js,types,clerk-react,elements): Drop coinbase web3 provid…
Browse files Browse the repository at this point in the history
…er (#4092)
  • Loading branch information
chanioxaris authored Sep 4, 2024
1 parent f0b02ee commit a0cb062
Show file tree
Hide file tree
Showing 17 changed files with 13 additions and 110 deletions.
8 changes: 8 additions & 0 deletions .changeset/light-donuts-shake.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@clerk/clerk-js": patch
"@clerk/elements": patch
"@clerk/clerk-react": patch
"@clerk/types": patch
---

Drop support for deprecated Coinbase Web3 provider
13 changes: 2 additions & 11 deletions packages/clerk-js/src/core/clerk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import type {
__experimental_UserVerificationModalProps,
__experimental_UserVerificationProps,
ActiveSessionResource,
AuthenticateWithCoinbaseParams,
AuthenticateWithCoinbaseWalletParams,
AuthenticateWithGoogleOneTapParams,
AuthenticateWithMetamaskParams,
Expand Down Expand Up @@ -75,7 +74,6 @@ import {
createPageLifecycle,
disabledOrganizationsFeature,
errorThrower,
generateSignatureWithCoinbase,
generateSignatureWithCoinbaseWallet,
generateSignatureWithMetamask,
getClerkQueryParam,
Expand Down Expand Up @@ -1406,10 +1404,6 @@ export class Clerk implements ClerkInterface {
await this.authenticateWithWeb3({ ...props, strategy: 'web3_metamask_signature' });
};

public authenticateWithCoinbase = async (props: AuthenticateWithCoinbaseParams = {}): Promise<void> => {
await this.authenticateWithWeb3({ ...props, strategy: 'web3_coinbase_signature' });
};

public authenticateWithCoinbaseWallet = async (props: AuthenticateWithCoinbaseWalletParams = {}): Promise<void> => {
await this.authenticateWithWeb3({ ...props, strategy: 'web3_coinbase_wallet_signature' });
};
Expand All @@ -1427,11 +1421,8 @@ export class Clerk implements ClerkInterface {
const provider = strategy.replace('web3_', '').replace('_signature', '') as Web3Provider;
const identifier = await getWeb3Identifier({ provider });
const generateSignature =
provider === 'metamask'
? generateSignatureWithMetamask
: provider === 'coinbase'
? generateSignatureWithCoinbase
: generateSignatureWithCoinbaseWallet;
provider === 'metamask' ? generateSignatureWithMetamask : generateSignatureWithCoinbaseWallet;

const navigate = (to: string) =>
customNavigate && typeof customNavigate === 'function' ? customNavigate(to) : this.navigate(to);

Expand Down
14 changes: 0 additions & 14 deletions packages/clerk-js/src/core/resources/SignIn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,8 @@ import type {
} from '@clerk/types';

import {
generateSignatureWithCoinbase,
generateSignatureWithCoinbaseWallet,
generateSignatureWithMetamask,
getCoinbaseIdentifier,
getCoinbaseWalletIdentifier,
getMetamaskIdentifier,
windowNavigate,
Expand Down Expand Up @@ -116,9 +114,6 @@ export class SignIn extends BaseResource implements SignInResource {
case 'web3_metamask_signature':
config = { web3WalletId: factor.web3WalletId } as Web3SignatureConfig;
break;
case 'web3_coinbase_signature':
config = { web3WalletId: factor.web3WalletId } as Web3SignatureConfig;
break;
case 'web3_coinbase_wallet_signature':
config = { web3WalletId: factor.web3WalletId } as Web3SignatureConfig;
break;
Expand Down Expand Up @@ -281,15 +276,6 @@ export class SignIn extends BaseResource implements SignInResource {
});
};

public authenticateWithCoinbase = async (): Promise<SignInResource> => {
const identifier = await getCoinbaseIdentifier();
return this.authenticateWithWeb3({
identifier,
generateSignature: generateSignatureWithCoinbase,
strategy: 'web3_coinbase_signature',
});
};

public authenticateWithCoinbaseWallet = async (): Promise<SignInResource> => {
const identifier = await getCoinbaseWalletIdentifier();
return this.authenticateWithWeb3({
Expand Down
12 changes: 0 additions & 12 deletions packages/clerk-js/src/core/resources/SignUp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@ import type {
} from '@clerk/types';

import {
generateSignatureWithCoinbase,
generateSignatureWithCoinbaseWallet,
generateSignatureWithMetamask,
getCoinbaseIdentifier,
getCoinbaseWalletIdentifier,
getMetamaskIdentifier,
windowNavigate,
Expand Down Expand Up @@ -223,16 +221,6 @@ export class SignUp extends BaseResource implements SignUpResource {
});
};

public authenticateWithCoinbase = async (params?: SignUpAuthenticateWithWeb3Params): Promise<SignUpResource> => {
const identifier = await getCoinbaseIdentifier();
return this.authenticateWithWeb3({
identifier,
generateSignature: generateSignatureWithCoinbase,
unsafeMetadata: params?.unsafeMetadata,
strategy: 'web3_coinbase_signature',
});
};

public authenticateWithCoinbaseWallet = async (
params?: SignUpAuthenticateWithWeb3Params,
): Promise<SignUpResource> => {
Expand Down
4 changes: 0 additions & 4 deletions packages/clerk-js/src/ui/common/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,6 @@ export const WEB3_PROVIDERS: Web3Providers = Object.freeze({
id: 'metamask',
name: 'MetaMask',
},
coinbase: {
id: 'coinbase',
name: 'Coinbase Wallet',
},
coinbase_wallet: {
id: 'coinbase_wallet',
name: 'Coinbase Wallet',
Expand Down
5 changes: 2 additions & 3 deletions packages/clerk-js/src/utils/injectedWeb3Providers.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { CoinbaseWeb3Provider, MetamaskWeb3Provider } from '@clerk/types';
import type { MetamaskWeb3Provider } from '@clerk/types';

//https://eips.ethereum.org/EIPS/eip-6963

Expand Down Expand Up @@ -27,12 +27,11 @@ interface EIP6963ProviderDetail {
}

type EIP6963AnnounceProviderEvent = CustomEvent;
type InjectedWeb3Provider = MetamaskWeb3Provider | CoinbaseWeb3Provider;
type InjectedWeb3Provider = MetamaskWeb3Provider;

class InjectedWeb3Providers {
#providers: EIP6963ProviderDetail[] = [];
#providerIdMap: Record<InjectedWeb3Provider, string> = {
coinbase: 'Coinbase Wallet',
metamask: 'MetaMask',
} as const;
static #instance: InjectedWeb3Providers | null = null;
Expand Down
8 changes: 0 additions & 8 deletions packages/clerk-js/src/utils/web3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,6 @@ export async function getMetamaskIdentifier(): Promise<string> {
return await getWeb3Identifier({ provider: 'metamask' });
}

export async function getCoinbaseIdentifier(): Promise<string> {
return await getWeb3Identifier({ provider: 'coinbase' });
}

export async function getCoinbaseWalletIdentifier(): Promise<string> {
return await getWeb3Identifier({ provider: 'coinbase_wallet' });
}
Expand All @@ -63,10 +59,6 @@ export async function generateSignatureWithMetamask({ identifier, nonce }: Gener
return await generateWeb3Signature({ identifier, nonce, provider: 'metamask' });
}

export async function generateSignatureWithCoinbase({ identifier, nonce }: GenerateSignatureParams): Promise<string> {
return await generateWeb3Signature({ identifier, nonce, provider: 'coinbase' });
}

export async function generateSignatureWithCoinbaseWallet({
identifier,
nonce,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,6 @@ export const SignInStartMachine = setup({
if (strategy === 'web3_metamask_signature') {
return parent.getSnapshot().context.clerk.client.signIn.authenticateWithMetamask();
}
if (strategy === 'web3_coinbase_signature') {
return parent.getSnapshot().context.clerk.client.signIn.authenticateWithCoinbase();
}
if (strategy === 'web3_coinbase_wallet_signature') {
return parent.getSnapshot().context.clerk.client.signIn.authenticateWithCoinbaseWallet();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -448,17 +448,6 @@ export const SignInFirstFactorMachine = SignInVerificationMachine.provide({

break;
}
case 'web3_coinbase_signature': {
const signature = fields.get('signature')?.value as string | undefined;
assertIsDefined(signature, 'Web3 Coinbase signature');

attemptParams = {
strategy,
signature,
} satisfies Web3Attempt;

break;
}
case 'web3_coinbase_wallet_signature': {
const signature = fields.get('signature')?.value as string | undefined;
assertIsDefined(signature, 'Web3 Coinbase Wallet signature');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@ export const SignUpStartMachine = setup({
if (strategy === 'web3_metamask_signature') {
return parent.getSnapshot().context.clerk.client.signUp.authenticateWithMetamask();
}
if (strategy === 'web3_coinbase_signature') {
return parent.getSnapshot().context.clerk.client.signUp.authenticateWithCoinbase();
}
if (strategy === 'web3_coinbase_wallet_signature') {
return parent.getSnapshot().context.clerk.client.signUp.authenticateWithCoinbaseWallet();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,6 @@ export const useThirdPartyProvider = <
return ref.send({ type: 'AUTHENTICATE.WEB3', strategy: 'web3_metamask_signature' });
}

if (provider === 'coinbase') {
return ref.send({ type: 'AUTHENTICATE.WEB3', strategy: 'web3_coinbase_signature' });
}

if (provider === 'coinbase_wallet') {
return ref.send({ type: 'AUTHENTICATE.WEB3', strategy: 'web3_coinbase_wallet_signature' });
}
Expand Down
3 changes: 0 additions & 3 deletions packages/elements/src/react/utils/map-scope-to-strategy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ export function mapScopeToStrategy<T extends `provider:${Strategy}`>(scope: T):
if (scope === 'provider:metamask') {
return 'web3_metamask_signature';
}
if (scope === 'provider:coinbase') {
return 'web3_coinbase_signature';
}
if (scope === 'provider:coinbase_wallet') {
return 'web3_coinbase_wallet_signature';
}
Expand Down
12 changes: 0 additions & 12 deletions packages/react/src/isomorphicClerk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import type {
__experimental_UserVerificationModalProps,
__experimental_UserVerificationProps,
ActiveSessionResource,
AuthenticateWithCoinbaseParams,
AuthenticateWithCoinbaseWalletParams,
AuthenticateWithGoogleOneTapParams,
AuthenticateWithMetamaskParams,
Expand Down Expand Up @@ -96,7 +95,6 @@ type IsomorphicLoadedClerk = Without<
| 'handleGoogleOneTapCallback'
| 'handleUnauthenticated'
| 'authenticateWithMetamask'
| 'authenticateWithCoinbase'
| 'authenticateWithCoinbaseWallet'
| 'authenticateWithWeb3'
| 'authenticateWithGoogleOneTap'
Expand All @@ -119,7 +117,6 @@ type IsomorphicLoadedClerk = Without<
handleUnauthenticated: () => void;
// TODO: Align Promise unknown
authenticateWithMetamask: (params: AuthenticateWithMetamaskParams) => Promise<void>;
authenticateWithCoinbase: (params: AuthenticateWithCoinbaseParams) => Promise<void>;
authenticateWithCoinbaseWallet: (params: AuthenticateWithCoinbaseWalletParams) => Promise<void>;
authenticateWithWeb3: (params: ClerkAuthenticateWithWeb3Params) => Promise<void>;
authenticateWithGoogleOneTap: (
Expand Down Expand Up @@ -1066,15 +1063,6 @@ export class IsomorphicClerk implements IsomorphicLoadedClerk {
}
};

authenticateWithCoinbase = async (params: AuthenticateWithCoinbaseParams): Promise<void> => {
const callback = () => this.clerkjs?.authenticateWithCoinbase(params);
if (this.clerkjs && this.#loaded) {
return callback() as Promise<void>;
} else {
this.premountMethodCalls.set('authenticateWithCoinbase', callback);
}
};

authenticateWithCoinbaseWallet = async (params: AuthenticateWithCoinbaseWalletParams): Promise<void> => {
const callback = () => this.clerkjs?.authenticateWithCoinbaseWallet(params);
if (this.clerkjs && this.#loaded) {
Expand Down
12 changes: 0 additions & 12 deletions packages/types/src/clerk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -528,11 +528,6 @@ export interface Clerk {
*/
authenticateWithMetamask: (params?: AuthenticateWithMetamaskParams) => Promise<unknown>;

/**
* Authenticates user using their Coinbase Wallet browser extension
*/
authenticateWithCoinbase: (params?: AuthenticateWithCoinbaseParams) => Promise<unknown>;

/**
* Authenticates user using their Coinbase Smart Wallet and browser extension
*/
Expand Down Expand Up @@ -1267,13 +1262,6 @@ export interface AuthenticateWithMetamaskParams {
unsafeMetadata?: SignUpUnsafeMetadata;
}

export interface AuthenticateWithCoinbaseParams {
customNavigate?: (to: string) => Promise<unknown>;
redirectUrl?: string;
signUpContinueUrl?: string;
unsafeMetadata?: SignUpUnsafeMetadata;
}

export interface AuthenticateWithCoinbaseWalletParams {
customNavigate?: (to: string) => Promise<unknown>;
redirectUrl?: string;
Expand Down
2 changes: 0 additions & 2 deletions packages/types/src/signIn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,6 @@ export interface SignInResource extends ClerkResource {

authenticateWithMetamask: () => Promise<SignInResource>;

authenticateWithCoinbase: () => Promise<SignInResource>;

authenticateWithCoinbaseWallet: () => Promise<SignInResource>;

authenticateWithPasskey: (params?: AuthenticateWithPasskeyParams) => Promise<SignInResource>;
Expand Down
1 change: 0 additions & 1 deletion packages/types/src/signUp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ export interface SignUpResource extends ClerkResource {
) => Promise<SignUpResource>;

authenticateWithMetamask: (params?: SignUpAuthenticateWithWeb3Params) => Promise<SignUpResource>;
authenticateWithCoinbase: (params?: SignUpAuthenticateWithWeb3Params) => Promise<SignUpResource>;
authenticateWithCoinbaseWallet: (params?: SignUpAuthenticateWithWeb3Params) => Promise<SignUpResource>;
}

Expand Down
8 changes: 1 addition & 7 deletions packages/types/src/web3.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,16 @@ export interface Web3ProviderData {
}

export type MetamaskWeb3Provider = 'metamask';
export type CoinbaseWeb3Provider = 'coinbase';
export type CoinbaseWalletWeb3Provider = 'coinbase_wallet';

export type Web3Provider = MetamaskWeb3Provider | CoinbaseWeb3Provider | CoinbaseWalletWeb3Provider;
export type Web3Provider = MetamaskWeb3Provider | CoinbaseWalletWeb3Provider;

export const WEB3_PROVIDERS: Web3ProviderData[] = [
{
provider: 'metamask',
strategy: 'web3_metamask_signature',
name: 'MetaMask',
},
{
provider: 'coinbase',
strategy: 'web3_coinbase_signature',
name: 'Coinbase Wallet',
},
{
provider: 'coinbase_wallet',
strategy: 'web3_coinbase_wallet_signature',
Expand Down

0 comments on commit a0cb062

Please sign in to comment.