1-
21import { useState } from 'react' ;
32import { Button } from '@/components/ui/button' ;
43import { Card , CardContent , CardHeader , CardTitle } from '@/components/ui/card' ;
54import { useCampaigns } from '@/hooks/useCampaigns' ;
65import { useAuth } from '@/hooks/useAuth' ;
76import { useToast } from '@/hooks/use-toast' ;
87import { Trash2 , AlertTriangle } from 'lucide-react' ;
9- import { collection , query , where , getDocs , doc , deleteDoc } from 'firebase/firestore' ;
10- import { db } from '@/lib/firebase' ;
8+ import { supabase } from '@/integrations/supabase/client' ;
119
1210export const CampaignDeletionUtility = ( ) => {
1311 const [ loading , setLoading ] = useState ( false ) ;
@@ -20,30 +18,29 @@ export const CampaignDeletionUtility = () => {
2018
2119 setLoading ( true ) ;
2220 try {
23- console . log ( '🔍 Recherche des campagnes brouillon pour:' , user . uid ) ;
21+ console . log ( '🔍 SUPABASE: Recherche des campagnes brouillon pour:' , user . uid ) ;
2422
25- const campaignsQuery = query (
26- collection ( db , 'campaigns' ) ,
27- where ( 'userId' , '==' , user . uid ) ,
28- where ( 'isDraft' , '==' , true )
29- ) ;
23+ const { data : drafts , error } = await supabase
24+ . from ( 'campaigns' )
25+ . select ( '*' )
26+ . eq ( 'user_id' , user . uid )
27+ . eq ( 'is_draft' , true )
28+ . order ( 'created_at' , { ascending : false } ) ;
3029
31- const campaignsSnapshot = await getDocs ( campaignsQuery ) ;
32- const drafts = campaignsSnapshot . docs . map ( doc => ( {
33- id : doc . id ,
34- ...doc . data ( ) ,
35- createdAt : doc . data ( ) . createdAt ?. toDate ( ) || new Date ( ) ,
36- } ) ) ;
30+ if ( error ) {
31+ console . error ( '❌ SUPABASE: Erreur chargement brouillons:' , error ) ;
32+ throw error ;
33+ }
3734
38- console . log ( '📋 Campagnes brouillon trouvées:' , drafts . length ) ;
39- setDraftCampaigns ( drafts ) ;
35+ console . log ( '📋 SUPABASE: Campagnes brouillon trouvées:' , drafts ? .length || 0 ) ;
36+ setDraftCampaigns ( drafts || [ ] ) ;
4037
4138 toast ( {
4239 title : "Campagnes trouvées" ,
43- description : `${ drafts . length } campagnes en brouillon trouvées` ,
40+ description : `${ drafts ? .length || 0 } campagnes en brouillon trouvées` ,
4441 } ) ;
4542 } catch ( error ) {
46- console . error ( '❌ Erreur chargement brouillons:' , error ) ;
43+ console . error ( '❌ SUPABASE: Erreur chargement brouillons:' , error ) ;
4744 toast ( {
4845 title : "Erreur" ,
4946 description : "Impossible de charger les campagnes brouillon" ,
@@ -56,10 +53,18 @@ export const CampaignDeletionUtility = () => {
5653
5754 const deleteDraftCampaign = async ( campaignId : string , campaignName : string ) => {
5855 try {
59- console . log ( '🗑️ Suppression de la campagne brouillon:' , campaignId ) ;
56+ console . log ( '🗑️ SUPABASE: Suppression de la campagne brouillon:' , campaignId ) ;
57+
58+ const { error } = await supabase
59+ . from ( 'campaigns' )
60+ . delete ( )
61+ . eq ( 'id' , campaignId )
62+ . eq ( 'user_id' , user ?. uid ) ; // Sécurité supplémentaire
6063
61- const campaignRef = doc ( db , 'campaigns' , campaignId ) ;
62- await deleteDoc ( campaignRef ) ;
64+ if ( error ) {
65+ console . error ( '❌ SUPABASE: Erreur suppression:' , error ) ;
66+ throw error ;
67+ }
6368
6469 // Mettre à jour la liste
6570 setDraftCampaigns ( prev => prev . filter ( c => c . id !== campaignId ) ) ;
@@ -69,7 +74,7 @@ export const CampaignDeletionUtility = () => {
6974 description : `"${ campaignName } " a été supprimée avec succès` ,
7075 } ) ;
7176 } catch ( error ) {
72- console . error ( '❌ Erreur suppression:' , error ) ;
77+ console . error ( '❌ SUPABASE: Erreur suppression:' , error ) ;
7378 toast ( {
7479 title : "Erreur" ,
7580 description : "Impossible de supprimer cette campagne" ,
@@ -83,13 +88,18 @@ export const CampaignDeletionUtility = () => {
8388
8489 setLoading ( true ) ;
8590 try {
86- console . log ( '🗑️ Suppression de toutes les campagnes brouillon...' ) ;
91+ console . log ( '🗑️ SUPABASE: Suppression de toutes les campagnes brouillon...' ) ;
8792
88- const deletePromises = draftCampaigns . map ( campaign =>
89- deleteDoc ( doc ( db , 'campaigns' , campaign . id ) )
90- ) ;
93+ const { error } = await supabase
94+ . from ( 'campaigns' )
95+ . delete ( )
96+ . eq ( 'user_id' , user . uid )
97+ . eq ( 'is_draft' , true ) ;
9198
92- await Promise . all ( deletePromises ) ;
99+ if ( error ) {
100+ console . error ( '❌ SUPABASE: Erreur suppression globale:' , error ) ;
101+ throw error ;
102+ }
93103
94104 toast ( {
95105 title : "Nettoyage terminé" ,
@@ -98,7 +108,7 @@ export const CampaignDeletionUtility = () => {
98108
99109 setDraftCampaigns ( [ ] ) ;
100110 } catch ( error ) {
101- console . error ( '❌ Erreur suppression globale:' , error ) ;
111+ console . error ( '❌ SUPABASE: Erreur suppression globale:' , error ) ;
102112 toast ( {
103113 title : "Erreur" ,
104114 description : "Erreur lors de la suppression globale" ,
@@ -143,7 +153,7 @@ export const CampaignDeletionUtility = () => {
143153 < div >
144154 < span className = "font-medium" > { campaign . name } </ span >
145155 < span className = "text-sm text-gray-500 ml-2" >
146- ({ campaign . createdAt . toLocaleDateString ( ) } )
156+ ({ new Date ( campaign . created_at ) . toLocaleDateString ( ) } )
147157 </ span >
148158 </ div >
149159 < Button
@@ -161,4 +171,4 @@ export const CampaignDeletionUtility = () => {
161171 </ CardContent >
162172 </ Card >
163173 ) ;
164- } ;
174+ } ;
0 commit comments