Current File : /home/jeconsul/public_html/wp-content/plugins/suremails/src/screens/dashboard/dashboard.js
// src/screens/Dashboard/Dashboard.js
import { Chart } from './chart';
import RecommendedPlugins from '@screens/dashboard/recommended-plugins';
import { QuickAccess } from './quick-access';
import RecentLogs from './recent-logs';
import DashboardSkeleton from './dashboard-skeleton';
import apiFetch from '@wordpress/api-fetch';
import { useQuery } from '@tanstack/react-query';
import { useCallback } from '@wordpress/element';
import AuthCodeDisplay from '@components/auth-code-display/auth-code-display';
import Welcome from './welcome';
const Dashboard = () => {
	const restApiNonce = window.suremails?.nonce;
	const fetchData = useCallback( () => {
		return apiFetch( {
			path: '/suremails/v1/dashboard-data',
			method: 'GET',
			headers: {
				'X-WP-Nonce': restApiNonce,
			},
		} );
	}, [] );

	const { isLoading, data } = useQuery( {
		queryKey: [ 'dashboard-data' ],
		queryFn: fetchData,
		refetchInterval: 100000, // Refetch every 10 minutes
		refetchOnReconnect: true,
	} );

	// Show skeleton if loading
	if ( isLoading ) {
		return <DashboardSkeleton />;
	}
	// Determine if there are connections based on total_connections
	const hasConnections =
		typeof data?.total_connections === 'number'
			? data.total_connections > 0
			: false;
	return (
		<>
			<AuthCodeDisplay />
			<div className="grid w-full grid-cols-12 gap-6 p-8">
				{ /* Left Column: Chart and Recent Logs (Spans 2/3 of the space) */ }
				<div className="flex flex-col w-full col-span-12 space-y-8 lg:col-span-8">
					{ ! hasConnections ? (
						<div className="w-full h-full border-0.5 border-solid shadow-sm rounded-xl bg-background-primary border-border-subtle">
							<Welcome />
						</div>
					) : (
						<>
							{ /* Chart Card */ }
							<div className="w-full h-auto border-0.5 border-solid shadow-sm rounded-xl bg-background-primary border-border-subtle">
								<Chart
									totalSent={ data.total_sent }
									totalFailed={ data.total_failed }
									chartData={ data.chart_data }
									hasConnections={ 1 }
								/>
							</div>

							{ /* Recent Logs Card */ }
							<div className="w-full h-auto p-4 space-y-2 border-[.5px] border-border-subtle border-solid shadow-sm bg-background-primary rounded-xl">
								<RecentLogs
									recentLogs={ data.recent_logs }
									hasConnections={ 1 }
								/>
							</div>
						</>
					) }
				</div>

				{ /* Right Column: Recommended Plugins and Quick Access (Spans 1/3 of the space) */ }
				<div className="flex flex-col col-span-12 gap-1 space-y-7 lg:col-span-4">
					{ /* Recommended Plugins Card */ }
					<div className="h-auto shadow-sm bg-background-primary rounded-xl">
						<RecommendedPlugins />
					</div>

					{ /* Quick Access Card */ }
					<div className="w-full h-auto bg-background-primary rounded-xl">
						<QuickAccess />
					</div>
				</div>
			</div>
		</>
	);
};

export default Dashboard;