import React, { useEffect } from 'react'; import { Route } from 'react-router-dom'; import { IonApp, IonRouterOutlet, IonSplitPane, setupIonicReact } from '@ionic/react'; import { IonReactRouter } from '@ionic/react-router'; import Menu from './components/Menu'; /* Core CSS required for Ionic components to work properly */ import '@ionic/react/css/core.css'; /* Basic CSS for apps built with Ionic */ import '@ionic/react/css/normalize.css'; import '@ionic/react/css/structure.css'; import '@ionic/react/css/typography.css'; /* Optional CSS utils that can be commented out */ import '@ionic/react/css/padding.css'; import '@ionic/react/css/float-elements.css'; import '@ionic/react/css/text-alignment.css'; import '@ionic/react/css/text-transformation.css'; import '@ionic/react/css/flex-utils.css'; import '@ionic/react/css/display.css'; /** * Ionic Dark Mode * ----------------------------------------------------- * For more info, please see: * https://ionicframework.com/docs/theming/dark-mode */ // import "@ionic/react/css/palettes/dark.always.css"; // import "@ionic/react/css/palettes/dark.system.css"; import '@ionic/react/css/palettes/dark.class.css'; /* Theme variables */ import './theme/variables.css'; /* Leaflet CSS */ import 'leaflet/dist/leaflet.css'; /* Global styles */ import './App.scss'; import MainTabs from './pages/MainTabs'; import { connect } from './data/connect'; import { AppContextProvider } from './data/AppContext'; import { loadConfData } from './data/sessions/sessions.actions'; import { setIsLoggedIn, setUsername, loadUserData } from './data/user/user.actions'; import Account from './pages/Account'; import Login from './pages/Login'; import MyLogin from './pages/MyLogin'; import PartyUserLogin from './pages/PartyUserLogin'; import Signup from './pages/Signup'; import Support from './pages/Support'; import Tutorial from './pages/Tutorial'; import HomeOrTutorial from './components/HomeOrTutorial'; import { Schedule } from './models/Schedule'; import RedirectToLogin from './components/RedirectToLogin'; import AppDemoRoute from './routes/DemoRoute'; import Settings from './pages/Settings'; import PATHS from './PATHS'; import NotImplemented from './pages/NotImplemented'; import ChangeLanguage from './pages/ChangeLanguage'; import ServiceAgreement from './pages/ServiceAgreement'; import PrivacyAgreement from './pages/PrivacyAgreement'; import EventDetail from './pages/EventDetail'; import MemberProfile from './pages/MemberProfile'; import OrderDetail from './pages/OrderDetail'; import DummyPayPage from './pages/DummyEventPayPage'; import DummyEventPayPage from './pages/DummyEventPayPage'; import PaymentSuccess from './pages/PaymentSuccess'; import PaymentFailed from './pages/PaymentFailed'; import settings from './pages/tabs/carousell_me/settings'; setupIonicReact(); const App: React.FC = () => { return ( ); }; interface StateProps { darkMode: boolean; schedule: Schedule; } interface DispatchProps { loadConfData: typeof loadConfData; loadUserData: typeof loadUserData; setIsLoggedIn: typeof setIsLoggedIn; setUsername: typeof setUsername; } interface IonicAppProps extends StateProps, DispatchProps {} const IonicApp: React.FC = ({ darkMode, schedule, setIsLoggedIn, setUsername, loadConfData, loadUserData }) => { // Load initial user and conference data when component mounts useEffect(() => { loadUserData(); loadConfData(); // eslint-disable-next-line }, []); return schedule.groups.length === 0 ? (
) : ( {/* We use IonRoute here to keep the tabs state intact, which makes transitions between tabs and non tab pages smooth */} } /> {/* */} {/* Event and profile detail pages */} {/* component make the ":id" available in the "OrderDetail" */} { return ; }} /> {/* PartyUser */} ); }; export default App; const IonicAppConnected = connect<{}, StateProps, DispatchProps>({ mapStateToProps: (state) => ({ darkMode: state.user.darkMode, schedule: state.data.schedule, }), mapDispatchToProps: { loadConfData, loadUserData, setIsLoggedIn, setUsername, }, component: IonicApp, }); function Helloworld() { return <>helloworld; }