Skip to content

Commit 89a82d2

Browse files
tmilewskijacekradko
authored andcommitted
fix(types): Ensure unsafeMetadata prop is only allowed in valid circumstances (#6340)
1 parent d9c5fee commit 89a82d2

File tree

4 files changed

+29
-22
lines changed

4 files changed

+29
-22
lines changed

.changeset/cyan-pots-attack.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@clerk/astro': patch
3+
'@clerk/clerk-react': patch
4+
'@clerk/types': patch
5+
---
6+
7+
Ensure proper typing for `SignUpButton` and only allow `unsafeMetadata={...}` when `mode="modal"`

packages/astro/src/react/SignUpButton.tsx

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,8 @@ export type { SignUpButtonProps };
77

88
export const SignUpButton = withClerk(
99
({ clerk, children, ...props }: WithClerkProp<React.PropsWithChildren<SignUpButtonProps>>) => {
10-
const {
11-
fallbackRedirectUrl,
12-
forceRedirectUrl,
13-
signInFallbackRedirectUrl,
14-
signInForceRedirectUrl,
15-
mode,
16-
unsafeMetadata,
17-
...rest
18-
} = props;
10+
const { fallbackRedirectUrl, forceRedirectUrl, signInFallbackRedirectUrl, signInForceRedirectUrl, mode, ...rest } =
11+
props;
1912

2013
children = normalizeWithDefaultValue(children, 'Sign up');
2114
const child = assertSingleChild(children)('SignUpButton');
@@ -26,15 +19,18 @@ export const SignUpButton = withClerk(
2619
forceRedirectUrl,
2720
signInFallbackRedirectUrl,
2821
signInForceRedirectUrl,
29-
unsafeMetadata,
3022
};
3123

3224
if (!clerk) {
3325
return;
3426
}
3527

3628
if (mode === 'modal') {
37-
return clerk.openSignUp({ ...opts, appearance: props.appearance });
29+
return clerk.openSignUp({
30+
...opts,
31+
appearance: props.appearance,
32+
unsafeMetadata: props.unsafeMetadata,
33+
});
3834
}
3935

4036
return clerk.redirectToSignUp({

packages/react/src/components/SignUpButton.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ export const SignUpButton = withClerk(
1313
signInFallbackRedirectUrl,
1414
signInForceRedirectUrl,
1515
mode,
16-
unsafeMetadata,
1716
initialValues,
1817
oauthFlow,
1918
...rest
@@ -28,13 +27,16 @@ export const SignUpButton = withClerk(
2827
forceRedirectUrl,
2928
signInFallbackRedirectUrl,
3029
signInForceRedirectUrl,
31-
unsafeMetadata,
3230
initialValues,
3331
oauthFlow,
3432
};
3533

3634
if (mode === 'modal') {
37-
return clerk.openSignUp({ ...opts, appearance: props.appearance });
35+
return clerk.openSignUp({
36+
...opts,
37+
appearance: props.appearance,
38+
unsafeMetadata: props.unsafeMetadata,
39+
});
3840
}
3941

4042
return clerk.redirectToSignUp({

packages/types/src/clerk.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1900,18 +1900,22 @@ export interface HandleEmailLinkVerificationParams {
19001900
onVerifiedOnOtherDevice?: () => void;
19011901
}
19021902

1903-
type ButtonPropsModal<T extends SignInProps | SignUpProps> = {
1903+
type SignInButtonPropsModal = {
19041904
mode: 'modal';
1905-
appearance?: T['appearance'];
1905+
appearance?: SignInProps['appearance'];
1906+
};
1907+
1908+
type SignUpButtonPropsModal = {
1909+
mode: 'modal';
1910+
appearance?: SignUpProps['appearance'];
1911+
unsafeMetadata?: SignUpUnsafeMetadata;
19061912
};
19071913

19081914
type ButtonPropsRedirect = {
19091915
mode?: 'redirect';
19101916
};
19111917

1912-
type ButtonProps<T extends SignInProps | SignUpProps> = ButtonPropsModal<T> | ButtonPropsRedirect;
1913-
1914-
export type SignInButtonProps = ButtonProps<SignInProps> &
1918+
export type SignInButtonProps = (SignInButtonPropsModal | ButtonPropsRedirect) &
19151919
Pick<
19161920
SignInProps,
19171921
| 'fallbackRedirectUrl'
@@ -1923,9 +1927,7 @@ export type SignInButtonProps = ButtonProps<SignInProps> &
19231927
| 'oauthFlow'
19241928
>;
19251929

1926-
export type SignUpButtonProps = {
1927-
unsafeMetadata?: SignUpUnsafeMetadata;
1928-
} & ButtonProps<SignUpProps> &
1930+
export type SignUpButtonProps = (SignUpButtonPropsModal | ButtonPropsRedirect) &
19291931
Pick<
19301932
SignUpProps,
19311933
| 'fallbackRedirectUrl'

0 commit comments

Comments
 (0)