Iterate EntityTile

Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
Šimon Brandner 2021-06-24 14:29:24 +02:00
parent e25940cbdd
commit 298e505381
No known key found for this signature in database
GPG key ID: 9760693FDD98A790

View file

@ -16,7 +16,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
import React, { createRef } from 'react';
import React from 'react';
import AccessibleButton from '../elements/AccessibleButton';
import { _td } from '../../../languageHandler';
import classNames from "classnames";
@ -25,7 +25,12 @@ import { replaceableComponent } from "../../../utils/replaceableComponent";
import BaseAvatar from '../avatars/BaseAvatar';
import PresenceLabel from "./PresenceLabel";
const PowerLabel: Record<string, string> = {
enum PowerStatus {
Admin = "admin",
Moderator = "moderator",
}
const PowerLabel: Record<PowerStatus, string> = {
"admin": _td("Admin"),
"moderator": _td("Mod"),
}
@ -36,7 +41,7 @@ const PRESENCE_CLASS = {
"unavailable": "mx_EntityTile_unavailable",
};
function presenceClassForMember(presenceState: string, lastActiveAgo: number, showPresence: boolean) {
function presenceClassForMember(presenceState: string, lastActiveAgo: number, showPresence: boolean): string {
if (showPresence === false) {
return 'mx_EntityTile_online_beenactive';
}
@ -66,13 +71,12 @@ interface IProps {
presenceLastTs?: number,
presenceCurrentlyActive?: boolean,
showInviteButton?: boolean,
shouldComponentUpdate?(nextProps: IProps, nextState: IState): boolean,
onClick?(): void,
suppressOnHover?: boolean,
showPresence?: boolean,
subtextLabel?: string,
e2eStatus?: string,
powerStatus?: string,
powerStatus?: PowerStatus,
}
interface IState {
@ -82,7 +86,6 @@ interface IState {
@replaceableComponent("views.rooms.EntityTile")
export default class EntityTile extends React.Component<IProps, IState> {
static defaultProps = {
shouldComponentUpdate: (nextProps: IProps, nextState: IState) => { return true; },
onClick: () => {},
presenceState: "offline",
presenceLastActiveAgo: 0,
@ -91,7 +94,6 @@ export default class EntityTile extends React.Component<IProps, IState> {
suppressOnHover: false,
showPresence: true,
};
private container = createRef<HTMLDivElement>();
constructor(props: IProps) {
super(props);
@ -103,7 +105,6 @@ export default class EntityTile extends React.Component<IProps, IState> {
shouldComponentUpdate(nextProps: IProps, nextState: IState) {
if (this.state.hover !== nextState.hover) return true;
return this.props.shouldComponentUpdate(nextProps, nextState);
}
render() {
@ -184,7 +185,7 @@ export default class EntityTile extends React.Component<IProps, IState> {
// The wrapping div is required to make the magic mouse listener work, for some reason.
return (
<div ref={this.container} >
<div>
<AccessibleButton
className={classNames(mainClassNames)}
title={this.props.title}