Skip to content

Commit 7d4b3e8

Browse files
committed
fix(invite): error handling
1 parent 4c47fb4 commit 7d4b3e8

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

apps/sim/app/invite/[id]/invite.tsx

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -133,27 +133,30 @@ function parseApiError(error: unknown, statusCode?: number): InviteErrorCode {
133133
return 'network-error'
134134
}
135135

136-
// Handle HTTP status codes
137-
if (statusCode) {
138-
if (statusCode === 401) return 'unauthorized'
139-
if (statusCode === 403) return 'forbidden'
140-
if (statusCode === 404) return 'invalid-invitation'
141-
if (statusCode >= 500) return 'server-error'
142-
}
143-
144-
// Handle error message patterns
136+
// Handle error message patterns first (more specific matching)
145137
const errorMessage =
146138
typeof error === 'string' ? error.toLowerCase() : (error as Error)?.message?.toLowerCase() || ''
147139

140+
// Check specific patterns before falling back to status codes
141+
// Order matters: more specific patterns must come first
142+
if (errorMessage.includes('already a member of an organization')) return 'already-in-organization'
143+
if (errorMessage.includes('already a member')) return 'already-member'
144+
if (errorMessage.includes('email mismatch') || errorMessage.includes('different email'))
145+
return 'email-mismatch'
146+
if (errorMessage.includes('already processed')) return 'already-processed'
148147
if (errorMessage.includes('unauthorized')) return 'unauthorized'
149148
if (errorMessage.includes('forbidden') || errorMessage.includes('permission')) return 'forbidden'
150149
if (errorMessage.includes('not found') || errorMessage.includes('expired'))
151150
return 'invalid-invitation'
152-
if (errorMessage.includes('email mismatch') || errorMessage.includes('different email'))
153-
return 'email-mismatch'
154-
if (errorMessage.includes('already a member')) return 'already-member'
155-
if (errorMessage.includes('already a member of an organization')) return 'already-in-organization'
156-
if (errorMessage.includes('already processed')) return 'already-processed'
151+
152+
// Handle HTTP status codes as fallback
153+
if (statusCode) {
154+
if (statusCode === 401) return 'unauthorized'
155+
if (statusCode === 403) return 'forbidden'
156+
if (statusCode === 404) return 'invalid-invitation'
157+
if (statusCode === 409) return 'already-in-organization'
158+
if (statusCode >= 500) return 'server-error'
159+
}
157160

158161
return 'unknown'
159162
}

0 commit comments

Comments
 (0)