mirror of
https://github.com/supabase/supabase.git
synced 2026-09-06 09:59:03 +08:00
Follow-up to #48344: collapses the two resolution paths for the Admonition module into one. `src/admonition.tsx` was a back-compat shim re-exporting `src/Admonition/`. Two ways to resolve one module is exactly what produced the macOS self-import bug fixed in #48344, and the local typecheck errors that #48374 worked around. This removes the shim and standardizes on the PascalCase subpath, matching every other export in the package. **Changed:** - Codemodded all 246 `ui-patterns/admonition` imports to `ui-patterns/Admonition` (240 `.tsx`, 5 `.mdx`, 1 `.ts` across studio, docs, www, design-system, and lite-studio) - Pointed the 5 internal `'../admonition'` imports back at the `'../Admonition'` directory **Removed:** - `packages/ui-patterns/src/admonition.tsx`, and its `./admonition` entry in the exports map (regenerated with `pnpm gen:exports`) ## To test - `grep -r "ui-patterns/admonition" --include='*.ts*'` → no hits - `pnpm test:case-hazards` → passes - `pnpm typecheck` → all 15 tasks green - `pnpm --filter studio run lint:ratchet` → passes - `pnpm --filter ui-patterns vitest run src/Admonition` → 11 tests pass <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Bug Fixes** * Standardized Admonition component imports across the application and documentation. * Improved compatibility with case-sensitive environments by using the canonical component path. * Removed the legacy Admonition import entry point. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Alaister Young <10985857+alaister@users.noreply.github.com>
82 lines
2.2 KiB
TypeScript
82 lines
2.2 KiB
TypeScript
import { useParams } from 'common'
|
|
import { useEffect } from 'react'
|
|
import { Admonition } from 'ui-patterns/Admonition'
|
|
import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader'
|
|
|
|
import { InterstitialLayout, SupabaseLogo } from '@/components/layouts/InterstitialLayout'
|
|
import { useVerifyEmailMutation } from '@/data/support/support-email-verification-mutation'
|
|
|
|
export const SupportEmailVerification = () => {
|
|
const { token } = useParams()
|
|
|
|
const {
|
|
mutate: verifyEmail,
|
|
isPending,
|
|
isSuccess,
|
|
isError,
|
|
error,
|
|
} = useVerifyEmailMutation({ onError: () => {} })
|
|
|
|
useEffect(() => {
|
|
if (token) {
|
|
verifyEmail({ token })
|
|
}
|
|
}, [token, verifyEmail])
|
|
|
|
const isExpiredOrUsed = isError && error?.code === 410
|
|
|
|
const withLayout = (title: string, children: React.ReactNode) => (
|
|
<InterstitialLayout logo={<SupabaseLogo />} title={title}>
|
|
<div className="px-6 pb-6">{children}</div>
|
|
</InterstitialLayout>
|
|
)
|
|
|
|
if (!token) {
|
|
return withLayout(
|
|
'Email Verification',
|
|
<Admonition
|
|
type="warning"
|
|
description="No verification token was found. Please use the link from your email."
|
|
/>
|
|
)
|
|
}
|
|
|
|
if (isPending) {
|
|
return withLayout(
|
|
'Verifying your email…',
|
|
<div className="flex flex-col gap-3">
|
|
<ShimmeringLoader className="h-4 w-full py-0" />
|
|
<ShimmeringLoader className="h-4 w-3/4 py-0" />
|
|
</div>
|
|
)
|
|
}
|
|
|
|
if (isSuccess) {
|
|
return withLayout(
|
|
'Account linked',
|
|
<Admonition
|
|
type="success"
|
|
description="Thanks for verifying, our team now has the context they need to resolve your issue more efficiently. You can close this page."
|
|
/>
|
|
)
|
|
}
|
|
|
|
if (isExpiredOrUsed) {
|
|
return withLayout(
|
|
'Link no longer valid',
|
|
<Admonition
|
|
type="warning"
|
|
description="This verification link has already been used or has expired. You can close this page."
|
|
/>
|
|
)
|
|
}
|
|
|
|
return withLayout(
|
|
'Verification failed',
|
|
<Admonition
|
|
type="destructive"
|
|
description="We weren't able to verify your identity this time. Our team will still be in touch, verification just helps us view your organization and project details to resolve your issue more efficiently. You can close this page."
|
|
/>
|
|
)
|
|
}
|