humus-old/client/ui/menu/world-time.js

43 lines
981 B
JavaScript
Raw Normal View History

2019-04-12 11:04:59 -05:00
// 3rd party.
import React, {useEffect, useState} from 'react';
// 2nd party.
import {compose} from '@avocado/core';
import contempo from 'contempo';
// 1st party.
2019-04-21 19:27:58 -05:00
import {WorldTime} from '../../../common/world-time';
2019-04-12 11:04:59 -05:00
const decorate = compose(
contempo(`
.time {
background-color: rgba(0, 0, 0, .3);
border: 0.5px solid gray;
border-radius: 50px;
color: white;
position: absolute;
top: 5px;
right: 5px;
line-height: 1em;
padding: 0.5em;
font-family: monospace;
2019-04-21 01:34:50 -05:00
font-size: 0.5em;
text-shadow: 0.5px 0.5px 0px black;
2019-04-12 11:04:59 -05:00
}
`),
);
2019-04-13 16:35:44 -05:00
const WorldTimeComponent = ({worldTime}) => {
2019-04-12 11:04:59 -05:00
const [time, setTime] = useState('--:-- --');
useEffect(() => {
2019-04-13 16:35:44 -05:00
const updater = () => {
setTime(WorldTime.format(worldTime.hour));
2019-04-12 11:04:59 -05:00
};
2019-04-13 16:35:44 -05:00
worldTime.ticker.on('tick', updater);
2019-04-12 11:04:59 -05:00
return () => {
2019-04-13 16:35:44 -05:00
worldTime.ticker.off('tick', updater);
2019-04-12 11:04:59 -05:00
};
}, []);
return <div className="time unselectable">{time}</div>;
}
export default decorate(WorldTimeComponent);