import { useState } from 'react'; import { useStatsQuery, useSetRunningMutation } from '../api/queries.js'; import { ConfirmationDialog } from '../components/confirmation-dialog.js'; import { useSyncStatusQuery } from '../features/operations/operations-queries.js'; import { useLoginStatusQuery } from '../features/settings/settings-queries.js'; import { useDashboardRealtime } from './realtime-provider.js'; import { deriveShellStatus } from './shell-status.js'; import './shell-status-panel.css'; export function ShellStatusPanel() { const stats = useStatsQuery(); const reddit = useLoginStatusQuery(); const sync = useSyncStatusQuery(); const realtime = useDashboardRealtime(); const control = useSetRunningMutation(); const [confirming, setConfirming] = useState<'start' | 'stop' | null>(null); const status = deriveShellStatus({ stats: stats.data, reddit: reddit.data, sync: sync.data, realtime: realtime.connection }); return <>
{status.bot}{status.reddit}{status.realtime}{status.sync} {status.cooldown ? Cooldown: {status.cooldown} : null}
{confirming ? setConfirming(null)} onConfirm={() => control.mutate(confirming === 'start', { onSuccess: () => setConfirming(null) })} /> : null} ; }