/** * @ai-summary Mobile admin screen for community station reviews */ import React, { useState } from 'react'; import { Navigate } from 'react-router-dom'; import { Box, Select, MenuItem, FormControl, InputLabel, } from '@mui/material'; import { MobileContainer } from '../../../shared-minimal/components/mobile/MobileContainer'; import { useAdminAccess } from '../../../core/auth/useAdminAccess'; import { CommunityStationReviewQueue } from '../components/CommunityStationReviewQueue'; import { CommunityStationsList } from '../../stations/components/CommunityStationsList'; import { usePendingSubmissions, useAllCommunitySubmissions, useReviewStation, } from '../../stations/hooks/useCommunityStations'; import toast from 'react-hot-toast'; type TabType = 'pending' | 'all'; /** * Mobile admin screen for reviewing community station submissions * Touch-friendly layout with tab navigation */ export const AdminCommunityStationsMobileScreen: React.FC = () => { const { isAdmin, loading } = useAdminAccess(); const [activeTab, setActiveTab] = useState('pending'); const [statusFilter, setStatusFilter] = useState(''); const [page, setPage] = useState(0); // Hooks const pendingSubmissions = usePendingSubmissions(page, 20); const allSubmissions = useAllCommunitySubmissions(statusFilter || undefined, page, 20); const reviewMutation = useReviewStation(); if (loading) { return (
Loading admin access...
); } if (!isAdmin) { return ; } // Handle approval const handleApprove = async (id: string) => { try { await reviewMutation.mutateAsync({ id, decision: { status: 'approved' }, }); toast.success('Station approved'); } catch (error: any) { toast.error(error?.response?.data?.message || 'Failed to approve station'); } }; // Handle rejection const handleReject = async (id: string, reason: string) => { try { await reviewMutation.mutateAsync({ id, decision: { status: 'rejected', rejectionReason: reason }, }); toast.success('Station rejected'); } catch (error: any) { toast.error(error?.response?.data?.message || 'Failed to reject station'); } }; const displayData = activeTab === 'pending' ? pendingSubmissions : allSubmissions; const stations = displayData.data?.stations || []; const totalPages = displayData.data?.total ? Math.ceil(displayData.data.total / 20) : 1; return (
{/* Header */}

Community Station Reviews

Review user-submitted gas stations

{/* Tab navigation */} {/* Status filter for all tab */} {activeTab === 'all' && ( Filter by Status )} {/* Content */} {activeTab === 'pending' ? ( ) : ( )}
); }; export default AdminCommunityStationsMobileScreen;