Skip to content

Commit 07a3c09

Browse files
committed
fix: sidebar type issues
1 parent 1cd0d80 commit 07a3c09

File tree

4 files changed

+70
-96
lines changed

4 files changed

+70
-96
lines changed

apps/dashboard/components/layout/category-sidebar.tsx

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@ import { useDbConnections } from '@/hooks/use-db-connections';
1616
import { useWebsites } from '@/hooks/use-websites';
1717
import { cn } from '@/lib/utils';
1818
import {
19+
categoryConfig,
20+
createDatabasesNavigation,
21+
createLoadingDatabasesNavigation,
22+
createLoadingWebsitesNavigation,
23+
createWebsitesNavigation,
24+
getContextConfig,
1925
getDefaultCategory,
20-
getNavigationWithDatabases,
21-
getNavigationWithWebsites,
2226
} from './navigation/navigation-config';
2327
import { SignOutButton } from './sign-out-button';
2428
import { ThemeToggle } from './theme-toggle';
@@ -47,17 +51,22 @@ export function CategorySidebar({
4751
const [helpOpen, setHelpOpen] = useState(false);
4852

4953
const { categories, defaultCategory } = useMemo(() => {
50-
let config = getNavigationWithWebsites(
51-
pathname,
52-
websites,
53-
isLoadingWebsites
54-
);
55-
56-
config = getNavigationWithDatabases(
57-
pathname,
58-
databases,
59-
isLoadingDatabases
60-
);
54+
const baseConfig = getContextConfig(pathname);
55+
const config =
56+
baseConfig === categoryConfig.main
57+
? {
58+
...baseConfig,
59+
navigationMap: {
60+
...baseConfig.navigationMap,
61+
websites: isLoadingWebsites
62+
? createLoadingWebsitesNavigation()
63+
: createWebsitesNavigation(websites),
64+
observability: isLoadingDatabases
65+
? createLoadingDatabasesNavigation()
66+
: createDatabasesNavigation(databases),
67+
},
68+
}
69+
: baseConfig;
6170

6271
const defaultCat = getDefaultCategory(pathname);
6372

apps/dashboard/components/layout/navigation/mobile-category-selector.tsx

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,13 @@ import { useDbConnections } from '@/hooks/use-db-connections';
1414
import { useWebsites } from '@/hooks/use-websites';
1515
import { cn } from '@/lib/utils';
1616
import {
17+
categoryConfig,
18+
createDatabasesNavigation,
19+
createLoadingDatabasesNavigation,
20+
createLoadingWebsitesNavigation,
21+
createWebsitesNavigation,
22+
getContextConfig,
1723
getDefaultCategory,
18-
getNavigationWithDatabases,
19-
getNavigationWithWebsites,
2024
} from './navigation-config';
2125

2226
interface MobileCategorySelectorProps {
@@ -34,17 +38,22 @@ export function MobileCategorySelector({
3438
useDbConnections();
3539

3640
const { categories, defaultCategory } = useMemo(() => {
37-
let config = getNavigationWithWebsites(
38-
pathname,
39-
websites,
40-
isLoadingWebsites
41-
);
42-
43-
config = getNavigationWithDatabases(
44-
pathname,
45-
databases,
46-
isLoadingDatabases
47-
);
41+
const baseConfig = getContextConfig(pathname);
42+
const config =
43+
baseConfig === categoryConfig.main
44+
? {
45+
...baseConfig,
46+
navigationMap: {
47+
...baseConfig.navigationMap,
48+
websites: isLoadingWebsites
49+
? createLoadingWebsitesNavigation()
50+
: createWebsitesNavigation(websites),
51+
observability: isLoadingDatabases
52+
? createLoadingDatabasesNavigation()
53+
: createDatabasesNavigation(databases),
54+
},
55+
}
56+
: baseConfig;
4857

4958
const defaultCat = getDefaultCategory(pathname);
5059
return { categories: config.categories, defaultCategory: defaultCat };

apps/dashboard/components/layout/navigation/navigation-config.tsx

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import {
3535
} from '@phosphor-icons/react';
3636
import type { NavigationSection } from './types';
3737

38-
// Function to create dynamic websites navigation
3938
export const createWebsitesNavigation = (
4039
websites: Array<{ id: string; name: string | null; domain: string }>
4140
): NavigationSection[] => [
@@ -73,7 +72,6 @@ export const createWebsitesNavigation = (
7372
},
7473
];
7574

76-
// Personal settings and preferences
7775
export const personalNavigation: NavigationSection[] = [
7876
{
7977
title: 'Personal Settings',
@@ -238,7 +236,6 @@ export const billingNavigation: NavigationSection[] = [
238236
},
239237
];
240238

241-
// Function to create dynamic databases navigation
242239
export const createDatabasesNavigation = (
243240
databases: Array<{ id: string; name: string; type: string }>
244241
): NavigationSection[] => [
@@ -365,7 +362,6 @@ export const websiteNavigation: NavigationSection[] = [
365362
},
366363
];
367364

368-
// Generate demo navigation from website navigation (filtered for demo purposes)
369365
export const createDemoNavigation = (): NavigationSection[] => [
370366
{
371367
title: 'Demo Analytics',
@@ -494,7 +490,6 @@ export const getDefaultCategory = (pathname: string) => {
494490
return config.defaultCategory;
495491
};
496492

497-
// Function to create loading navigation for websites
498493
export const createLoadingWebsitesNavigation = (): NavigationSection[] => [
499494
{
500495
title: 'Websites',
@@ -519,7 +514,6 @@ export const createLoadingWebsitesNavigation = (): NavigationSection[] => [
519514
},
520515
];
521516

522-
// Function to create loading navigation for databases
523517
export const createLoadingDatabasesNavigation = (): NavigationSection[] => [
524518
{
525519
title: 'Database Monitoring',
@@ -543,47 +537,3 @@ export const createLoadingDatabasesNavigation = (): NavigationSection[] => [
543537
],
544538
},
545539
];
546-
547-
export const getNavigationWithWebsites = (
548-
pathname: string,
549-
websites: Array<{ id: string; name: string | null; domain: string }> = [],
550-
isLoading = false
551-
) => {
552-
const config = getContextConfig(pathname);
553-
554-
if (config === categoryConfig.main) {
555-
return {
556-
...config,
557-
navigationMap: {
558-
...config.navigationMap,
559-
websites: isLoading
560-
? createLoadingWebsitesNavigation()
561-
: createWebsitesNavigation(websites),
562-
},
563-
};
564-
}
565-
566-
return config;
567-
};
568-
569-
export const getNavigationWithDatabases = (
570-
pathname: string,
571-
databases: Array<{ id: string; name: string; type: string }> = [],
572-
isLoading = false
573-
) => {
574-
const config = getContextConfig(pathname);
575-
576-
if (config === categoryConfig.main) {
577-
return {
578-
...config,
579-
navigationMap: {
580-
...config.navigationMap,
581-
observability: isLoading
582-
? createLoadingDatabasesNavigation()
583-
: createDatabasesNavigation(databases),
584-
},
585-
};
586-
}
587-
588-
return config;
589-
};

apps/dashboard/components/layout/sidebar.tsx

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@ import { CategorySidebar } from './category-sidebar';
1515
import { DatabaseHeader } from './navigation/database-header';
1616
import { MobileCategorySelector } from './navigation/mobile-category-selector';
1717
import {
18+
categoryConfig,
19+
createDatabasesNavigation,
20+
createLoadingDatabasesNavigation,
21+
createLoadingWebsitesNavigation,
22+
createWebsitesNavigation,
23+
getContextConfig,
1824
getDefaultCategory,
19-
getNavigationWithDatabases,
20-
getNavigationWithWebsites,
2125
} from './navigation/navigation-config';
2226
import { NavigationSection } from './navigation/navigation-section';
2327
import { SandboxHeader } from './navigation/sandbox-header';
@@ -84,33 +88,35 @@ export function Sidebar() {
8488
}, [isMobileOpen, closeSidebar, openSidebar]);
8589

8690
const getNavigationConfig = useMemo((): NavigationConfig => {
87-
// First apply websites navigation if applicable
88-
let contextConfig = getNavigationWithWebsites(
89-
pathname,
90-
websites,
91-
isLoadingWebsites
92-
);
91+
const baseConfig = getContextConfig(pathname);
9392

94-
// Then apply databases navigation if applicable
95-
contextConfig = getNavigationWithDatabases(
96-
pathname,
97-
databases,
98-
isLoadingDatabases
99-
);
93+
const populatedConfig =
94+
baseConfig === categoryConfig.main
95+
? {
96+
...baseConfig,
97+
navigationMap: {
98+
...baseConfig.navigationMap,
99+
websites: isLoadingWebsites
100+
? createLoadingWebsitesNavigation()
101+
: createWebsitesNavigation(websites),
102+
observability: isLoadingDatabases
103+
? createLoadingDatabasesNavigation()
104+
: createDatabasesNavigation(databases),
105+
},
106+
}
107+
: baseConfig;
100108

101109
const defaultCat = getDefaultCategory(pathname);
102110
const activeCat = selectedCategory || defaultCat;
103111

104-
// Get navigation from centralized config
105112
const navSections =
106-
contextConfig.navigationMap[
107-
activeCat as keyof typeof contextConfig.navigationMap
113+
populatedConfig.navigationMap[
114+
activeCat as keyof typeof populatedConfig.navigationMap
108115
] ||
109-
contextConfig.navigationMap[
110-
contextConfig.defaultCategory as keyof typeof contextConfig.navigationMap
116+
populatedConfig.navigationMap[
117+
populatedConfig.defaultCategory as keyof typeof populatedConfig.navigationMap
111118
];
112119

113-
// Determine header based on context
114120
let headerComponent: React.ReactNode;
115121
let currentId: string | null | undefined;
116122

0 commit comments

Comments
 (0)