41 lines
849 B
TypeScript
Raw Normal View History

2021-06-29 16:14:27 +10:00
import React from 'react';
import { List, ListItem, ListItemText } from '@material-ui/core';
2021-06-29 15:46:07 +10:00
/**
* Clear text message
*/
2021-06-18 10:04:38 +10:00
export interface Message {
text: string;
timestamp: Date;
}
export interface Props {
messages: Message[];
}
2021-06-29 16:14:27 +10:00
export default function Messages({ messages }: Props) {
return <List dense={true}>{generate(messages)}</List>;
}
function generate(messages: Message[]) {
return messages.map((msg) => {
const text = `<${formatDisplayDate(msg.timestamp)}> ${msg.text}`;
2021-06-18 10:04:38 +10:00
return (
2021-06-29 16:14:27 +10:00
<ListItem>
<ListItemText key={formatDisplayDate(msg.timestamp)} primary={text} />
</ListItem>
2021-06-18 10:04:38 +10:00
);
});
}
function formatDisplayDate(timestamp: Date): string {
return timestamp.toLocaleString([], {
month: 'short',
day: 'numeric',
hour: 'numeric',
minute: '2-digit',
hour12: false,
});
}