59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
'use client';
|
|
|
|
import React, { useState, useEffect } from 'react';
|
|
import { onAuthStateChanged, User } from 'firebase/auth';
|
|
import { firebaseAuth } from '../../lib/firebase-client';
|
|
import { GroupRidesShowcase } from '../../components/group-rides/group-rides-showcase';
|
|
import { GroupRidesManagement } from '../../components/group-rides/group-rides-management';
|
|
|
|
export default function GroupRidesPage() {
|
|
const [currentUser, setCurrentUser] = useState<User | null>(firebaseAuth?.currentUser ?? null);
|
|
const [viewOverride, setViewOverride] = useState<'showcase' | 'manage' | null>(null);
|
|
|
|
useEffect(() => {
|
|
// Check URL parameters for explicit view overrides (?view=showcase or ?view=manage)
|
|
if (typeof window !== 'undefined') {
|
|
const params = new URLSearchParams(window.location.search);
|
|
const view = params.get('view');
|
|
if (view === 'showcase' || view === 'manage') {
|
|
setViewOverride(view);
|
|
}
|
|
}
|
|
|
|
const unsubscribe = onAuthStateChanged(firebaseAuth, (user) => {
|
|
setCurrentUser(user);
|
|
});
|
|
|
|
return () => unsubscribe();
|
|
}, []);
|
|
|
|
// If explicit showcase view requested
|
|
if (viewOverride === 'showcase') {
|
|
return (
|
|
<GroupRidesShowcase
|
|
isLoggedIn={Boolean(currentUser)}
|
|
userEmail={currentUser?.email}
|
|
onGoToManagement={() => setViewOverride('manage')}
|
|
/>
|
|
);
|
|
}
|
|
|
|
// If user is authenticated: render Group Rides Management Console
|
|
if (currentUser) {
|
|
return (
|
|
<GroupRidesManagement
|
|
currentUser={currentUser}
|
|
onViewShowcase={() => setViewOverride('showcase')}
|
|
/>
|
|
);
|
|
}
|
|
|
|
// If user is not authenticated: render Group Rides Feature Showcase Page
|
|
return (
|
|
<GroupRidesShowcase
|
|
isLoggedIn={false}
|
|
onGoToManagement={() => setViewOverride('manage')}
|
|
/>
|
|
);
|
|
}
|