Newer
Older
import React, { Component } from "react";
import PropTypes from "prop-types";
import styles from "../assets/stylesheets/presence-log.scss";
import classNames from "classnames";
import { FormattedMessage } from "react-intl";
import ChatMessage from "./chat-message";
import PhotoMessage from "./photo-message";
export default class PresenceLog extends Component {
static propTypes = {
inRoom: PropTypes.bool,
hubId: PropTypes.string
};
constructor(props) {
super(props);
}
domForEntry = e => {
const entryClasses = {
[styles.presenceLogEntry]: true,
[styles.presenceLogEntryWithButton]: e.type === "chat" && e.maySpawn,
[styles.expired]: !!e.expired
};
switch (e.type) {
case "join":
case "entered":
return (
<div key={e.key} className={classNames(entryClasses)}>
<b>{e.name}</b> <FormattedMessage id={`presence.${e.type}_${e.presence}`} />
</div>
);
case "leave":
return (
<div key={e.key} className={classNames(entryClasses)}>
<b>{e.name}</b> <FormattedMessage id={`presence.${e.type}`} />
</div>
);
case "display_name_changed":
return (
<div key={e.key} className={classNames(entryClasses)}>
<b>{e.oldName}</b> <FormattedMessage id="presence.name_change" /> <b>{e.newName}</b>.
<ChatMessage
key={e.key}
name={e.name}
className={classNames(entryClasses)}
body={e.body}
maySpawn={e.maySpawn}
/>
key={e.key}
name={e.name}
className={classNames(entryClasses, styles.media)}
body={e.body}
maySpawn={e.maySpawn}
case "log":
return (
<div key={e.key} className={classNames(entryClasses)}>
{e.body}
</div>
);
const presenceClasses = {
[styles.presenceLog]: true,
[styles.presenceLogInRoom]: this.props.inRoom
};
return <div className={classNames(presenceClasses)}>{this.props.entries.map(this.domForEntry)}</div>;