mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-22 17:51:12 -05:00
Refactor: Uniformly use AuthModalContext
This commit is contained in:
@@ -19,6 +19,7 @@ import { submitCompanyUpdate } from '@/lib/companyHelpers';
|
|||||||
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
||||||
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
||||||
import { trackPageView } from '@/lib/viewTracking';
|
import { trackPageView } from '@/lib/viewTracking';
|
||||||
|
import { useAuthModal } from '@/hooks/useAuthModal';
|
||||||
|
|
||||||
export default function DesignerDetail() {
|
export default function DesignerDetail() {
|
||||||
const { slug } = useParams<{ slug: string }>();
|
const { slug } = useParams<{ slug: string }>();
|
||||||
@@ -31,6 +32,7 @@ export default function DesignerDetail() {
|
|||||||
const [statsLoading, setStatsLoading] = useState(true);
|
const [statsLoading, setStatsLoading] = useState(true);
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const { isModerator } = useUserRole();
|
const { isModerator } = useUserRole();
|
||||||
|
const { requireAuth } = useAuthModal();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (slug) {
|
if (slug) {
|
||||||
@@ -161,13 +163,7 @@ export default function DesignerDetail() {
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={() => {
|
onClick={() => requireAuth(() => setIsEditModalOpen(true), "Sign in to edit this designer")}
|
||||||
if (!user) {
|
|
||||||
navigate('/auth');
|
|
||||||
} else {
|
|
||||||
setIsEditModalOpen(true);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
<Edit className="w-4 h-4 mr-2" />
|
<Edit className="w-4 h-4 mr-2" />
|
||||||
Edit Designer
|
Edit Designer
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ export default function Designers() {
|
|||||||
|
|
||||||
const handleCreateSubmit = async (data: any) => {
|
const handleCreateSubmit = async (data: any) => {
|
||||||
try {
|
try {
|
||||||
if (!user) return;
|
|
||||||
await submitCompanyCreation(data, 'designer', user.id);
|
await submitCompanyCreation(data, 'designer', user.id);
|
||||||
toast({
|
toast({
|
||||||
title: "Designer Submitted",
|
title: "Designer Submitted",
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import { toast } from '@/hooks/use-toast';
|
|||||||
import { submitCompanyUpdate } from '@/lib/companyHelpers';
|
import { submitCompanyUpdate } from '@/lib/companyHelpers';
|
||||||
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
||||||
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
||||||
|
import { useAuthModal } from '@/hooks/useAuthModal';
|
||||||
|
|
||||||
export default function ManufacturerDetail() {
|
export default function ManufacturerDetail() {
|
||||||
const { slug } = useParams<{ slug: string }>();
|
const { slug } = useParams<{ slug: string }>();
|
||||||
@@ -32,6 +33,7 @@ export default function ManufacturerDetail() {
|
|||||||
const [statsLoading, setStatsLoading] = useState(true);
|
const [statsLoading, setStatsLoading] = useState(true);
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const { isModerator } = useUserRole();
|
const { isModerator } = useUserRole();
|
||||||
|
const { requireAuth } = useAuthModal();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (slug) {
|
if (slug) {
|
||||||
@@ -172,13 +174,7 @@ export default function ManufacturerDetail() {
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={() => {
|
onClick={() => requireAuth(() => setIsEditModalOpen(true), "Sign in to edit this manufacturer")}
|
||||||
if (!user) {
|
|
||||||
navigate('/auth');
|
|
||||||
} else {
|
|
||||||
setIsEditModalOpen(true);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
<Edit className="w-4 h-4 mr-2" />
|
<Edit className="w-4 h-4 mr-2" />
|
||||||
<span className="md:hidden">Edit</span>
|
<span className="md:hidden">Edit</span>
|
||||||
|
|||||||
@@ -68,8 +68,6 @@ export default function Manufacturers() {
|
|||||||
|
|
||||||
const handleCreateSubmit = async (data: any) => {
|
const handleCreateSubmit = async (data: any) => {
|
||||||
try {
|
try {
|
||||||
if (!user) return;
|
|
||||||
|
|
||||||
await submitCompanyCreation(
|
await submitCompanyCreation(
|
||||||
data,
|
data,
|
||||||
'manufacturer',
|
'manufacturer',
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import { toast } from '@/hooks/use-toast';
|
|||||||
import { submitCompanyUpdate } from '@/lib/companyHelpers';
|
import { submitCompanyUpdate } from '@/lib/companyHelpers';
|
||||||
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
||||||
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
||||||
|
import { useAuthModal } from '@/hooks/useAuthModal';
|
||||||
|
|
||||||
export default function OperatorDetail() {
|
export default function OperatorDetail() {
|
||||||
const { slug } = useParams<{ slug: string }>();
|
const { slug } = useParams<{ slug: string }>();
|
||||||
@@ -35,6 +36,7 @@ export default function OperatorDetail() {
|
|||||||
const [totalPhotos, setTotalPhotos] = useState<number>(0);
|
const [totalPhotos, setTotalPhotos] = useState<number>(0);
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const { isModerator } = useUserRole();
|
const { isModerator } = useUserRole();
|
||||||
|
const { requireAuth } = useAuthModal();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (slug) {
|
if (slug) {
|
||||||
@@ -206,13 +208,7 @@ export default function OperatorDetail() {
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={() => {
|
onClick={() => requireAuth(() => setIsEditModalOpen(true), "Sign in to edit this operator")}
|
||||||
if (!user) {
|
|
||||||
navigate('/auth');
|
|
||||||
} else {
|
|
||||||
setIsEditModalOpen(true);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
<Edit className="w-4 h-4 mr-2" />
|
<Edit className="w-4 h-4 mr-2" />
|
||||||
Edit Operator
|
Edit Operator
|
||||||
|
|||||||
@@ -61,8 +61,6 @@ const Operators = () => {
|
|||||||
|
|
||||||
const handleCreateSubmit = async (data: any) => {
|
const handleCreateSubmit = async (data: any) => {
|
||||||
try {
|
try {
|
||||||
if (!user) return;
|
|
||||||
|
|
||||||
await submitCompanyCreation(
|
await submitCompanyCreation(
|
||||||
data,
|
data,
|
||||||
'operator',
|
'operator',
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import { useUserRole } from '@/hooks/useUserRole';
|
|||||||
import { Edit } from 'lucide-react';
|
import { Edit } from 'lucide-react';
|
||||||
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
||||||
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
||||||
|
import { useAuthModal } from '@/hooks/useAuthModal';
|
||||||
|
|
||||||
export default function ParkDetail() {
|
export default function ParkDetail() {
|
||||||
const {
|
const {
|
||||||
@@ -33,6 +34,7 @@ export default function ParkDetail() {
|
|||||||
}>();
|
}>();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
|
const { requireAuth } = useAuthModal();
|
||||||
const [park, setPark] = useState<Park | null>(null);
|
const [park, setPark] = useState<Park | null>(null);
|
||||||
const [rides, setRides] = useState<Ride[]>([]);
|
const [rides, setRides] = useState<Ride[]>([]);
|
||||||
const [loading, setLoading] = useState(true);
|
const [loading, setLoading] = useState(true);
|
||||||
@@ -129,19 +131,7 @@ export default function ParkDetail() {
|
|||||||
return type.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
|
return type.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleAddRideClick = () => {
|
|
||||||
if (!user) {
|
|
||||||
navigate('/auth');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
setIsAddRideModalOpen(true);
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleRideSubmit = async (rideData: any) => {
|
const handleRideSubmit = async (rideData: any) => {
|
||||||
if (!user) {
|
|
||||||
navigate('/auth');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { submitRideCreation } = await import('@/lib/entitySubmissionHelpers');
|
const { submitRideCreation } = await import('@/lib/entitySubmissionHelpers');
|
||||||
@@ -168,13 +158,6 @@ export default function ParkDetail() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleEditParkClick = () => {
|
|
||||||
if (!user) {
|
|
||||||
navigate('/auth');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
setIsEditParkModalOpen(true);
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleEditParkSubmit = async (parkData: any) => {
|
const handleEditParkSubmit = async (parkData: any) => {
|
||||||
if (!user || !park) return;
|
if (!user || !park) return;
|
||||||
@@ -243,7 +226,7 @@ export default function ParkDetail() {
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={handleEditParkClick}
|
onClick={() => requireAuth(() => setIsEditParkModalOpen(true), "Sign in to edit this park")}
|
||||||
>
|
>
|
||||||
<Edit className="w-4 h-4 mr-2" />
|
<Edit className="w-4 h-4 mr-2" />
|
||||||
Edit Park
|
Edit Park
|
||||||
@@ -582,7 +565,7 @@ export default function ParkDetail() {
|
|||||||
{/* Header with Add Ride button */}
|
{/* Header with Add Ride button */}
|
||||||
<div className="flex items-center justify-between mb-6">
|
<div className="flex items-center justify-between mb-6">
|
||||||
<h2 className="text-2xl font-bold">Rides at {park.name}</h2>
|
<h2 className="text-2xl font-bold">Rides at {park.name}</h2>
|
||||||
<Button onClick={handleAddRideClick}>
|
<Button onClick={() => requireAuth(() => setIsAddRideModalOpen(true), "Sign in to add a ride")}>
|
||||||
<Plus className="w-4 h-4 mr-2" />
|
<Plus className="w-4 h-4 mr-2" />
|
||||||
Add Ride
|
Add Ride
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -61,8 +61,6 @@ const ParkOwners = () => {
|
|||||||
|
|
||||||
const handleCreateSubmit = async (data: any) => {
|
const handleCreateSubmit = async (data: any) => {
|
||||||
try {
|
try {
|
||||||
if (!user) return;
|
|
||||||
|
|
||||||
await submitCompanyCreation(
|
await submitCompanyCreation(
|
||||||
data,
|
data,
|
||||||
'property_owner',
|
'property_owner',
|
||||||
|
|||||||
@@ -115,13 +115,8 @@ export default function ParkRides() {
|
|||||||
|
|
||||||
const handleCreateSubmit = async (data: Omit<RideSubmissionData, 'park_id'> & { park_id?: string }) => {
|
const handleCreateSubmit = async (data: Omit<RideSubmissionData, 'park_id'> & { park_id?: string }) => {
|
||||||
try {
|
try {
|
||||||
if (!user) {
|
|
||||||
navigate('/auth');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Pre-fill park_id in the submission
|
// Pre-fill park_id in the submission
|
||||||
const submissionData = {
|
const submissionData = {
|
||||||
...data,
|
...data,
|
||||||
park_id: park.id,
|
park_id: park.id,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -238,8 +238,6 @@ export default function Parks() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleParkSubmit = async (parkData: any) => {
|
const handleParkSubmit = async (parkData: any) => {
|
||||||
if (!user) return;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const { submitParkCreation } = await import('@/lib/entitySubmissionHelpers');
|
const { submitParkCreation } = await import('@/lib/entitySubmissionHelpers');
|
||||||
await submitParkCreation(parkData, user.id);
|
await submitParkCreation(parkData, user.id);
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import { toast } from '@/hooks/use-toast';
|
|||||||
import { submitCompanyUpdate } from '@/lib/companyHelpers';
|
import { submitCompanyUpdate } from '@/lib/companyHelpers';
|
||||||
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
||||||
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
||||||
|
import { useAuthModal } from '@/hooks/useAuthModal';
|
||||||
|
|
||||||
export default function PropertyOwnerDetail() {
|
export default function PropertyOwnerDetail() {
|
||||||
const { slug } = useParams<{ slug: string }>();
|
const { slug } = useParams<{ slug: string }>();
|
||||||
@@ -35,6 +36,7 @@ export default function PropertyOwnerDetail() {
|
|||||||
const [totalPhotos, setTotalPhotos] = useState<number>(0);
|
const [totalPhotos, setTotalPhotos] = useState<number>(0);
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const { isModerator } = useUserRole();
|
const { isModerator } = useUserRole();
|
||||||
|
const { requireAuth } = useAuthModal();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (slug) {
|
if (slug) {
|
||||||
@@ -206,13 +208,7 @@ export default function PropertyOwnerDetail() {
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={() => {
|
onClick={() => requireAuth(() => setIsEditModalOpen(true), "Sign in to edit this property owner")}
|
||||||
if (!user) {
|
|
||||||
navigate('/auth');
|
|
||||||
} else {
|
|
||||||
setIsEditModalOpen(true);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
<Edit className="w-4 h-4 mr-2" />
|
<Edit className="w-4 h-4 mr-2" />
|
||||||
Edit Property Owner
|
Edit Property Owner
|
||||||
|
|||||||
@@ -47,12 +47,14 @@ import { useUserRole } from '@/hooks/useUserRole';
|
|||||||
import { toast } from '@/hooks/use-toast';
|
import { toast } from '@/hooks/use-toast';
|
||||||
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
import { VersionIndicator } from '@/components/versioning/VersionIndicator';
|
||||||
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
import { EntityHistoryTabs } from '@/components/history/EntityHistoryTabs';
|
||||||
|
import { useAuthModal } from '@/hooks/useAuthModal';
|
||||||
|
|
||||||
export default function RideDetail() {
|
export default function RideDetail() {
|
||||||
const { parkSlug, rideSlug } = useParams<{ parkSlug: string; rideSlug: string }>();
|
const { parkSlug, rideSlug } = useParams<{ parkSlug: string; rideSlug: string }>();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const { isModerator } = useUserRole();
|
const { isModerator } = useUserRole();
|
||||||
|
const { requireAuth } = useAuthModal();
|
||||||
const [ride, setRide] = useState<Ride | null>(null);
|
const [ride, setRide] = useState<Ride | null>(null);
|
||||||
const [loading, setLoading] = useState(true);
|
const [loading, setLoading] = useState(true);
|
||||||
const [activeTab, setActiveTab] = useState("overview");
|
const [activeTab, setActiveTab] = useState("overview");
|
||||||
@@ -233,13 +235,7 @@ export default function RideDetail() {
|
|||||||
|
|
||||||
<Button
|
<Button
|
||||||
variant="outline"
|
variant="outline"
|
||||||
onClick={() => {
|
onClick={() => requireAuth(() => setIsEditModalOpen(true), "Sign in to edit this ride")}
|
||||||
if (!user) {
|
|
||||||
navigate('/auth');
|
|
||||||
} else {
|
|
||||||
setIsEditModalOpen(true);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
<Edit className="w-4 h-4 mr-2" />
|
<Edit className="w-4 h-4 mr-2" />
|
||||||
Edit Ride
|
Edit Ride
|
||||||
|
|||||||
@@ -80,8 +80,6 @@ export default function Rides() {
|
|||||||
|
|
||||||
const handleCreateSubmit = async (data: any) => {
|
const handleCreateSubmit = async (data: any) => {
|
||||||
try {
|
try {
|
||||||
if (!user) return;
|
|
||||||
|
|
||||||
const { submitRideCreation } = await import('@/lib/entitySubmissionHelpers');
|
const { submitRideCreation } = await import('@/lib/entitySubmissionHelpers');
|
||||||
await submitRideCreation(data, user.id);
|
await submitRideCreation(data, user.id);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user