// REQ0054/user-setting // // PURPOSE: // - Provides functionality view user profile // // RULES: // - T.B.A. // import React, { useEffect, useRef, useState } from 'react'; import { IonHeader, IonToolbar, IonTitle, IonContent, IonPage, IonButtons, useIonRouter, IonButton, IonIcon, IonItem, IonLabel, IonList, IonModal, } from '@ionic/react'; import { Speaker } from '../../models/Speaker'; import { Session } from '../../models/Schedule'; import { connect } from '../../data/connect'; import * as selectors from '../../data/selectors'; import '../SpeakerList.scss'; import { getEvents } from '../../api/getEvents'; import { Event } from './types'; import { alertCircleOutline, chatbubbleOutline, chevronBackOutline, chevronForwardOutline, documentTextOutline, gift, languageOutline, settingsOutline, shareSocialOutline, trashOutline, } from 'ionicons/icons'; import AboutPopover from '../../components/AboutPopover'; import { OverlayEventDetail } from '@ionic/react/dist/types/components/react-component-lib/interfaces'; import PATHS from '../../PATHS'; import { logoutUser, setAccessToken, setIsLoggedIn } from '../../data/user/user.actions'; interface OwnProps {} interface StateProps { speakers: Speaker[]; speakerSessions: { [key: string]: Session[] }; } interface DispatchProps { logoutUser: typeof logoutUser; setAccessToken: typeof setAccessToken; setIsLoggedIn: typeof setIsLoggedIn; } interface SettingsProps extends OwnProps, StateProps, DispatchProps {} const SettingsPage: React.FC = ({ speakers, speakerSessions, logoutUser, setAccessToken, setIsLoggedIn, }) => { const [events, setEvents] = useState([]); const [showPopover, setShowPopover] = useState(false); const [popoverEvent, setPopoverEvent] = useState(); const modal = useRef(null); const router = useIonRouter(); useEffect(() => { getEvents().then(({ data }: { data: any }) => { console.log({ data }); setEvents(data); }); }, []); function handleBackButtonClick() { router.goBack(); } function handleLanguageClick() { router.push(PATHS.CHANGE_LANGUAGE); } function handleNotImplementedClick() { router.push(PATHS.NOT_IMPLEMENTED); } function handleDemoPageClick() { router.push(PATHS.DEMO_PAGE); } function handleServiceAgreementClick() { router.push(PATHS.SERVICE_AGREEMENT); } function handlePrivacyAgreementClick() { router.push(PATHS.PRIVACY_AGREEMENT); } const [showLogoutConfirmModal, setShowLogoutConfirmModal] = useState(false); function handleConfirmLogoutClick() { setShowLogoutConfirmModal(true); } function handleLogoutClick() { setAccessToken(); setIsLoggedIn(false); router.push('/tabs', 'forward', 'replace'); setShowLogoutConfirmModal(false); } function handleLogoutCancel() { setShowLogoutConfirmModal(false); } return ( {/* */} handleBackButtonClick()}>
Setting
Setting handleNotImplementedClick()}> Contact us Language Privacy Service agreement Share Delete Account Demo pages
Logout
{/* REQ0058/logout */}
Logout
Unable to receive notifications after logging out
Cancel Logout
); }; export default connect({ mapStateToProps: (state) => ({ speakers: selectors.getSpeakers(state), speakerSessions: selectors.getSpeakerSessions(state), }), mapDispatchToProps: { logoutUser, setAccessToken, setIsLoggedIn, }, component: React.memo(SettingsPage), });