import Button from "@/components/Button"; import Card, { CardContent, CardHeader } from "@/components/Card"; import { spcApi } from "@/lib/api"; import { useSettingsStore } from "@/store/optionsStore"; import { useEffect, useState } from "@wordpress/element"; import { __ } from "@wordpress/i18n"; import { Ban, BrushCleaning, RefreshCcw, AlertCircle } from "lucide-react"; const ActivityLog = () => { const { isToggleOn } = useSettingsStore(); const [loading, setLoading] = useState(true); const [error, setError] = useState(false); const [logs, setLogs] = useState([]); const { logViewURL } = window.SPCDash; const isLogEnabled = isToggleOn('log_enabled'); const fetchLogs = async () => { setError(false); setLoading(true); setLogs([]); const result = await spcApi.getLogs(); if (!result.success) { setLoading(false); setError(true); return; } setLogs(result.data as any[]); setLoading(false); }; useEffect(() => { if (isLogEnabled) { fetchLogs(); } else { setLoading(false); } }, [isLogEnabled]); const secondsToReadable = (seconds: number) => { if (seconds < 60) { return `${seconds}s`; } const minutes = Math.floor(seconds / 60); if (minutes < 60) { return `${minutes}m`; } const hours = Math.floor(minutes / 60); if (hours < 24) { return `${hours}h`; } const days = Math.floor(hours / 24); return `${days}d`; }; const refreshLogs = () => { fetchLogs(); }; return (

{__('Activity Log', 'wp-cloudflare-page-cache')}

{isLogEnabled && (
)}
{!isLogEnabled && (

{__('Activity logging is currently not enabled.', 'wp-cloudflare-page-cache')}

)} {isLogEnabled && loading && ( Array.from({ length: 20 }).map((_, idx) => (
)) )} {isLogEnabled && (!loading && logs.length > 0) && logs.map((log, idx) => (
{log.message}
{secondsToReadable(log.seconds_ago)} ago
))} {isLogEnabled && (!loading && logs.length === 0 && !error) && (

{__('No logs found', 'wp-cloudflare-page-cache')}

{__('The activity log will appear here once you start using the plugin.', 'wp-cloudflare-page-cache')}

)} {isLogEnabled && (!loading && error) && (

{__('Error fetching logs', 'wp-cloudflare-page-cache')}

{__('An error occurred while fetching the activity log. Please try again later.', 'wp-cloudflare-page-cache')}

)} ) }; export default ActivityLog;