Handle redirect errors in routes and actions
The commit introduces a check for redirect errors in routes and actions modules to provide better error handling. It imports `isRedirectError` from 'next/dist/client/components/redirect' and uses it to check if an error is a redirect error, in which case re-throws the error. A minor modification was also made in the creation of the team account's home path variable.
This commit is contained in:
@@ -10,7 +10,7 @@ import { getSupabaseServerActionClient } from '@kit/supabase/server-actions-clie
|
|||||||
import { CreateTeamSchema } from '../../schema/create-team.schema';
|
import { CreateTeamSchema } from '../../schema/create-team.schema';
|
||||||
import { createCreateTeamAccountService } from '../services/create-team-account.service';
|
import { createCreateTeamAccountService } from '../services/create-team-account.service';
|
||||||
|
|
||||||
const TEAM_ACCOUNTS_HOME_PATH = z
|
const path = z
|
||||||
.string({
|
.string({
|
||||||
required_error: 'variable TEAM_ACCOUNTS_HOME_PATH is required',
|
required_error: 'variable TEAM_ACCOUNTS_HOME_PATH is required',
|
||||||
})
|
})
|
||||||
@@ -31,7 +31,7 @@ export const createOrganizationAccountAction = enhanceAction(
|
|||||||
throw new Error('Error creating team account');
|
throw new Error('Error creating team account');
|
||||||
}
|
}
|
||||||
|
|
||||||
const accountHomePath = TEAM_ACCOUNTS_HOME_PATH + '/' + data.slug;
|
const accountHomePath = path + '/' + data.slug;
|
||||||
|
|
||||||
redirect(accountHomePath);
|
redirect(accountHomePath);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'server-only';
|
import 'server-only';
|
||||||
|
|
||||||
|
import { isRedirectError } from 'next/dist/client/components/redirect';
|
||||||
import { redirect } from 'next/navigation';
|
import { redirect } from 'next/navigation';
|
||||||
|
|
||||||
import type { User } from '@supabase/supabase-js';
|
import type { User } from '@supabase/supabase-js';
|
||||||
@@ -81,6 +82,10 @@ export function enhanceAction<
|
|||||||
// pass the data to the action
|
// pass the data to the action
|
||||||
return await fn(data, user);
|
return await fn(data, user);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
if (isRedirectError(error)) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
// capture the exception
|
// capture the exception
|
||||||
await captureException(error);
|
await captureException(error);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'server-only';
|
import 'server-only';
|
||||||
|
|
||||||
|
import { isRedirectError } from 'next/dist/client/components/redirect';
|
||||||
import { redirect } from 'next/navigation';
|
import { redirect } from 'next/navigation';
|
||||||
import { NextRequest, NextResponse } from 'next/server';
|
import { NextRequest, NextResponse } from 'next/server';
|
||||||
|
|
||||||
@@ -102,6 +103,10 @@ export const enhanceRouteHandler = <
|
|||||||
try {
|
try {
|
||||||
return await handler({ request, body, user });
|
return await handler({ request, body, user });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
if (isRedirectError(error)) {
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
// capture the exception
|
// capture the exception
|
||||||
await captureException(error);
|
await captureException(error);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user