import { Refresh, Search } from '@mui/icons-material'; import { AppBar, Box, LinearProgress, Toolbar, Tooltip, Typography, } from '@mui/material'; import IconButton from '@mui/material/IconButton'; import { useState } from 'react'; import { Link } from 'react-router-dom'; import { fetchData } from '../apiUtil'; import SearchState from '../data/SearchState'; import ServerData from '../data/ServerData'; import AddServer from './AddServer'; import { AlertResponse } from './Alert'; import SearchServers from './SearchServers'; export default function Header({ setAlertInfo, servers, setServers, searchState, setSearchState, }: { setAlertInfo: React.Dispatch>; servers: ServerData[]; setServers: React.Dispatch>; searchState: SearchState; setSearchState: React.Dispatch>; }) { const [fetchLoading, setFetchLoading] = useState(0); const [showSearchServer, setShowSearchServer] = useState(false); const toggleShowSearchServer = () => { setShowSearchServer((prev) => !prev); }; const fetchServerData = async () => { let data: ServerData[] = []; try { setFetchLoading(25); data = await fetchData(); } catch (err) { if (err instanceof Error) { setAlertInfo({ message: err.message, severity: 'error', }); } else { setAlertInfo({ message: 'An unknown error occurred.', severity: 'error', }); } } setServers(data); setFetchLoading(100); setTimeout(() => { setFetchLoading(0); }, 500); }; return ( IXION ); }