import React from 'react'; import classNames from 'classnames'; import { Avatar } from '../Avatar'; export interface Contact { id: string; selected: boolean; authorProfileName: string; authorPhoneNumber: string; authorName: string; authorColor: any; authorAvatarPath: string; checkmarked: boolean; existingMember: boolean; } interface MemberItemProps { member: Contact; selected: boolean; existingMember: boolean; onClicked: any; i18n: any; checkmarked: boolean; } class MemberItem extends React.Component { constructor(props: any) { super(props); this.handleClick = this.handleClick.bind(this); } public render() { const name = this.props.member.authorProfileName; const pubkey = this.props.member.authorPhoneNumber; const selected = this.props.selected; const existingMember = this.props.existingMember; let markType: 'none' | 'kicked' | 'added' | 'existing' = 'none'; if (this.props.checkmarked) { if (existingMember) { markType = 'kicked'; } else { markType = 'added'; } } else { if (existingMember) { markType = 'existing'; } else { markType = 'none'; } } const markClasses = ['check-mark']; switch (markType) { case 'none': markClasses.push('invisible'); break; case 'existing': markClasses.push('existing-member'); break; case 'kicked': markClasses.push('existing-member-kicked'); break; default: // do nothing } const mark = markType === 'kicked' ? '✘' : '✔'; const nameAndPubKey = `${name} ${window.shortenPubkey(pubkey)}`; return (
{this.renderAvatar()} {nameAndPubKey} {mark}
); } private handleClick() { this.props.onClicked(this.props.member); } private renderAvatar() { return ( ); } } interface MemberListProps { members: Array; selected: any; onMemberClicked: any; i18n: any; } export class MemberList extends React.Component { constructor(props: any) { super(props); this.handleMemberClicked = this.handleMemberClicked.bind(this); } public render() { const { members } = this.props; const itemList = members.map(item => { const selected = item === this.props.selected; return ( ); }); return
{itemList}
; } private handleMemberClicked(member: any) { this.props.onMemberClicked(member); } }