import React from 'react'; import classNames from 'classnames'; import { Avatar } from '../Avatar'; import { SessionIcon, SessionIconSize, SessionIconType } from './icon'; export interface ContactType { id: string; selected: boolean; authorProfileName: string; authorPhoneNumber: string; authorName: string; authorColor: any; authorAvatarPath: string; checkmarked: boolean; existingMember: boolean; } interface Props { member: ContactType; isSelected: boolean; onSelect?: any; onUnselect?: any; } interface State { isSelected: boolean; } export class SessionMemberListItem extends React.Component { public static defaultProps = { isSelected: false, }; constructor(props: any) { super(props); this.state = { isSelected: this.props.isSelected, }; this.handleSelectionAction = this.handleSelectionAction.bind(this); this.selectMember = this.selectMember.bind(this); this.unselectMember = this.unselectMember.bind(this); this.renderAvatar = this.renderAvatar.bind(this); } public render() { const { isSelected } = this.state; const name = this.props.member.authorProfileName; const pubkey = this.props.member.authorPhoneNumber; const shortPubkey = window.shortenPubkey(pubkey); return (
{this.renderAvatar()} {name} {shortPubkey}
); } private renderAvatar() { return ( ); } private handleSelectionAction() { if (this.state.isSelected) { this.unselectMember(); return; } this.selectMember(); } private selectMember() { this.setState({ isSelected: true, }); if (this.props.onSelect) { this.props.onSelect(this.props.member); } } private unselectMember() { this.setState({ isSelected: false, }); if (this.props.onUnselect) { this.props.onUnselect(this.props.member); } } }