import React, { useState, useEffect } from 'react'; import { useAppStore } from '../../store'; import { ProjectSelector } from '../ProjectSelector'; import { getRendererPicoTheme } from '../../utils/picoTheme'; import { useI18n, type UiLanguage } from '../../i18n'; import './StatusBar.css'; const UI_LANGUAGE_LABEL_KEYS: Record = { en: 'settings.language.english', de: 'settings.language.german', fr: 'settings.language.french', it: 'settings.language.italian', es: 'settings.language.spanish', }; export const StatusBar: React.FC = () => { const { language, setLanguage, supportedLanguages, t } = useI18n(); const { media, tasks, selectedPostId, totalPosts, picoTheme, } = useAppStore(); const [selectedPostStatus, setSelectedPostStatus] = useState(null); // Fetch selected post status from database useEffect(() => { if (!selectedPostId) { setSelectedPostStatus(null); return; } window.electronAPI?.posts.get(selectedPostId).then(post => { setSelectedPostStatus(post?.status || null); }); }, [selectedPostId]); const runningTasks = tasks.filter(t => t.status === 'running'); const activeTheme = getRendererPicoTheme(picoTheme); return (
{/* Project Selector */} {/* Running Tasks */} {runningTasks.length > 0 && (
{runningTasks[0].message} {runningTasks.length > 1 && ( +{runningTasks.length - 1} more )}
)}
{/* Current Post Info */} {selectedPostStatus && (
{selectedPostStatus}
)} {/* Stats */}
{t('statusBar.posts', { count: totalPosts })}
{t('statusBar.media', { count: media.length })}
{t('statusBar.theme', { theme: activeTheme })}
{t('statusBar.ui')}
{/* App Name */}
bDS
); };