MotorSignal-App/website/app/group-rides/page.tsx

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')}
/>
);
}