Skip to content

Commit e86a2c2

Browse files
github-actions[bot]tofikwestMarfuen
authored
fix(home): improve error handling in organization page (#1869)
Co-authored-by: Tofik Hasanov <[email protected]> Co-authored-by: Mariano Fuentes <[email protected]>
1 parent 64c12a7 commit e86a2c2

File tree

1 file changed

+47
-53
lines changed
  • apps/portal/src/app/(app)/(home)/[orgId]

1 file changed

+47
-53
lines changed

apps/portal/src/app/(app)/(home)/[orgId]/page.tsx

Lines changed: 47 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -10,63 +10,57 @@ import { OrganizationDashboard } from './components/OrganizationDashboard';
1010
import type { FleetPolicy, Host } from './types';
1111

1212
export default async function OrganizationPage({ params }: { params: Promise<{ orgId: string }> }) {
13-
try {
14-
const { orgId } = await params;
15-
16-
const session = await auth.api.getSession({
17-
headers: await headers(),
18-
});
19-
20-
if (!session?.user) {
21-
return redirect('/auth');
22-
}
23-
24-
let member = null;
25-
26-
try {
27-
member = await db.member.findFirst({
28-
where: {
29-
userId: session.user.id,
30-
organizationId: orgId,
31-
deactivated: false,
32-
},
33-
include: {
34-
user: true,
35-
organization: true, // Include organization details
36-
},
37-
});
38-
} catch (error) {
39-
console.error('Error fetching member:', error);
40-
// Return a fallback UI or redirect to error page
41-
return redirect('/');
42-
}
43-
44-
if (!member) {
45-
return redirect('/'); // Or appropriate login/auth route
46-
}
47-
48-
// Only fetch fleet policies if fleet is enabled
49-
let fleetPolicies: FleetPolicy[] = [];
50-
let device: Host | null = null;
13+
const { orgId } = await params;
14+
15+
// Auth check with error handling
16+
const session = await auth.api.getSession({
17+
headers: await headers(),
18+
}).catch((error) => {
19+
console.error('Error getting session:', error);
20+
redirect('/');
21+
});
22+
23+
if (!session?.user) {
24+
redirect('/auth');
25+
}
5126

52-
const fleetData = await getFleetPolicies(member);
53-
fleetPolicies = fleetData.fleetPolicies;
54-
device = fleetData.device;
27+
// Fetch member with error handling
28+
let member;
5529

56-
return (
57-
<OrganizationDashboard
58-
key={orgId} // Use organizationId as key
59-
organizationId={orgId}
60-
member={member}
61-
fleetPolicies={fleetPolicies}
62-
host={device}
63-
/>
64-
);
30+
try {
31+
member = await db.member.findFirst({
32+
where: {
33+
userId: session.user.id,
34+
organizationId: orgId,
35+
deactivated: false,
36+
},
37+
include: {
38+
user: true,
39+
organization: true,
40+
},
41+
});
6542
} catch (error) {
66-
console.error('Error in OrganizationPage:', { error });
67-
// Redirect to a safe page if there's an unexpected error
68-
return redirect('/');
43+
console.error('Error fetching member:', error);
44+
redirect('/');
45+
}
46+
47+
// Member check - redirect happens outside try-catch
48+
if (!member) {
49+
redirect('/');
6950
}
51+
52+
// Fleet policies - already has graceful error handling in getFleetPolicies
53+
const fleetData = await getFleetPolicies(member);
54+
55+
return (
56+
<OrganizationDashboard
57+
key={orgId}
58+
organizationId={orgId}
59+
member={member}
60+
fleetPolicies={fleetData.fleetPolicies}
61+
host={fleetData.device}
62+
/>
63+
);
7064
}
7165

7266
const getFleetPolicies = async (

0 commit comments

Comments
 (0)