import React from 'react'; import { IonHeader, IonToolbar, IonContent, IonPage, IonButtons, IonBackButton, IonButton, IonIcon, IonText, IonList, IonItem, IonLabel, } from '@ionic/react'; import { connect } from '../data/connect'; import { withRouter, RouteComponentProps } from 'react-router'; import * as selectors from '../data/selectors'; import { starOutline, star, share, cloudDownload } from 'ionicons/icons'; import './SessionDetail.scss'; import { addFavorite, removeFavorite } from '../data/sessions/sessions.actions'; import { Session } from '../models/Schedule'; interface OwnProps extends RouteComponentProps {} interface StateProps { session?: Session; favoriteSessions: number[]; } interface DispatchProps { addFavorite: typeof addFavorite; removeFavorite: typeof removeFavorite; } type SessionDetailProps = OwnProps & StateProps & DispatchProps; const SessionDetail: React.FC = ({ session, addFavorite, removeFavorite, favoriteSessions, }) => { if (!session) { return
Session not found
; } const isFavorite = favoriteSessions.indexOf(session.id) > -1; const toggleFavorite = () => { isFavorite ? removeFavorite(session.id) : addFavorite(session.id); }; const shareSession = () => {}; const sessionClick = (text: string) => { console.log(`Clicked ${text}`); }; return ( toggleFavorite()}> {isFavorite ? ( ) : ( )} shareSession}>

{session.name}

{session.tracks.map((track) => ( {track} ))}

{session.description}

{session.timeStart} – {session.timeEnd}
{session.location}
sessionClick('watch')} button> Watch sessionClick('add to calendar')} button> Add to Calendar sessionClick('mark as unwatched')} button> Mark as Unwatched sessionClick('download video')} button> Download Video sessionClick('leave feedback')} button> Leave Feedback
); }; export default connect({ mapStateToProps: (state, ownProps) => ({ session: selectors.getSession(state, ownProps), favoriteSessions: state.data.favorites }), mapDispatchToProps: { addFavorite, removeFavorite, }, component: withRouter(SessionDetail), });