diff --git a/app/sites/[id]/page.tsx b/app/sites/[id]/page.tsx
index d4c6d0e..a982ba9 100644
--- a/app/sites/[id]/page.tsx
+++ b/app/sites/[id]/page.tsx
@@ -50,12 +50,12 @@ export default function SiteDashboardPage() {
getCountries(siteId, dateRange.start, dateRange.end, 10),
])
setSite(siteData)
- setStats(statsData)
- setRealtime(realtimeData.visitors)
- setDailyStats(dailyData)
- setTopPages(pagesData)
- setTopReferrers(referrersData)
- setCountries(countriesData)
+ setStats(statsData || { pageviews: 0, visitors: 0 })
+ setRealtime(realtimeData?.visitors || 0)
+ setDailyStats(Array.isArray(dailyData) ? dailyData : [])
+ setTopPages(Array.isArray(pagesData) ? pagesData : [])
+ setTopReferrers(Array.isArray(referrersData) ? referrersData : [])
+ setCountries(Array.isArray(countriesData) ? countriesData : [])
} catch (error: any) {
toast.error('Failed to load data: ' + (error.message || 'Unknown error'))
} finally {
diff --git a/components/dashboard/Countries.tsx b/components/dashboard/Countries.tsx
index 24cdaf2..f57e5ce 100644
--- a/components/dashboard/Countries.tsx
+++ b/components/dashboard/Countries.tsx
@@ -7,7 +7,7 @@ interface CountriesProps {
}
export default function Countries({ countries }: CountriesProps) {
- if (countries.length === 0) {
+ if (!countries || countries.length === 0) {
return (
diff --git a/components/dashboard/TopPages.tsx b/components/dashboard/TopPages.tsx
index 08a390f..84c3e92 100644
--- a/components/dashboard/TopPages.tsx
+++ b/components/dashboard/TopPages.tsx
@@ -7,7 +7,7 @@ interface TopPagesProps {
}
export default function TopPages({ pages }: TopPagesProps) {
- if (pages.length === 0) {
+ if (!pages || pages.length === 0) {
return (
diff --git a/components/dashboard/TopReferrers.tsx b/components/dashboard/TopReferrers.tsx
index 69516a8..49deade 100644
--- a/components/dashboard/TopReferrers.tsx
+++ b/components/dashboard/TopReferrers.tsx
@@ -7,7 +7,7 @@ interface TopReferrersProps {
}
export default function TopReferrers({ referrers }: TopReferrersProps) {
- if (referrers.length === 0) {
+ if (!referrers || referrers.length === 0) {
return (
diff --git a/components/sites/SiteList.tsx b/components/sites/SiteList.tsx
index 0ae049c..591e9ca 100644
--- a/components/sites/SiteList.tsx
+++ b/components/sites/SiteList.tsx
@@ -19,9 +19,10 @@ export default function SiteList() {
try {
setLoading(true)
const data = await listSites()
- setSites(data)
+ setSites(Array.isArray(data) ? data : [])
} catch (error: any) {
toast.error('Failed to load sites: ' + (error.message || 'Unknown error'))
+ setSites([]) // Ensure sites is always an array
} finally {
setLoading(false)
}
diff --git a/lib/api/sites.ts b/lib/api/sites.ts
index aa13dbb..385798c 100644
--- a/lib/api/sites.ts
+++ b/lib/api/sites.ts
@@ -20,7 +20,7 @@ export interface UpdateSiteRequest {
export async function listSites(): Promise {
const response = await apiRequest<{ sites: Site[] }>('/sites')
- return response.sites
+ return response?.sites || []
}
export async function getSite(id: string): Promise {