* Update Next.js and React versions in all packages * Replace onRedirect function with next/link in BillingSessionStatus, since it's no longer cached by default * Remove unused revalidatePath import in billing return page, since it's no longer cached by default * Add Turbopack module aliases to improve development server speed * Converted new Dynamic APIs to be Promise-based * Adjust mobile layout * Use ENABLE_REACT_COMPILER to enable the React Compiler in Next.js 15 * Report Errors using the new onRequestError hook
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import Link from 'next/link';
|
|
import { redirect } from 'next/navigation';
|
|
|
|
import { Alert, AlertDescription, AlertTitle } from '@kit/ui/alert';
|
|
import { Button } from '@kit/ui/button';
|
|
import { Trans } from '@kit/ui/trans';
|
|
|
|
import pathsConfig from '~/config/paths.config';
|
|
import { withI18n } from '~/lib/i18n/with-i18n';
|
|
|
|
interface AuthCallbackErrorPageProps {
|
|
searchParams: Promise<{
|
|
error: string;
|
|
invite_token: string;
|
|
}>;
|
|
}
|
|
|
|
async function AuthCallbackErrorPage(props: AuthCallbackErrorPageProps) {
|
|
const { error, invite_token } = await props.searchParams;
|
|
const queryParam = invite_token ? `?invite_token=${invite_token}` : '';
|
|
const signInPath = pathsConfig.auth.signIn + queryParam;
|
|
|
|
// if there is no error, redirect the user to the sign-in page
|
|
if (!error) {
|
|
redirect(signInPath);
|
|
}
|
|
|
|
return (
|
|
<div className={'flex flex-col space-y-4 py-4'}>
|
|
<div>
|
|
<Alert variant={'destructive'}>
|
|
<AlertTitle>
|
|
<Trans i18nKey={'auth:authenticationErrorAlertHeading'} />
|
|
</AlertTitle>
|
|
|
|
<AlertDescription>
|
|
<Trans i18nKey={error} />
|
|
</AlertDescription>
|
|
</Alert>
|
|
</div>
|
|
|
|
<Button asChild>
|
|
<Link href={signInPath}>
|
|
<Trans i18nKey={'auth:signIn'} />
|
|
</Link>
|
|
</Button>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default withI18n(AuthCallbackErrorPage);
|