From 1a2b9f69cfdae55c7277fd3bcc3dae28570b03a8 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:08:59 +0000 Subject: [PATCH] Fix remaining component imports --- docs/ERROR_LOGGING_COMPLETE.md | 39 ++++++++++++++++++- src/App.tsx | 7 ++++ src/components/auth/MFARemovalDialog.tsx | 2 +- src/components/auth/TOTPSetup.tsx | 2 +- src/components/designers/DesignerFilters.tsx | 2 +- src/components/lists/ListDisplay.tsx | 2 +- src/components/lists/ListItemEditor.tsx | 2 +- src/components/lists/ListSearch.tsx | 2 +- src/components/lists/UserListManager.tsx | 2 +- .../manufacturers/ManufacturerFilters.tsx | 2 +- .../moderation/EntityEditPreview.tsx | 2 +- .../moderation/PhotoSubmissionDisplay.tsx | 2 +- src/components/moderation/ProfileManager.tsx | 2 +- src/components/moderation/ReassignDialog.tsx | 2 +- src/components/moderation/RecentActivity.tsx | 2 +- src/components/moderation/ReportButton.tsx | 2 +- src/components/moderation/ReportsQueue.tsx | 2 +- .../moderation/SubmissionItemsList.tsx | 2 +- src/components/moderation/UserRoleManager.tsx | 2 +- src/components/operators/OperatorFilters.tsx | 2 +- src/components/parks/ParkFilters.tsx | 2 +- src/components/parks/ParkGrid.tsx | 2 +- src/components/privacy/BlockedUsers.tsx | 2 +- .../profile/AddRideCreditDialog.tsx | 2 +- src/components/profile/RideCreditCard.tsx | 2 +- src/components/profile/RideCreditsManager.tsx | 2 +- src/components/profile/UserBlockButton.tsx | 2 +- src/components/profile/UserReviewsList.tsx | 2 +- src/components/rides/RatingDistribution.tsx | 2 +- src/components/rides/RecentPhotosPreview.tsx | 2 +- src/components/rides/RideFilters.tsx | 2 +- src/components/rides/SimilarRides.tsx | 2 +- src/components/search/SearchResults.tsx | 2 +- .../settings/AccountDeletionDialog.tsx | 2 +- src/components/settings/AccountProfileTab.tsx | 2 +- src/components/settings/DataExportTab.tsx | 2 +- .../settings/DeletionStatusBanner.tsx | 2 +- src/components/settings/EmailChangeDialog.tsx | 2 +- src/components/settings/EmailChangeStatus.tsx | 2 +- src/components/settings/LocationTab.tsx | 2 +- .../settings/PasswordUpdateDialog.tsx | 2 +- src/components/settings/PrivacyTab.tsx | 2 +- src/components/settings/SecurityTab.tsx | 2 +- .../timeline/EntityTimelineManager.tsx | 2 +- .../upload/EntityMultiImageUploader.tsx | 2 +- src/components/upload/EntityPhotoGallery.tsx | 2 +- .../upload/PhotoManagementDialog.tsx | 2 +- src/components/upload/PhotoUpload.tsx | 2 +- .../upload/UppyPhotoSubmissionUpload.tsx | 2 +- src/components/upload/UppyPhotoUpload.tsx | 2 +- 50 files changed, 92 insertions(+), 50 deletions(-) diff --git a/docs/ERROR_LOGGING_COMPLETE.md b/docs/ERROR_LOGGING_COMPLETE.md index 48006c98..e8921c5e 100644 --- a/docs/ERROR_LOGGING_COMPLETE.md +++ b/docs/ERROR_LOGGING_COMPLETE.md @@ -51,12 +51,40 @@ Implemented automatic breadcrumb tracking across the application: #### API Call Tracking (NEW) - Created `src/lib/supabaseClient.ts` with automatic tracking - Wraps Supabase client with Proxy for transparent tracking +- **CRITICAL:** All frontend code MUST import from `@/lib/supabaseClient` (not `@/integrations/supabase/client`) +- 175+ files updated to use wrapped client - Tracks: - Database queries (`supabase.from('table').select()`) - RPC calls (`supabase.rpc('function_name')`) - Storage operations (`supabase.storage.from('bucket')`) - Automatically captures success and error status codes +### 4. Critical: Import Standardization ✅ +**Status:** FIXED + +Updated 175+ files across the application to use the wrapped Supabase client: + +**Before:** +```typescript +import { supabase } from '@/integrations/supabase/client'; +``` + +**After:** +```typescript +import { supabase } from '@/lib/supabaseClient'; +``` + +**Why This Matters:** +- The wrapped client automatically tracks all API calls as breadcrumbs +- Without this change, ZERO API breadcrumbs would be captured +- This is essential for debugging - breadcrumbs show the sequence of events leading to errors + +**Exceptions (4 files that intentionally use base client):** +1. `src/integrations/supabase/client.ts` - Base client definition +2. `src/lib/supabaseClient.ts` - Creates the wrapper +3. `src/lib/errorHandler.ts` - Uses base client to avoid circular dependencies when logging errors +4. `src/lib/requestTracking.ts` - Uses base client to avoid infinite tracking loops + ## How to Use the Enhanced System ### 1. Handling Errors @@ -91,8 +119,8 @@ import { Button } from '@/components/ui/button'; ### 3. API Calls (Automatic) ```typescript -// Just use supabase normally - tracking is automatic -import { supabase } from '@/integrations/supabase/client'; +// CRITICAL: Import from @/lib/supabaseClient (NOT @/integrations/supabase/client) +import { supabase } from '@/lib/supabaseClient'; const { data, error } = await supabase .from('parks') @@ -105,6 +133,8 @@ Breadcrumbs automatically record: - Method: `SELECT` - Status: 200 or 400/500 on error +**Important:** Using the wrong import (`@/integrations/supabase/client`) means NO API calls will be tracked as breadcrumbs! + ### 4. Manual Breadcrumbs (When Needed) ```typescript import { breadcrumb } from '@/lib/errorBreadcrumbs'; @@ -163,6 +193,11 @@ breadcrumb.userAction('submitted', 'ContactForm', { subject: 'Support' }); - [x] Breadcrumbs captured automatically for navigation - [x] Breadcrumbs captured for button clicks (when labeled) - [x] API calls tracked automatically +- [x] All 175+ files updated to use wrapped client +- [x] Verified only 4 files use base client (expected exceptions) +- [ ] **Test error generated at `/test-error-logging`** +- [ ] **Verify breadcrumbs contain API calls** +- [ ] **Verify timezone and referrer fields populated** - [x] Error Monitoring Dashboard displays all data - [x] Error Details Modal shows breadcrumbs in correct order - [x] Error Lookup finds errors by reference ID diff --git a/src/App.tsx b/src/App.tsx index c28d87aa..642e91c8 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -24,6 +24,9 @@ import Rides from "./pages/Rides"; import Search from "./pages/Search"; import Auth from "./pages/Auth"; +// Temporary test component for error logging verification +import { TestErrorLogging } from "./test-error-logging"; + // Detail routes (lazy-loaded) const ParkDetail = lazy(() => import("./pages/ParkDetail")); const RideDetail = lazy(() => import("./pages/RideDetail")); @@ -362,6 +365,10 @@ function AppContent(): React.JSX.Element { {/* Utility routes - lazy loaded */} } /> + + {/* Temporary test route - DELETE AFTER TESTING */} + } /> + {/* ADD ALL CUSTOM ROUTES ABOVE THE CATCH-ALL "*" ROUTE */} } /> diff --git a/src/components/auth/MFARemovalDialog.tsx b/src/components/auth/MFARemovalDialog.tsx index a8fc54f3..005d67fc 100644 --- a/src/components/auth/MFARemovalDialog.tsx +++ b/src/components/auth/MFARemovalDialog.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from 'react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { invokeWithTracking } from '@/lib/edgeFunctionTracking'; import { useToast } from '@/hooks/use-toast'; import { getErrorMessage } from '@/lib/errorHandler'; diff --git a/src/components/auth/TOTPSetup.tsx b/src/components/auth/TOTPSetup.tsx index 9cb7ab1f..932c754b 100644 --- a/src/components/auth/TOTPSetup.tsx +++ b/src/components/auth/TOTPSetup.tsx @@ -9,7 +9,7 @@ import { handleError, handleSuccess, handleInfo, AppError, getErrorMessage } fro import { logger } from '@/lib/logger'; import { useAuth } from '@/hooks/useAuth'; import { useRequireMFA } from '@/hooks/useRequireMFA'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Smartphone, Shield, Copy, Eye, EyeOff, Trash2, AlertTriangle } from 'lucide-react'; import { MFARemovalDialog } from './MFARemovalDialog'; import { setStepUpRequired, getAuthMethod } from '@/lib/sessionFlags'; diff --git a/src/components/designers/DesignerFilters.tsx b/src/components/designers/DesignerFilters.tsx index 6fa43166..1f1b9db9 100644 --- a/src/components/designers/DesignerFilters.tsx +++ b/src/components/designers/DesignerFilters.tsx @@ -6,7 +6,7 @@ import { Label } from '@/components/ui/label'; import { Separator } from '@/components/ui/separator'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { RotateCcw } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider'; import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker'; import { FilterSection } from '@/components/filters/FilterSection'; diff --git a/src/components/lists/ListDisplay.tsx b/src/components/lists/ListDisplay.tsx index 6939deea..d7c806e9 100644 --- a/src/components/lists/ListDisplay.tsx +++ b/src/components/lists/ListDisplay.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from "react"; import { UserTopList, UserTopListItem, Park, Ride, Company } from "@/types/database"; -import { supabase } from "@/integrations/supabase/client"; +import { supabase } from "@/lib/supabaseClient"; import { Link } from "react-router-dom"; import { Badge } from "@/components/ui/badge"; import { handleError } from "@/lib/errorHandler"; diff --git a/src/components/lists/ListItemEditor.tsx b/src/components/lists/ListItemEditor.tsx index db5de975..4a41cd26 100644 --- a/src/components/lists/ListItemEditor.tsx +++ b/src/components/lists/ListItemEditor.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from "react"; import { UserTopList, UserTopListItem } from "@/types/database"; -import { supabase } from "@/integrations/supabase/client"; +import { supabase } from "@/lib/supabaseClient"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; diff --git a/src/components/lists/ListSearch.tsx b/src/components/lists/ListSearch.tsx index 96ceed5c..12694dbf 100644 --- a/src/components/lists/ListSearch.tsx +++ b/src/components/lists/ListSearch.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from "react"; -import { supabase } from "@/integrations/supabase/client"; +import { supabase } from "@/lib/supabaseClient"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Search, Plus, X } from "lucide-react"; diff --git a/src/components/lists/UserListManager.tsx b/src/components/lists/UserListManager.tsx index 5cdeab0d..740db362 100644 --- a/src/components/lists/UserListManager.tsx +++ b/src/components/lists/UserListManager.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from "react"; import { useAuth } from "@/hooks/useAuth"; -import { supabase } from "@/integrations/supabase/client"; +import { supabase } from "@/lib/supabaseClient"; import { UserTopList, UserTopListItem } from "@/types/database"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; diff --git a/src/components/manufacturers/ManufacturerFilters.tsx b/src/components/manufacturers/ManufacturerFilters.tsx index 94b042c4..18815641 100644 --- a/src/components/manufacturers/ManufacturerFilters.tsx +++ b/src/components/manufacturers/ManufacturerFilters.tsx @@ -6,7 +6,7 @@ import { Label } from '@/components/ui/label'; import { Separator } from '@/components/ui/separator'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { RotateCcw } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider'; import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker'; import { FilterSection } from '@/components/filters/FilterSection'; diff --git a/src/components/moderation/EntityEditPreview.tsx b/src/components/moderation/EntityEditPreview.tsx index 1a427944..0bfaf82d 100644 --- a/src/components/moderation/EntityEditPreview.tsx +++ b/src/components/moderation/EntityEditPreview.tsx @@ -1,7 +1,7 @@ import { useState, useEffect } from 'react'; import { Badge } from '@/components/ui/badge'; import { Card, CardContent } from '@/components/ui/card'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Image as ImageIcon } from 'lucide-react'; import { PhotoModal } from './PhotoModal'; import { handleError } from '@/lib/errorHandler'; diff --git a/src/components/moderation/PhotoSubmissionDisplay.tsx b/src/components/moderation/PhotoSubmissionDisplay.tsx index 6607f867..ca9c4a80 100644 --- a/src/components/moderation/PhotoSubmissionDisplay.tsx +++ b/src/components/moderation/PhotoSubmissionDisplay.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from 'react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { PhotoGrid } from '@/components/common/PhotoGrid'; import type { PhotoSubmissionItem } from '@/types/photo-submissions'; import type { PhotoItem } from '@/types/photos'; diff --git a/src/components/moderation/ProfileManager.tsx b/src/components/moderation/ProfileManager.tsx index 0374b0a4..417f0b4d 100644 --- a/src/components/moderation/ProfileManager.tsx +++ b/src/components/moderation/ProfileManager.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react'; import { Search, Shield, Trash2, Ban, AlertTriangle } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { useAuth } from '@/hooks/useAuth'; import { useUserRole, UserRole } from '@/hooks/useUserRole'; import { useSuperuserGuard } from '@/hooks/useSuperuserGuard'; diff --git a/src/components/moderation/ReassignDialog.tsx b/src/components/moderation/ReassignDialog.tsx index da13b172..fe2b5b10 100644 --- a/src/components/moderation/ReassignDialog.tsx +++ b/src/components/moderation/ReassignDialog.tsx @@ -17,7 +17,7 @@ import { SelectTrigger, SelectValue, } from '@/components/ui/select'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { handleError, getErrorMessage } from '@/lib/errorHandler'; import { logger } from '@/lib/logger'; diff --git a/src/components/moderation/RecentActivity.tsx b/src/components/moderation/RecentActivity.tsx index 02be5117..6fbdb160 100644 --- a/src/components/moderation/RecentActivity.tsx +++ b/src/components/moderation/RecentActivity.tsx @@ -1,5 +1,5 @@ import { useState, useEffect, forwardRef, useImperativeHandle } from 'react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { useAuth } from '@/hooks/useAuth'; import { handleError } from '@/lib/errorHandler'; import { ActivityCard } from './ActivityCard'; diff --git a/src/components/moderation/ReportButton.tsx b/src/components/moderation/ReportButton.tsx index bf766d18..35fc7297 100644 --- a/src/components/moderation/ReportButton.tsx +++ b/src/components/moderation/ReportButton.tsx @@ -19,7 +19,7 @@ import { } from '@/components/ui/select'; import { Textarea } from '@/components/ui/textarea'; import { Label } from '@/components/ui/label'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { useAuth } from '@/hooks/useAuth'; import { useToast } from '@/hooks/use-toast'; import { getErrorMessage } from '@/lib/errorHandler'; diff --git a/src/components/moderation/ReportsQueue.tsx b/src/components/moderation/ReportsQueue.tsx index f5c55338..8865b1c4 100644 --- a/src/components/moderation/ReportsQueue.tsx +++ b/src/components/moderation/ReportsQueue.tsx @@ -17,7 +17,7 @@ import { PaginationNext, PaginationPrevious, } from '@/components/ui/pagination'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { format } from 'date-fns'; import { useAdminSettings } from '@/hooks/useAdminSettings'; import { useAuth } from '@/hooks/useAuth'; diff --git a/src/components/moderation/SubmissionItemsList.tsx b/src/components/moderation/SubmissionItemsList.tsx index c4190724..f58eeb14 100644 --- a/src/components/moderation/SubmissionItemsList.tsx +++ b/src/components/moderation/SubmissionItemsList.tsx @@ -1,5 +1,5 @@ import { useState, useEffect, memo } from 'react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { SubmissionChangesDisplay } from './SubmissionChangesDisplay'; import { PhotoSubmissionDisplay } from './PhotoSubmissionDisplay'; import { Skeleton } from '@/components/ui/skeleton'; diff --git a/src/components/moderation/UserRoleManager.tsx b/src/components/moderation/UserRoleManager.tsx index 09a3d7e0..a2c3524e 100644 --- a/src/components/moderation/UserRoleManager.tsx +++ b/src/components/moderation/UserRoleManager.tsx @@ -6,7 +6,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { useAuth } from '@/hooks/useAuth'; import { useUserRole } from '@/hooks/useUserRole'; import { handleError, handleSuccess, getErrorMessage } from '@/lib/errorHandler'; diff --git a/src/components/operators/OperatorFilters.tsx b/src/components/operators/OperatorFilters.tsx index 8e2b2d4f..23faebe5 100644 --- a/src/components/operators/OperatorFilters.tsx +++ b/src/components/operators/OperatorFilters.tsx @@ -5,7 +5,7 @@ import { Checkbox } from '@/components/ui/checkbox'; import { Label } from '@/components/ui/label'; import { Separator } from '@/components/ui/separator'; import { RotateCcw } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider'; import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker'; import { FilterSection } from '@/components/filters/FilterSection'; diff --git a/src/components/parks/ParkFilters.tsx b/src/components/parks/ParkFilters.tsx index e63f0e9c..63779d4a 100644 --- a/src/components/parks/ParkFilters.tsx +++ b/src/components/parks/ParkFilters.tsx @@ -5,7 +5,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@ import { Button } from '@/components/ui/button'; import { Separator } from '@/components/ui/separator'; import { RotateCcw } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Park } from '@/types/database'; import { FilterState } from '@/pages/Parks'; import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider'; diff --git a/src/components/parks/ParkGrid.tsx b/src/components/parks/ParkGrid.tsx index bdeb8a9f..03245b7d 100644 --- a/src/components/parks/ParkGrid.tsx +++ b/src/components/parks/ParkGrid.tsx @@ -7,7 +7,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@ import { Sheet, SheetContent, SheetTrigger, SheetHeader, SheetTitle } from '@/components/ui/sheet'; import { ParkCard } from './ParkCard'; import { Park } from '@/types/database'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { getErrorMessage } from '@/lib/errorHandler'; import { logger } from '@/lib/logger'; diff --git a/src/components/privacy/BlockedUsers.tsx b/src/components/privacy/BlockedUsers.tsx index eea347a5..eeb1e9db 100644 --- a/src/components/privacy/BlockedUsers.tsx +++ b/src/components/privacy/BlockedUsers.tsx @@ -3,7 +3,7 @@ import { Button } from '@/components/ui/button'; import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from '@/components/ui/alert-dialog'; import { UserX, Trash2 } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { useAuth } from '@/hooks/useAuth'; import { handleError, handleSuccess } from '@/lib/errorHandler'; import { logger } from '@/lib/logger'; diff --git a/src/components/profile/AddRideCreditDialog.tsx b/src/components/profile/AddRideCreditDialog.tsx index cc464a4a..f4622e7e 100644 --- a/src/components/profile/AddRideCreditDialog.tsx +++ b/src/components/profile/AddRideCreditDialog.tsx @@ -4,7 +4,7 @@ import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { AutocompleteSearch } from '@/components/search/AutocompleteSearch'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { toast } from 'sonner'; import { getErrorMessage } from '@/lib/errorHandler'; import { Calendar } from '@/components/ui/calendar'; diff --git a/src/components/profile/RideCreditCard.tsx b/src/components/profile/RideCreditCard.tsx index df820c0b..ba8b46bc 100644 --- a/src/components/profile/RideCreditCard.tsx +++ b/src/components/profile/RideCreditCard.tsx @@ -6,7 +6,7 @@ import { Input } from '@/components/ui/input'; import { Calendar, MapPin, Edit, Trash2, Plus, Minus, Check, X, Star, Factory, Gauge, Ruler, Zap } from 'lucide-react'; import { Link } from 'react-router-dom'; import { format } from 'date-fns'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { toast } from 'sonner'; import { getErrorMessage } from '@/lib/errorHandler'; import { UserRideCredit } from '@/types/database'; diff --git a/src/components/profile/RideCreditsManager.tsx b/src/components/profile/RideCreditsManager.tsx index fad6dd9e..876f15fa 100644 --- a/src/components/profile/RideCreditsManager.tsx +++ b/src/components/profile/RideCreditsManager.tsx @@ -3,7 +3,7 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Plus, LayoutGrid, List, GripVertical } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { toast } from 'sonner'; import { handleError } from '@/lib/errorHandler'; import { AddRideCreditDialog } from './AddRideCreditDialog'; diff --git a/src/components/profile/UserBlockButton.tsx b/src/components/profile/UserBlockButton.tsx index 52449d6f..2b82b7ab 100644 --- a/src/components/profile/UserBlockButton.tsx +++ b/src/components/profile/UserBlockButton.tsx @@ -4,7 +4,7 @@ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { UserX } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { useAuth } from '@/hooks/useAuth'; import { useToast } from '@/hooks/use-toast'; import { getErrorMessage } from '@/lib/errorHandler'; diff --git a/src/components/profile/UserReviewsList.tsx b/src/components/profile/UserReviewsList.tsx index 80ae8c64..decd0676 100644 --- a/src/components/profile/UserReviewsList.tsx +++ b/src/components/profile/UserReviewsList.tsx @@ -5,7 +5,7 @@ import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'; import { Badge } from '@/components/ui/badge'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Star, Calendar, MapPin, Edit, Trash2, ThumbsUp } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { StarRating } from '@/components/reviews/StarRating'; import { Button } from '@/components/ui/button'; import { Link } from 'react-router-dom'; diff --git a/src/components/rides/RatingDistribution.tsx b/src/components/rides/RatingDistribution.tsx index 749e0e4b..90695f4b 100644 --- a/src/components/rides/RatingDistribution.tsx +++ b/src/components/rides/RatingDistribution.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Progress } from '@/components/ui/progress'; import { Star } from 'lucide-react'; diff --git a/src/components/rides/RecentPhotosPreview.tsx b/src/components/rides/RecentPhotosPreview.tsx index e661fff5..d4f0d09b 100644 --- a/src/components/rides/RecentPhotosPreview.tsx +++ b/src/components/rides/RecentPhotosPreview.tsx @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Camera } from 'lucide-react'; diff --git a/src/components/rides/RideFilters.tsx b/src/components/rides/RideFilters.tsx index 5820e759..d0520453 100644 --- a/src/components/rides/RideFilters.tsx +++ b/src/components/rides/RideFilters.tsx @@ -6,7 +6,7 @@ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@ import { Checkbox } from '@/components/ui/checkbox'; import { Separator } from '@/components/ui/separator'; import { RotateCcw } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { FilterRangeSlider } from '@/components/filters/FilterRangeSlider'; import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker'; import { FilterSection } from '@/components/filters/FilterSection'; diff --git a/src/components/rides/SimilarRides.tsx b/src/components/rides/SimilarRides.tsx index ff1c74b4..80627c32 100644 --- a/src/components/rides/SimilarRides.tsx +++ b/src/components/rides/SimilarRides.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { RideCard } from '@/components/rides/RideCard'; diff --git a/src/components/search/SearchResults.tsx b/src/components/search/SearchResults.tsx index 93bdae99..d6b0c2e3 100644 --- a/src/components/search/SearchResults.tsx +++ b/src/components/search/SearchResults.tsx @@ -6,7 +6,7 @@ import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { MapPin, Star, Search as SearchIcon, Castle, FerrisWheel, Waves, Theater, Factory } from 'lucide-react'; import { Park, Ride, Company } from '@/types/database'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { useNavigate } from 'react-router-dom'; import { getErrorMessage } from '@/lib/errorHandler'; import { logger } from '@/lib/logger'; diff --git a/src/components/settings/AccountDeletionDialog.tsx b/src/components/settings/AccountDeletionDialog.tsx index 160942b4..32e9f0ae 100644 --- a/src/components/settings/AccountDeletionDialog.tsx +++ b/src/components/settings/AccountDeletionDialog.tsx @@ -6,7 +6,7 @@ import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Checkbox } from '@/components/ui/checkbox'; import { Alert, AlertDescription } from '@/components/ui/alert'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Loader2, AlertTriangle, Info } from 'lucide-react'; import { deletionDialogReducer, diff --git a/src/components/settings/AccountProfileTab.tsx b/src/components/settings/AccountProfileTab.tsx index e3174e36..24b9014f 100644 --- a/src/components/settings/AccountProfileTab.tsx +++ b/src/components/settings/AccountProfileTab.tsx @@ -11,7 +11,7 @@ import { Separator } from '@/components/ui/separator'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from '@/components/ui/alert-dialog'; import { useAuth } from '@/hooks/useAuth'; import { useProfile } from '@/hooks/useProfile'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Trash2, Mail, AlertCircle, X, Check, Loader2 } from 'lucide-react'; import { PhotoUpload } from '@/components/upload/PhotoUpload'; import { notificationService } from '@/lib/notificationService'; diff --git a/src/components/settings/DataExportTab.tsx b/src/components/settings/DataExportTab.tsx index 46f71d81..d37d0d3f 100644 --- a/src/components/settings/DataExportTab.tsx +++ b/src/components/settings/DataExportTab.tsx @@ -8,7 +8,7 @@ import { Switch } from '@/components/ui/switch'; import { Label } from '@/components/ui/label'; import { useAuth } from '@/hooks/useAuth'; import { useProfile } from '@/hooks/useProfile'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { handleError, handleSuccess, AppError } from '@/lib/errorHandler'; import { logger } from '@/lib/logger'; import { Download, Activity, BarChart3, AlertCircle, Clock } from 'lucide-react'; diff --git a/src/components/settings/DeletionStatusBanner.tsx b/src/components/settings/DeletionStatusBanner.tsx index 74f06b11..3a084bd5 100644 --- a/src/components/settings/DeletionStatusBanner.tsx +++ b/src/components/settings/DeletionStatusBanner.tsx @@ -1,6 +1,6 @@ import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'; import { Button } from '@/components/ui/button'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { invokeWithTracking } from '@/lib/edgeFunctionTracking'; import { useToast } from '@/hooks/use-toast'; import { AlertTriangle, Loader2 } from 'lucide-react'; diff --git a/src/components/settings/EmailChangeDialog.tsx b/src/components/settings/EmailChangeDialog.tsx index d36b01ef..6b57ab2b 100644 --- a/src/components/settings/EmailChangeDialog.tsx +++ b/src/components/settings/EmailChangeDialog.tsx @@ -22,7 +22,7 @@ import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; import { handleError, handleSuccess, AppError, getErrorMessage } from '@/lib/errorHandler'; import { logger } from '@/lib/logger'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Loader2, Mail, CheckCircle2, AlertCircle } from 'lucide-react'; import { TurnstileCaptcha } from '@/components/auth/TurnstileCaptcha'; import { useTheme } from '@/components/theme/ThemeProvider'; diff --git a/src/components/settings/EmailChangeStatus.tsx b/src/components/settings/EmailChangeStatus.tsx index 2301c4dd..f9aa3853 100644 --- a/src/components/settings/EmailChangeStatus.tsx +++ b/src/components/settings/EmailChangeStatus.tsx @@ -6,7 +6,7 @@ import { Button } from '@/components/ui/button'; import { Separator } from '@/components/ui/separator'; import { Progress } from '@/components/ui/progress'; import { Mail, Info, CheckCircle2, Circle, Loader2 } from 'lucide-react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { handleError, handleSuccess } from '@/lib/errorHandler'; interface EmailChangeStatusProps { diff --git a/src/components/settings/LocationTab.tsx b/src/components/settings/LocationTab.tsx index 4350bf03..9ba0e25c 100644 --- a/src/components/settings/LocationTab.tsx +++ b/src/components/settings/LocationTab.tsx @@ -13,7 +13,7 @@ import { Skeleton } from '@/components/ui/skeleton'; import { useAuth } from '@/hooks/useAuth'; import { useProfile } from '@/hooks/useProfile'; import { useUnitPreferences } from '@/hooks/useUnitPreferences'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { handleError, handleSuccess, AppError } from '@/lib/errorHandler'; import { logger } from '@/lib/logger'; import { MapPin, Calendar, Accessibility, Ruler } from 'lucide-react'; diff --git a/src/components/settings/PasswordUpdateDialog.tsx b/src/components/settings/PasswordUpdateDialog.tsx index e9c18eeb..5b1f8095 100644 --- a/src/components/settings/PasswordUpdateDialog.tsx +++ b/src/components/settings/PasswordUpdateDialog.tsx @@ -15,7 +15,7 @@ import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { handleError, handleSuccess, AppError, getErrorMessage } from '@/lib/errorHandler'; import { logger } from '@/lib/logger'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Loader2, Shield, CheckCircle2 } from 'lucide-react'; import { InputOTP, InputOTPGroup, InputOTPSlot } from '@/components/ui/input-otp'; import { TurnstileCaptcha } from '@/components/auth/TurnstileCaptcha'; diff --git a/src/components/settings/PrivacyTab.tsx b/src/components/settings/PrivacyTab.tsx index dff8da03..8c7075e3 100644 --- a/src/components/settings/PrivacyTab.tsx +++ b/src/components/settings/PrivacyTab.tsx @@ -11,7 +11,7 @@ import { handleError, handleSuccess, AppError } from '@/lib/errorHandler'; import { logger } from '@/lib/logger'; import { useAuth } from '@/hooks/useAuth'; import { useProfile } from '@/hooks/useProfile'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Eye, UserX, Shield, Search } from 'lucide-react'; import { BlockedUsers } from '@/components/privacy/BlockedUsers'; import type { PrivacySettings, PrivacyFormData } from '@/types/privacy'; diff --git a/src/components/settings/SecurityTab.tsx b/src/components/settings/SecurityTab.tsx index 391167a8..cf9df01e 100644 --- a/src/components/settings/SecurityTab.tsx +++ b/src/components/settings/SecurityTab.tsx @@ -23,7 +23,7 @@ import { } from '@/lib/identityService'; import type { UserIdentity, OAuthProvider } from '@/types/identity'; import type { AuthSession } from '@/types/auth'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { logger } from '@/lib/logger'; import { SessionRevokeConfirmDialog } from './SessionRevokeConfirmDialog'; diff --git a/src/components/timeline/EntityTimelineManager.tsx b/src/components/timeline/EntityTimelineManager.tsx index b9a3aeca..c4770dc1 100644 --- a/src/components/timeline/EntityTimelineManager.tsx +++ b/src/components/timeline/EntityTimelineManager.tsx @@ -6,7 +6,7 @@ import { TimelineEventEditorDialog } from './TimelineEventEditorDialog'; import { TimelineEventCard } from './TimelineEventCard'; import { EntityHistoryTimeline } from '@/components/history/EntityHistoryTimeline'; import { useQuery } from '@tanstack/react-query'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { useAuth } from '@/hooks/useAuth'; import { toast } from 'sonner'; import { getErrorMessage, handleError } from '@/lib/errorHandler'; diff --git a/src/components/upload/EntityMultiImageUploader.tsx b/src/components/upload/EntityMultiImageUploader.tsx index 497fd939..4a1fe2b4 100644 --- a/src/components/upload/EntityMultiImageUploader.tsx +++ b/src/components/upload/EntityMultiImageUploader.tsx @@ -10,7 +10,7 @@ import { ContextMenuTrigger, } from '@/components/ui/context-menu'; import { DragDropZone } from './DragDropZone'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { toast } from '@/hooks/use-toast'; import { Skeleton } from '@/components/ui/skeleton'; import { Alert, AlertDescription } from '@/components/ui/alert'; diff --git a/src/components/upload/EntityPhotoGallery.tsx b/src/components/upload/EntityPhotoGallery.tsx index c6ff02e3..fddc6b04 100644 --- a/src/components/upload/EntityPhotoGallery.tsx +++ b/src/components/upload/EntityPhotoGallery.tsx @@ -14,7 +14,7 @@ import { useNavigate } from 'react-router-dom'; import { UppyPhotoSubmissionUpload } from '@/components/upload/UppyPhotoSubmissionUpload'; import { PhotoManagementDialog } from '@/components/upload/PhotoManagementDialog'; import { PhotoModal } from '@/components/moderation/PhotoModal'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { EntityPhotoGalleryProps } from '@/types/submissions'; import { useUserRole } from '@/hooks/useUserRole'; import { getErrorMessage } from '@/lib/errorHandler'; diff --git a/src/components/upload/PhotoManagementDialog.tsx b/src/components/upload/PhotoManagementDialog.tsx index 1c9cced5..7365242a 100644 --- a/src/components/upload/PhotoManagementDialog.tsx +++ b/src/components/upload/PhotoManagementDialog.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from 'react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { Button } from '@/components/ui/button'; import { Dialog, diff --git a/src/components/upload/PhotoUpload.tsx b/src/components/upload/PhotoUpload.tsx index 55c3d275..84a08ea1 100644 --- a/src/components/upload/PhotoUpload.tsx +++ b/src/components/upload/PhotoUpload.tsx @@ -14,7 +14,7 @@ import { } from 'lucide-react'; import { cn } from '@/lib/utils'; import { getErrorMessage } from '@/lib/errorHandler'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { invokeWithTracking } from '@/lib/edgeFunctionTracking'; import { useAuth } from '@/hooks/useAuth'; import { logger } from '@/lib/logger'; diff --git a/src/components/upload/UppyPhotoSubmissionUpload.tsx b/src/components/upload/UppyPhotoSubmissionUpload.tsx index e2984de3..06a0cd54 100644 --- a/src/components/upload/UppyPhotoSubmissionUpload.tsx +++ b/src/components/upload/UppyPhotoSubmissionUpload.tsx @@ -12,7 +12,7 @@ import { Separator } from "@/components/ui/separator"; import { Progress } from "@/components/ui/progress"; import { UppyPhotoUploadLazy } from "./UppyPhotoUploadLazy"; import { PhotoCaptionEditor, PhotoWithCaption } from "./PhotoCaptionEditor"; -import { supabase } from "@/integrations/supabase/client"; +import { supabase } from "@/lib/supabaseClient"; import { useAuth } from "@/hooks/useAuth"; import { useToast } from "@/hooks/use-toast"; import { Camera, CheckCircle, AlertCircle, Info } from "lucide-react"; diff --git a/src/components/upload/UppyPhotoUpload.tsx b/src/components/upload/UppyPhotoUpload.tsx index 54adf895..3c7b8ab3 100644 --- a/src/components/upload/UppyPhotoUpload.tsx +++ b/src/components/upload/UppyPhotoUpload.tsx @@ -1,5 +1,5 @@ import React, { useRef, useState } from 'react'; -import { supabase } from '@/integrations/supabase/client'; +import { supabase } from '@/lib/supabaseClient'; import { useToast } from '@/hooks/use-toast'; import { invokeWithTracking } from '@/lib/edgeFunctionTracking'; import { logger } from '@/lib/logger';