From 09832dc940176518ff08a8805f9dea82ffcafad5 Mon Sep 17 00:00:00 2001 From: EYHN Date: Thu, 18 Apr 2024 13:28:32 +0000 Subject: [PATCH] feat(core): add subscribe link (#6610) --- .../core/src/components/affine/auth/oauth.tsx | 20 ++- .../src/components/affine/auth/sign-in.tsx | 29 ++++- .../core/src/hooks/use-navigate-helper.ts | 15 ++- .../src/modules/cloud/entities/session.ts | 7 +- .../modules/cloud/entities/subscription.ts | 7 +- .../core/src/modules/cloud/services/auth.ts | 16 +-- packages/frontend/core/src/pages/invite.tsx | 9 +- packages/frontend/core/src/pages/sign-in.tsx | 22 +--- .../frontend/core/src/pages/subscribe.css.ts | 13 ++ .../frontend/core/src/pages/subscribe.tsx | 122 ++++++++++++++++++ packages/frontend/core/src/router.tsx | 4 + 11 files changed, 216 insertions(+), 48 deletions(-) create mode 100644 packages/frontend/core/src/pages/subscribe.css.ts create mode 100644 packages/frontend/core/src/pages/subscribe.tsx diff --git a/packages/frontend/core/src/components/affine/auth/oauth.tsx b/packages/frontend/core/src/components/affine/auth/oauth.tsx index c5c8513021..9ca5f84e77 100644 --- a/packages/frontend/core/src/components/affine/auth/oauth.tsx +++ b/packages/frontend/core/src/components/affine/auth/oauth.tsx @@ -25,7 +25,7 @@ const OAuthProviderMap: Record< }, }; -export function OAuth() { +export function OAuth({ redirectUri }: { redirectUri?: string | null }) { const serverConfig = useService(ServerConfigService).serverConfig; const oauth = useLiveData(serverConfig.features$.map(r => r?.oauth)); const oauthProviders = useLiveData( @@ -42,11 +42,21 @@ export function OAuth() { } return oauthProviders?.map(provider => ( - + )); } -function OAuthProvider({ provider }: { provider: OAuthProviderType }) { +function OAuthProvider({ + provider, + redirectUri, +}: { + provider: OAuthProviderType; + redirectUri?: string | null; +}) { const { icon } = OAuthProviderMap[provider]; const authService = useService(AuthService); const [isConnecting, setIsConnecting] = useState(false); @@ -54,7 +64,7 @@ function OAuthProvider({ provider }: { provider: OAuthProviderType }) { const onClick = useAsyncCallback(async () => { try { setIsConnecting(true); - await authService.signInOauth(provider); + await authService.signInOauth(provider, redirectUri); } catch (err) { console.error(err); notify.error({ message: 'Failed to sign in, please try again.' }); @@ -62,7 +72,7 @@ function OAuthProvider({ provider }: { provider: OAuthProviderType }) { setIsConnecting(false); mixpanel.track('OAuth', { provider }); } - }, [authService, provider]); + }, [authService, provider, redirectUri]); return ( + + )} + + ); +}; diff --git a/packages/frontend/core/src/router.tsx b/packages/frontend/core/src/router.tsx index d362881f33..44179d521c 100644 --- a/packages/frontend/core/src/router.tsx +++ b/packages/frontend/core/src/router.tsx @@ -96,6 +96,10 @@ export const topLevelRoutes = [ path: '/redirect-proxy', lazy: () => import('./pages/redirect'), }, + { + path: '/subscribe', + lazy: () => import('./pages/subscribe'), + }, { path: '*', lazy: () => import('./pages/404'),