import React, { useState } from 'react'; import { RouteComponentProps } from 'react-router'; import './SpeakerDetail.scss'; import { ActionSheetButton } from '@ionic/core'; import { IonActionSheet, IonChip, IonIcon, IonHeader, IonLabel, IonToolbar, IonButtons, IonContent, IonButton, IonBackButton, IonPage, } from '@ionic/react'; import { callOutline, callSharp, logoTwitter, logoGithub, logoInstagram, shareOutline, shareSharp, } from 'ionicons/icons'; import { connect } from '../data/connect'; import * as selectors from '../data/selectors'; import { Speaker } from '../models/Speaker'; interface OwnProps extends RouteComponentProps { speaker?: Speaker; } interface StateProps {} interface DispatchProps {} interface SpeakerDetailProps extends OwnProps, StateProps, DispatchProps {} const SpeakerDetail: React.FC = ({ speaker }) => { const [showActionSheet, setShowActionSheet] = useState(false); const [actionSheetButtons, setActionSheetButtons] = useState< ActionSheetButton[] >([]); const [actionSheetHeader, setActionSheetHeader] = useState(''); function openSpeakerShare(speaker: Speaker) { setActionSheetButtons([ { text: 'Copy Link', handler: () => { console.log('Copy Link clicked'); }, }, { text: 'Share via ...', handler: () => { console.log('Share via clicked'); }, }, { text: 'Cancel', role: 'cancel', handler: () => { console.log('Cancel clicked'); }, }, ]); setActionSheetHeader(`Share ${speaker.name}`); setShowActionSheet(true); } function openContact(speaker: Speaker) { setActionSheetButtons([ { text: `Email ( ${speaker.email} )`, handler: () => { window.open('mailto:' + speaker.email); }, }, { text: `Call ( ${speaker.phone} )`, handler: () => { window.open('tel:' + speaker.phone); }, }, ]); setActionSheetHeader(`Share ${speaker.name}`); setShowActionSheet(true); } function openExternalUrl(url: string) { window.open(url, '_blank'); } if (!speaker) { return
Speaker not found
; } return ( openContact(speaker)}> openSpeakerShare(speaker)}>
{speaker.name}

{speaker.name}

{speaker.about} Say hello on social media!


openExternalUrl(`https://twitter.com/${speaker.twitter}`) } > Twitter openExternalUrl('https://github.com/ionic-team/ionic-framework') } > GitHub openExternalUrl('https://instagram.com/ionicframework') } > Instagram
setShowActionSheet(false)} buttons={actionSheetButtons} />
); }; export default connect({ mapStateToProps: (state, ownProps) => ({ speaker: selectors.getSpeaker(state, ownProps), }), component: SpeakerDetail, });