/* eslint-disable react/destructuring-assignment */ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable react-hooks/rules-of-hooks */ import { shell } from 'electron'; import React, { useCallback, useContext } from 'react'; import { Button, Text, Icon, Position, Tooltip } from '@blueprintjs/core'; import { createStyles, makeStyles } from '@material-ui/core/styles'; import { Col, Row } from 'react-flexbox-grid'; import { useTranslation } from 'react-i18next'; import SettingsOverlay from './SettingsOverlay/SettingsOverlay'; import ConnectedDevicesListDrawer from './ConnectedDevicesListDrawer'; import { SettingsContext } from '../containers/SettingsProvider'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore fine import here import RedHeartTwemojiPNG from '../images/red_heart_2764_twemoji_120x120.png'; const useStylesWithTheme = (isDarkTheme: boolean) => makeStyles(() => createStyles({ topPanelRoot: { display: 'flex', paddingTop: '15px', marginBottom: '20px', }, logoWithAppName: { margin: '0 auto' }, appNameHeader: { margin: '0 auto', paddingTop: '5px', fontFamily: 'Lexend Peta', fontSize: '20px', color: isDarkTheme ? '#48AFF0' : '#1F4B99', cursor: 'default !important', }, topPanelControlButtonsRoot: { position: 'absolute', right: '15px', display: 'flex', }, topPanelControlButton: { width: '40px', height: '40px', borderRadius: '50px', cursor: 'default !important', }, topPanelControlButtonMargin: { marginRight: '20px', cursor: 'default !important', }, topPanelIconOfControlButton: { cursor: 'default !important', }, }) ); export default function TopPanel(props: any) { const { t } = useTranslation(); const { isDarkTheme } = useContext(SettingsContext); const getClassesCallback = useCallback(() => { return useStylesWithTheme(isDarkTheme)(); }, [isDarkTheme]); const [isSettingsOpen, setIsSettingsOpen] = React.useState(false); const [ isConnectedDevicesDrawerOpen, setIsConnectedDevicesDrawerOpen, ] = React.useState(false); const handleSettingsOpen = useCallback(() => { setIsSettingsOpen(true); }, []); const handleSettingsClose = useCallback(() => { setIsSettingsOpen(false); }, []); const handleToggleConnectedDevicesListDrawer = useCallback(() => { setIsConnectedDevicesDrawerOpen(!isConnectedDevicesDrawerOpen); }, [isConnectedDevicesDrawerOpen]); const donateTooltipContent = t( 'If you like Deskreen consider contributing financially Deskreen is open-source Your donations keep us motivated to make Deskreen even better' ); const deskreenButtonTooltip = t('Click to visit our website'); const renderDonateButton = useCallback(() => { return ( ); }, [donateTooltipContent, t]); const renderConnectedDevicesListButton = useCallback(() => { return (
); }, [getClassesCallback, handleToggleConnectedDevicesListDrawer, t]); const renderHelpButton = useCallback(() => { return (
); }, [getClassesCallback, t]); const renderSettingsButton = useCallback(() => { return (
); }, [getClassesCallback, handleSettingsOpen, t]); const renderLogoWithAppName = useCallback(() => { return (
); }, [deskreenButtonTooltip, getClassesCallback]); return ( <>
{renderDonateButton()} {renderLogoWithAppName()}
{renderConnectedDevicesListButton()} {renderHelpButton()} {renderSettingsButton()}
{isSettingsOpen ? ( ) : ( <> )} {isConnectedDevicesDrawerOpen ? ( ) : ( <> )} ); }