Skip to content

Commit 48a96ef

Browse files
authored
chore(webapp): Expose Vercel errors (#3025)
1 parent ebffa10 commit 48a96ef

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

apps/webapp/app/presenters/v3/VercelSettingsPresenter.server.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export type VercelSettingsResult = {
2525
enabled: boolean;
2626
hasOrgIntegration: boolean;
2727
authInvalid?: boolean;
28+
authError?: string;
2829
connectedProject?: {
2930
id: string;
3031
vercelProjectId: string;
@@ -52,6 +53,7 @@ export type VercelOnboardingData = {
5253
availableProjects: VercelAvailableProject[];
5354
hasProjectSelected: boolean;
5455
authInvalid?: boolean;
56+
authError?: string;
5557
existingVariables: Record<string, { environments: string[] }>; // Environment slugs (non-archived only)
5658
gitHubAppInstallations: GitHubAppInstallation[];
5759
isGitHubConnected: boolean;
@@ -98,6 +100,7 @@ export class VercelSettingsPresenter extends BasePresenter {
98100
enabled: true,
99101
hasOrgIntegration: false,
100102
authInvalid: true,
103+
authError: orgIntegrationResult.error instanceof Error ? orgIntegrationResult.error.message : "Failed to fetch organization integration",
101104
connectedProject: undefined,
102105
isGitHubConnected: false,
103106
hasStagingEnvironment: false,
@@ -116,6 +119,7 @@ export class VercelSettingsPresenter extends BasePresenter {
116119
enabled: true,
117120
hasOrgIntegration: true,
118121
authInvalid: true,
122+
authError: tokenResult.isErr() ? tokenResult.error.message : "Vercel token is invalid",
119123
connectedProject: undefined,
120124
isGitHubConnected: false,
121125
hasStagingEnvironment: false,
@@ -382,6 +386,7 @@ export class VercelSettingsPresenter extends BasePresenter {
382386
availableProjects: [],
383387
hasProjectSelected: false,
384388
authInvalid: true,
389+
authError: tokenResult.isErr() ? tokenResult.error.message : "Vercel token is invalid",
385390
existingVariables: {},
386391
gitHubAppInstallations,
387392
isGitHubConnected,
@@ -397,6 +402,7 @@ export class VercelSettingsPresenter extends BasePresenter {
397402
availableProjects: [],
398403
hasProjectSelected: false,
399404
authInvalid: clientResult.error.authInvalid,
405+
authError: clientResult.error.authInvalid ? clientResult.error.message : undefined,
400406
existingVariables: {},
401407
gitHubAppInstallations,
402408
isGitHubConnected,
@@ -426,6 +432,7 @@ export class VercelSettingsPresenter extends BasePresenter {
426432
availableProjects: [],
427433
hasProjectSelected: false,
428434
authInvalid: availableProjectsResult.error.authInvalid,
435+
authError: availableProjectsResult.error.authInvalid ? availableProjectsResult.error.message : undefined,
429436
existingVariables: {},
430437
gitHubAppInstallations,
431438
isGitHubConnected,
@@ -472,12 +479,19 @@ export class VercelSettingsPresenter extends BasePresenter {
472479
(sharedEnvVarsResult.isErr() && sharedEnvVarsResult.error.authInvalid);
473480

474481
if (authInvalid) {
482+
const authError =
483+
(customEnvironmentsResult.isErr() && customEnvironmentsResult.error.authInvalid && customEnvironmentsResult.error.message) ||
484+
(projectEnvVarsResult.isErr() && projectEnvVarsResult.error.authInvalid && projectEnvVarsResult.error.message) ||
485+
(sharedEnvVarsResult.isErr() && sharedEnvVarsResult.error.authInvalid && sharedEnvVarsResult.error.message) ||
486+
undefined;
487+
475488
return {
476489
customEnvironments: [],
477490
environmentVariables: [],
478491
availableProjects: availableProjectsResult.value,
479492
hasProjectSelected: true,
480493
authInvalid: true,
494+
authError: authError || undefined,
481495
existingVariables: {},
482496
gitHubAppInstallations,
483497
isGitHubConnected,

apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.vercel.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,12 @@ export async function loader({ request, params }: LoaderFunctionArgs) {
188188
}
189189

190190
const authInvalid = onboardingData?.authInvalid || result.authInvalid || false;
191+
const authError = onboardingData?.authError || result.authError;
191192

192193
return typedjson({
193194
...result,
194195
authInvalid,
196+
authError,
195197
onboardingData,
196198
organizationSlug,
197199
projectSlug: projectParam,

0 commit comments

Comments
 (0)