2021-11-05 16:39:42 +01:00
|
|
|
import { useEffect, useState } from 'react';
|
|
|
|
import { Link } from 'react-router-dom';
|
2021-11-09 14:33:51 +01:00
|
|
|
|
2021-11-18 16:03:44 +01:00
|
|
|
// Redux
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
import { State } from '../../../store/reducers';
|
|
|
|
|
2021-11-09 14:33:51 +01:00
|
|
|
// CSS
|
2021-11-05 16:39:42 +01:00
|
|
|
import classes from './Header.module.css';
|
|
|
|
|
2021-11-09 14:33:51 +01:00
|
|
|
// Components
|
|
|
|
import { WeatherWidget } from '../../Widgets/WeatherWidget/WeatherWidget';
|
2021-11-05 16:39:42 +01:00
|
|
|
|
2021-11-09 14:33:51 +01:00
|
|
|
// Utils
|
|
|
|
import { getDateTime } from './functions/getDateTime';
|
|
|
|
import { greeter } from './functions/greeter';
|
|
|
|
|
|
|
|
export const Header = (): JSX.Element => {
|
2021-11-18 16:03:44 +01:00
|
|
|
const { hideHeader, hideDate, showTime } = useSelector(
|
|
|
|
(state: State) => state.config.config
|
|
|
|
);
|
|
|
|
|
2021-11-05 16:39:42 +01:00
|
|
|
const [dateTime, setDateTime] = useState<string>(getDateTime());
|
|
|
|
const [greeting, setGreeting] = useState<string>(greeter());
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
let dateTimeInterval: NodeJS.Timeout;
|
|
|
|
|
|
|
|
dateTimeInterval = setInterval(() => {
|
|
|
|
setDateTime(getDateTime());
|
|
|
|
setGreeting(greeter());
|
|
|
|
}, 1000);
|
|
|
|
|
|
|
|
return () => window.clearInterval(dateTimeInterval);
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<header className={classes.Header}>
|
2021-11-18 16:03:44 +01:00
|
|
|
{(!hideDate || showTime) && <p>{dateTime}</p>}
|
|
|
|
|
2021-11-05 16:39:42 +01:00
|
|
|
<Link to="/settings" className={classes.SettingsLink}>
|
|
|
|
Go to Settings
|
|
|
|
</Link>
|
2021-11-18 16:03:44 +01:00
|
|
|
|
|
|
|
{!hideHeader && (
|
|
|
|
<span className={classes.HeaderMain}>
|
|
|
|
<h1>{greeting}</h1>
|
|
|
|
<WeatherWidget />
|
|
|
|
</span>
|
|
|
|
)}
|
2021-11-05 16:39:42 +01:00
|
|
|
</header>
|
|
|
|
);
|
|
|
|
};
|