diff --git a/app/components/HistoryCard.js b/app/components/HistoryCard.js index ab61ab4..fd9588f 100644 --- a/app/components/HistoryCard.js +++ b/app/components/HistoryCard.js @@ -1,141 +1,154 @@ import React, { Component} from 'react'; import { View } from 'react-native'; import autoBind from 'auto-bind'; import PropTypes from 'prop-types'; import moment from 'moment'; import momentFormat from 'moment-duration-format'; import { Card, IconButton, Caption, Title, Subheading } from 'react-native-paper'; import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import styles from '../assets/styles/blink/_HistoryCard.scss'; import UserIcon from './UserIcon'; +function toTitleCase(str) { + return str.replace( + /\w\S*/g, + function(txt) { + return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); + } + ); +} + class HistoryCard extends Component { constructor(props) { super(props); autoBind(this); this.state = { displayName: this.props.contact.displayName, uri: this.props.contact.remoteParty, participants: this.props.contact.participants, conference: this.props.contact.conference, type: this.props.contact.type, photo: this.props.contact.photo, label: this.props.contact.label, orientation: this.props.orientation, isTablet: this.props.isTablet } } render () { let containerClass = styles.portraitContainer; if (this.state.isTablet) { containerClass = (this.state.orientation === 'landscape') ? styles.landscapeTabletContainer : styles.portraitTabletContainer; } else { containerClass = (this.state.orientation === 'landscape') ? styles.landscapeContainer : styles.portraitContainer; } let color = {}; - const name = this.state.displayName || this.state.uri; - let title = this.state.displayName || this.state.uri; + + let title = this.state.displayName || this.state.uri.split('@')[0]; let subtitle = this.state.uri; let description = this.props.contact.startTime; + if (this.state.displayName === this.state.uri) { + title = toTitleCase(this.state.uri.split('@')[0]); + } + if (this.state.type === 'history') { let duration = moment.duration(this.props.contact.duration, 'seconds').format('hh:mm:ss', {trim: false}); if (this.props.contact.direction === 'received' && this.props.contact.duration === 0) { color.color = '#a94442'; duration = 'missed'; } else if (this.props.contact.direction === 'placed' && this.props.contact.duration === 0) { duration = 'cancelled'; } if (this.state.conference) { if (this.state.participants && this.state.participants.length) { subtitle = 'With: '; let i = 0; this.state.participants.forEach((participant) => { if (i > 0) { subtitle = subtitle + ', ' + participant.split('@')[0]; } else { subtitle = subtitle + participant.split('@')[0]; } }); } else { - subtitle = 'No participants'; + subtitle = 'No participants'; } } if (!this.state.displayName) { title = this.state.uri; if (duration === 'missed') { subtitle = 'Last call missed'; } else if (duration === 'cancelled') { subtitle = 'Last call cancelled'; } else { subtitle = 'Last call duration ' + duration ; } } description = description + ' (' + duration + ')'; return ( {this.props.setTargetUri(this.state.uri, this.props.contact)}} style={containerClass} > {title} {subtitle} {description} ); } else { return ( {this.props.setTargetUri(this.state.uri, this.props.contact)}} style={containerClass} > {title} {this.state.uri} {this.state.label} ); } } } HistoryCard.propTypes = { contact : PropTypes.object, setTargetUri : PropTypes.func, orientation : PropTypes.string, isTablet : PropTypes.bool }; export default HistoryCard;