Skip to content

Commit e27500b

Browse files
Fix: Resolve missing imports in Dashboard component
1 parent d27eeec commit e27500b

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/components/Dashboard.tsx

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { useStatsFilters } from '@/hooks/useStatsFilters';
66
import { useAuthGuard } from '@/hooks/useAuthGuard';
77
import { useTawkTo } from '@/hooks/useTawkTo';
88
import { useGuidedTour } from '@/hooks/useGuidedTour';
9+
import { supabase } from '@/integrations/supabase/client';
910
import { DashboardBackground } from '@/components/DashboardBackground';
1011
import { DashboardHeader } from '@/components/DashboardHeader';
1112
import { DashboardContent } from '@/components/DashboardContent';
@@ -59,9 +60,17 @@ const DashboardStats = ({ activeCampaigns, totalCampaigns, totalAffiliates, user
5960
Logger.security(`Loading secured global stats ${periodLabel} for: ${userId}`);
6061

6162
// Récupérer les campagnes de l'utilisateur avec vérification de propriété
62-
const campaignsQuery = query(collection(db, 'campaigns'), where('userId', '==', userId));
63-
const campaignsSnapshot = await getDocs(campaignsQuery);
64-
const campaignIds = campaignsSnapshot.docs.map(doc => doc.id);
63+
const { data: userCampaigns, error: campaignsError } = await supabase
64+
.from('campaigns')
65+
.select('id')
66+
.eq('user_id', userId);
67+
68+
if (campaignsError) {
69+
console.error('Error fetching campaigns:', campaignsError);
70+
return;
71+
}
72+
73+
const campaignIds = userCampaigns?.map(c => c.id) || [];
6574

6675
if (campaignIds.length === 0) {
6776
Logger.security('No campaigns found for user');
@@ -70,30 +79,28 @@ const DashboardStats = ({ activeCampaigns, totalCampaigns, totalAffiliates, user
7079
}
7180

7281
// Récupérer tous les clics et conversions en parallèle avec vérification de sécurité
73-
const [clicksSnapshot, conversionsSnapshot] = await Promise.all([
74-
getDocs(query(collection(db, 'clicks'), where('campaignId', 'in', campaignIds))),
75-
getDocs(query(collection(db, 'conversions'), where('campaignId', 'in', campaignIds)))
82+
const [clicksResult, conversionsResult] = await Promise.all([
83+
supabase.from('clicks').select('*').in('campaign_id', campaignIds),
84+
supabase.from('conversions').select('*').in('campaign_id', campaignIds)
7685
]);
7786

7887
// Filtrer par période si nécessaire
7988
const filterDataByDate = (data: any[]) => {
8089
if (!filterDate) return data;
8190

8291
return data.filter(item => {
83-
if (!item.timestamp) return false;
92+
if (!item.created_at) return false;
8493
try {
85-
const itemDate = item.timestamp.toDate ?
86-
item.timestamp.toDate() :
87-
new Date(item.timestamp);
94+
const itemDate = new Date(item.created_at);
8895
return itemDate >= filterDate;
8996
} catch (error) {
9097
return false;
9198
}
9299
});
93100
};
94101

95-
const filteredClicks = filterDataByDate(clicksSnapshot.docs.map(doc => doc.data()));
96-
const filteredConversions = filterDataByDate(conversionsSnapshot.docs.map(doc => doc.data()));
102+
const filteredClicks = filterDataByDate(clicksResult.data || []);
103+
const filteredConversions = filterDataByDate(conversionsResult.data || []);
97104

98105
const totalClicks = filteredClicks.length;
99106
let totalRevenue = 0;

0 commit comments

Comments
 (0)