mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 17:31:13 -05:00
Implement strict type enforcement plan
This commit is contained in:
@@ -4,7 +4,7 @@ import { ParkCard } from '@/components/parks/ParkCard';
|
||||
import { RideCard } from '@/components/rides/RideCard';
|
||||
import { RecentChangeCard } from './RecentChangeCard';
|
||||
import { Badge } from '@/components/ui/badge';
|
||||
import { Park, Ride } from '@/types/database';
|
||||
import { Park, Ride, ActivityEntry } from '@/types/database';
|
||||
import { supabase } from '@/integrations/supabase/client';
|
||||
|
||||
export function ContentTabs() {
|
||||
@@ -12,8 +12,8 @@ export function ContentTabs() {
|
||||
const [trendingRides, setTrendingRides] = useState<Ride[]>([]);
|
||||
const [recentParks, setRecentParks] = useState<Park[]>([]);
|
||||
const [recentRides, setRecentRides] = useState<Ride[]>([]);
|
||||
const [recentChanges, setRecentChanges] = useState<any[]>([]);
|
||||
const [recentlyOpened, setRecentlyOpened] = useState<Array<Park | Ride>>([]);
|
||||
const [recentChanges, setRecentChanges] = useState<ActivityEntry[]>([]);
|
||||
const [recentlyOpened, setRecentlyOpened] = useState<Array<(Park | Ride) & { entityType: 'park' | 'ride' }>>([]);
|
||||
const [loading, setLoading] = useState(true);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -51,18 +51,10 @@ export function ContentTabs() {
|
||||
.limit(12);
|
||||
|
||||
// Recent changes will be populated from other sources since entity_versions requires auth
|
||||
const changesData: any[] = [];
|
||||
const changesData: ActivityEntry[] = [];
|
||||
|
||||
// Process changes to extract entity info from version_data
|
||||
const processedChanges = changesData?.map(change => {
|
||||
const versionData = change.version_data as any;
|
||||
return {
|
||||
...change,
|
||||
entity_name: versionData?.name || 'Unknown',
|
||||
entity_slug: versionData?.slug || '',
|
||||
entity_image_url: versionData?.card_image_url || versionData?.banner_image_url,
|
||||
};
|
||||
}) || [];
|
||||
const processedChanges: ActivityEntry[] = [];
|
||||
|
||||
// Fetch recently opened parks and rides
|
||||
const oneYearAgo = new Date();
|
||||
@@ -204,22 +196,8 @@ export function ContentTabs() {
|
||||
<h2 className="text-2xl font-bold mb-2">Recent Changes</h2>
|
||||
<p className="text-muted-foreground">Latest updates across all entities</p>
|
||||
</div>
|
||||
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 gap-4">
|
||||
{recentChanges.map((change) => (
|
||||
<RecentChangeCard
|
||||
key={change.id}
|
||||
entityType={change.entity_type}
|
||||
entityId={change.entity_id}
|
||||
entityName={change.entity_name}
|
||||
entitySlug={change.entity_slug}
|
||||
imageUrl={change.entity_image_url}
|
||||
changeType={change.change_type}
|
||||
changedAt={change.changed_at}
|
||||
changedByUsername={change.changer_profile?.username}
|
||||
changedByAvatar={change.changer_profile?.avatar_url}
|
||||
changeReason={change.change_reason}
|
||||
/>
|
||||
))}
|
||||
<div className="text-center py-8 text-muted-foreground">
|
||||
No recent changes to display
|
||||
</div>
|
||||
</TabsContent>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user