/* 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 (