-import { Option } from "@sniptt/monads";
import { Component } from "inferno";
import moment from "moment";
import { i18n } from "../../i18next";
-import { capitalizeFirstLetter, getLanguages } from "../../utils";
+import { capitalizeFirstLetter } from "../../utils";
import { Icon } from "./icon";
interface MomentTimeProps {
published: string;
- updated: Option<string>;
+ updated?: string;
showAgo?: boolean;
ignoreUpdated?: boolean;
}
constructor(props: any, context: any) {
super(props, context);
- let lang = getLanguages();
-
- moment.locale(lang);
+ moment.locale([...i18n.languages]);
}
createdAndModifiedTimes() {
- return `${capitalizeFirstLetter(i18n.t("created"))}: ${this.format(
+ const updated = this.props.updated;
+ let line = `${capitalizeFirstLetter(i18n.t("created"))}: ${this.format(
this.props.published
- )}\n\n\n${
- this.props.updated.isSome() && capitalizeFirstLetter(i18n.t("modified"))
- } ${this.format(this.props.updated.unwrap())}`;
+ )}`;
+ if (updated) {
+ line += `\n\n\n${capitalizeFirstLetter(i18n.t("modified"))} ${this.format(
+ updated
+ )}`;
+ }
+ return line;
}
render() {
- if (!this.props.ignoreUpdated && this.props.updated.isSome()) {
+ if (!this.props.ignoreUpdated && this.props.updated) {
return (
<span
data-tippy-content={this.createdAndModifiedTimes()}
- className="font-italics pointer unselectable"
+ className="moment-time font-italics pointer unselectable"
>
- <Icon icon="edit-2" classes="icon-inline mr-1" />
- {moment.utc(this.props.updated.unwrap()).fromNow(!this.props.showAgo)}
+ <Icon icon="edit-2" classes="icon-inline me-1" />
+ {moment.utc(this.props.updated).fromNow(!this.props.showAgo)}
</span>
);
} else {
- let published = this.props.published;
+ const published = this.props.published;
return (
<span
- className="pointer unselectable"
+ className="moment-time pointer unselectable"
data-tippy-content={this.format(published)}
>
{moment.utc(published).fromNow(!this.props.showAgo)}