Compare commits

...

1 Commits

Author SHA1 Message Date
Tom Moor b440e07c03 wip 2020-12-21 19:23:52 -08:00
+35 -33
View File
@@ -3,6 +3,7 @@ import distanceInWordsToNow from "date-fns/distance_in_words_to_now";
import format from "date-fns/format"; import format from "date-fns/format";
import * as React from "react"; import * as React from "react";
import Tooltip from "components/Tooltip"; import Tooltip from "components/Tooltip";
import useStores from "hooks/useStores";
let callbacks = []; let callbacks = [];
@@ -28,44 +29,45 @@ type Props = {
shorten?: boolean, shorten?: boolean,
}; };
class Time extends React.Component<Props> { function Time(props: Props) {
removeEachMinuteCallback: () => void; const { auth } = useStores();
const [_, setMinutesMounted] = React.useState(0); // eslint-disable-line no-unused-vars
const callback = React.useRef();
componentDidMount() { React.useEffect(() => {
this.removeEachMinuteCallback = eachMinute(() => { callback.current = eachMinute(() => {
this.forceUpdate(); setMinutesMounted((state) => ++state);
});
}
componentWillUnmount() {
this.removeEachMinuteCallback();
}
render() {
const { shorten, addSuffix } = this.props;
let content = distanceInWordsToNow(this.props.dateTime, {
addSuffix,
}); });
if (shorten) { return () => {
content = content if (callback.current) {
.replace("about", "") callback.current();
.replace("less than a minute ago", "just now") }
.replace("minute", "min"); };
} }, []);
return ( const { shorten, addSuffix } = props;
<Tooltip let content = distanceInWordsToNow(props.dateTime, {
tooltip={format(this.props.dateTime, "MMMM Do, YYYY h:mm a")} addSuffix,
delay={this.props.tooltipDelay} locale: auth.user ? auth.user.language : undefined,
placement="bottom" });
>
<time dateTime={this.props.dateTime}> if (shorten) {
{this.props.children || content} content = content
</time> .replace("about", "")
</Tooltip> .replace("less than a minute ago", "just now")
); .replace("minute", "min");
} }
return (
<Tooltip
tooltip={format(props.dateTime, "MMMM Do, YYYY h:mm a")}
delay={props.tooltipDelay}
placement="bottom"
>
<time dateTime={props.dateTime}>{props.children || content}</time>
</Tooltip>
);
} }
export default Time; export default Time;