import { FC, useEffect } from 'react'; import { FaCheckCircle, FaExclamationTriangle, FaTimes } from 'react-icons/fa'; import { LocalizeText } from '../../api'; import { useHousekeepingStore } from '../../hooks'; const localizeOrPassthrough = (key: string | null): string => { if(!key) return ''; if(!key.includes('.')) return key; const localized = LocalizeText(key); return (localized === key) ? key : localized; }; const AUTO_DISMISS_MS = 4000; export const HousekeepingStatusBanner: FC = () => { const { lastError, lastSuccess, clearStatus, isActionPending } = useHousekeepingStore(); const visible = !!(lastError || lastSuccess); useEffect(() => { if(!lastSuccess) return; const handle = window.setTimeout(() => clearStatus(), AUTO_DISMISS_MS); return () => window.clearTimeout(handle); }, [ lastSuccess, clearStatus ]); if(!visible && !isActionPending) return null; if(isActionPending && !visible) { return (