import { useEffect, useState, useCallback } from 'react'; import { FiSun, FiMoon, FiDownload, FiGrid, FiZap } from 'react-icons/fi'; import Messenger from '../random-text'; const Footer = ({ setCurrentMatrix }) => { const [theme, setTheme] = useState('dark'), [matrix, setMatrix] = useState('off'), [served, setServed] = useState({ served: 0, lastscan: 0, server: 0, instances: 0, peers: 0, created: 0, updated: 0 }), toggleLoader = useCallback(() => { const loader = document.querySelector('.loader-content') if (loader) { loader.style.display = 'initial' setTimeout(() => { loader.style.display = 'none' }, 60 * 1000) } }, []), toggleTheme = useCallback(() => { setTheme(prev => (prev === 'light' ? 'dark' : 'light')) }, []), refreshServed = useCallback(async () => { try { const response = await fetch('/api/served') if (response.ok) { setServed(await response.json()) } } catch (e) { console.error(e) } }, []), toggleMatrix = useCallback(() => { setMatrix(prev => { const next = prev === 'off' ? 'on' : 'off' setCurrentMatrix(next) return next }) }, [setCurrentMatrix]) useEffect(() => { document.documentElement.dataset.theme = theme }, [theme]) useEffect(() => { refreshServed() }, [refreshServed]) useEffect(() => { if (matrix === 'on') { const root = document.getElementById('root') if (root) { const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT) while (walker.nextNode()) { if (walker.currentNode.textContent.length > 1) { new Messenger(walker.currentNode) } } } } }, [matrix]) return ( ) } export default Footer;