import { faBars, faHeart, faNetworkWired, faUser, } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import React, { FunctionComponent, useCallback, useContext, useMemo, useState, } from "react"; import { Button, Col, Container, Dropdown, Image, Navbar, Row, } from "react-bootstrap"; import { SidebarToggleContext } from "."; import { siteRedirectToAuth } from "../@redux/actions"; import { useSystemSettings } from "../@redux/hooks"; import { useReduxAction } from "../@redux/hooks/base"; import { useIsOffline } from "../@redux/hooks/site"; import logo from "../@static/logo64.png"; import { SystemApi } from "../apis"; import { ActionButton, SearchBar, SearchResult } from "../components"; import { useBaseUrl } from "../utilites"; import "./header.scss"; async function SearchItem(text: string) { const results = await SystemApi.search(text); return results.map((v) => { let link: string; if (v.sonarrSeriesId) { link = `/series/${v.sonarrSeriesId}`; } else if (v.radarrId) { link = `/movies/${v.radarrId}`; } else { link = ""; } return { name: `${v.title} (${v.year})`, link, }; }); } interface Props {} const Header: FunctionComponent = () => { const setNeedAuth = useReduxAction(siteRedirectToAuth); const [settings] = useSystemSettings(); const canLogout = (settings.data?.auth.type ?? "none") !== "none"; const toggleSidebar = useContext(SidebarToggleContext); const offline = useIsOffline(); const dropdown = useMemo( () => ( { SystemApi.restart(); }} > Restart { SystemApi.shutdown(); }} > Shutdown ), [canLogout, setNeedAuth] ); const [reconnecting, setReconnect] = useState(false); const reconnect = useCallback(() => { setReconnect(true); SystemApi.status().finally(() => setReconnect(false)); }, []); const baseUrl = useBaseUrl(); return (
brand
{offline ? ( Reconnect ) : ( dropdown )}
); }; export default Header;