// REQ0053/profile-page // // PURPOSE: // - Provides functionality view user profile // // RULES: // - T.B.A. // import React, { useEffect, useRef, useState } from 'react'; import { IonHeader, IonToolbar, IonTitle, IonContent, IonPage, IonButtons, IonMenuButton, IonGrid, IonRow, IonCol, useIonRouter, IonButton, IonIcon, IonPopover, IonAvatar, IonImg, IonItem, IonLabel, IonList, IonModal, IonSearchbar, useIonModal, IonInput, RefresherEventDetail, IonRefresher, IonRefresherContent, } from '@ionic/react'; import SpeakerItem from '../../components/SpeakerItem'; 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 { format } from 'date-fns'; import { Event } from './types'; import { alertOutline, chevronDownCircleOutline, createOutline, heart, menuOutline, settingsOutline, } from 'ionicons/icons'; import AboutPopover from '../../components/AboutPopover'; import PATHS from '../../PATHS'; import { getProfileById } from '../../api/getProfileById'; import { defaultMember, Member } from '../MemberProfile/type'; import NotLoggedIn from './NotLoggedIn'; interface OwnProps {} interface StateProps { isLoggedin: boolean; // speakers: Speaker[]; speakerSessions: { [key: string]: Session[] }; } interface DispatchProps {} interface SpeakerListProps extends OwnProps, StateProps, DispatchProps {} const MyProfilePage: React.FC = ({ speakers, speakerSessions, isLoggedin }) => { if (!isLoggedin) return ; const [profile, setProfile] = useState(defaultMember); const [showPopover, setShowPopover] = useState(false); const [popoverEvent, setPopoverEvent] = useState(); const modal = useRef(null); const router = useIonRouter(); function handleShowSettingButtonClick() { router.push(PATHS.SETTINGS); } function handleNotImplementedClick() { router.push(PATHS.NOT_IMPLEMENTED); } function handleRefresh(event: CustomEvent) { setTimeout(() => { // Any calls to load data go here event.detail.complete(); }, 2000); } useEffect(() => { getProfileById('2').then(({ data }) => { console.log({ data }); setProfile(data); }); }, []); if (!profile) return <>loading; return ( {/* */} handleShowSettingButtonClick()}> My profile My profile
Silhouette of a person's head
{profile.name}
{profile.rank}
{profile.verified}
Membership
7 of the exclusive privileges
Unlock
Privileges Unlocked
Unlock participant list
Exclusive vip logo
View visitors
Tips of message read
Voice and images transmission
Pinned to the top of nearby list every 24 hours
Unlimited chat
Filter verified users
{/* REQ0079/event-filter */}
Filter
Maximum number of participant
2-10 12-40 All
Held date
Weekly Monthly All
Apply
); }; export default connect({ mapStateToProps: (state) => ({ speakers: selectors.getSpeakers(state), speakerSessions: selectors.getSpeakerSessions(state), isLoggedin: state.user.isLoggedin, }), component: React.memo(MyProfilePage), });