mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-24 23:51:13 -05:00
Implement strict type enforcement plan
This commit is contained in:
@@ -228,7 +228,7 @@ export default function OperatorParks() {
|
||||
<span className="hidden md:inline">Filters</span>
|
||||
</Button>
|
||||
|
||||
<Tabs value={viewMode} onValueChange={(v) => setViewMode(v as any)} className="hidden md:inline-flex">
|
||||
<Tabs value={viewMode} onValueChange={(v) => setViewMode(v as 'grid' | 'list')} className="hidden md:inline-flex">
|
||||
<TabsList>
|
||||
<TabsTrigger value="grid">
|
||||
<Grid3X3 className="w-4 h-4" />
|
||||
|
||||
@@ -228,7 +228,7 @@ export default function OwnerParks() {
|
||||
<span className="hidden md:inline">Filters</span>
|
||||
</Button>
|
||||
|
||||
<Tabs value={viewMode} onValueChange={(v) => setViewMode(v as any)} className="hidden md:inline-flex">
|
||||
<Tabs value={viewMode} onValueChange={(v) => setViewMode(v as 'grid' | 'list')} className="hidden md:inline-flex">
|
||||
<TabsList>
|
||||
<TabsTrigger value="grid">
|
||||
<Grid3X3 className="w-4 h-4" />
|
||||
|
||||
@@ -102,12 +102,12 @@ export default function Parks() {
|
||||
|
||||
if (error) throw error;
|
||||
setParks(data || []);
|
||||
} catch (error: any) {
|
||||
} catch (error) {
|
||||
console.error('Error fetching parks:', error);
|
||||
toast({
|
||||
variant: "destructive",
|
||||
title: "Error loading parks",
|
||||
description: error.message,
|
||||
description: error instanceof Error ? error.message : 'Failed to load parks',
|
||||
});
|
||||
} finally {
|
||||
setLoading(false);
|
||||
@@ -248,10 +248,10 @@ export default function Parks() {
|
||||
});
|
||||
|
||||
setIsAddParkModalOpen(false);
|
||||
} catch (error: any) {
|
||||
} catch (error) {
|
||||
toast({
|
||||
title: "Submission Failed",
|
||||
description: error.message || "Failed to submit park.",
|
||||
description: error instanceof Error ? error.message : "Failed to submit park.",
|
||||
variant: "destructive"
|
||||
});
|
||||
}
|
||||
@@ -363,7 +363,7 @@ export default function Parks() {
|
||||
)}
|
||||
</Button>
|
||||
|
||||
<Tabs value={viewMode} onValueChange={(v) => setViewMode(v as any)} className="flex-1 sm:flex-none hidden md:inline-flex">
|
||||
<Tabs value={viewMode} onValueChange={(v) => setViewMode(v as 'grid' | 'list')} className="flex-1 sm:flex-none hidden md:inline-flex">
|
||||
<TabsList>
|
||||
<TabsTrigger value="grid">
|
||||
<Grid3X3 className="w-4 h-4" />
|
||||
|
||||
@@ -16,7 +16,7 @@ import { useAuth } from '@/hooks/useAuth';
|
||||
import { useProfile } from '@/hooks/useProfile';
|
||||
import { useUsernameValidation } from '@/hooks/useUsernameValidation';
|
||||
import { User, MapPin, Calendar, Star, Trophy, Settings, Camera, Edit3, Save, X, ArrowLeft, Check, AlertCircle, Loader2, UserX, FileText, Image } from 'lucide-react';
|
||||
import { Profile as ProfileType } from '@/types/database';
|
||||
import { Profile as ProfileType, ActivityEntry } from '@/types/database';
|
||||
import { supabase } from '@/integrations/supabase/client';
|
||||
import { useToast } from '@/hooks/use-toast';
|
||||
import { PhotoUpload } from '@/components/upload/PhotoUpload';
|
||||
@@ -56,7 +56,7 @@ export default function Profile() {
|
||||
coasterCount: 0,
|
||||
parkCount: 0
|
||||
});
|
||||
const [recentActivity, setRecentActivity] = useState<any[]>([]);
|
||||
const [recentActivity, setRecentActivity] = useState<ActivityEntry[]>([]);
|
||||
const [activityLoading, setActivityLoading] = useState(false);
|
||||
|
||||
// User role checking
|
||||
@@ -205,12 +205,12 @@ export default function Profile() {
|
||||
|
||||
// Combine and sort by date
|
||||
const combined = [
|
||||
...(reviews?.map(r => ({ ...r, type: 'review' })) || []),
|
||||
...(credits?.map(c => ({ ...c, type: 'credit' })) || []),
|
||||
...(submissions?.map(s => ({ ...s, type: 'submission' })) || []),
|
||||
...(rankings?.map(r => ({ ...r, type: 'ranking' })) || [])
|
||||
...(reviews?.map(r => ({ ...r, type: 'review' as const })) || []),
|
||||
...(credits?.map(c => ({ ...c, type: 'credit' as const })) || []),
|
||||
...(submissions?.map(s => ({ ...s, type: 'submission' as const })) || []),
|
||||
...(rankings?.map(r => ({ ...r, type: 'ranking' as const })) || [])
|
||||
].sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime())
|
||||
.slice(0, 15);
|
||||
.slice(0, 15) as ActivityEntry[];
|
||||
|
||||
setRecentActivity(combined);
|
||||
} catch (error: any) {
|
||||
|
||||
Reference in New Issue
Block a user