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 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 EventDetail from './pages/EventDetail'; import EventList from './pages/EventList'; import MemberProfile from './pages/MemberProfile'; import Settings from './pages/Settings'; import NotImplemented from './pages/NotImplemented'; import ChangeLanguage from './pages/ChangeLanguage'; import ServiceAgreement from './pages/ServiceAgreement'; import paths from './paths'; import PrivacyAgreement from './pages/PrivacyAgreement'; import AppRoute from './AppRoute'; // // TODO: resume DemoReactShop // import DemoReactShop from './pages/DemoReactShop'; import DemoWeatherApp from './pages/DemoWeatherApp'; import DemoClubHouse from './pages/DemoClubHouse'; import DemoScoreBoard from './pages/DemoScoreBoard'; import DemoQuoteApp from './pages/DemoQuoteApp'; import DemoQrScanner from './pages/DemoQrScanner'; // DemoShopAppUi import DemoShopAppUi from './pages/DemoShopAppUi'; // DemoDictionaryApp import DemoDictionaryApp from './pages/DemoDictionaryApp'; // demo-recipe-app import DemoRecipeApp from './pages/DemoRecipeApp'; // DemoSlidingProfile import DemoSlidingProfile from './pages/DemoSlidingProfile'; // DemoQuizApp import DemoQuizApp from './pages/DemoQuizApp'; import DemoBlogPostUi from './pages/DemoBlogPostUi'; import DemoReactTravelApp from './pages/DemoReactTravelApp'; import DemoPinterestFloatingTabBar from './pages/DemoPinterestFloatingTabBar'; import DemoRestaurantFinder from './pages/DemoRestaurantFinder'; import DemoReactOverlayHooks from './pages/DemoReactOverlayHooks'; import DemoReactSwitchTabs from './pages/DemoReactSwitchTabs'; import DemoReactPollApp from './pages/DemoReactPollApp'; import DemoReactWhatsAppClone from './pages/DemoReactWhatsAppClone'; import Demo2FaExample from './pages/Demo2FaExample'; import DemoAccordionTutorial from './pages/DemoAccordionTutorial'; import DemoBankingUi from './pages/DemoBankingUi'; import DemoCapacitorGoogleMapsTutorial from './pages/DemoCapacitorGoogleMapsTutorial'; import DemoColorTutorial from './pages/DemoColorTutorial'; 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, }) => { 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 */} } /> } /> {/* */} {/* */} {/* */} {/* */} {/* */} {/* */} {/* */} {/* */} {/* */} } /> {/* */} {/* */} {/* */} {/* */} {/* */} {/* */} } /> } /> } /> {/* } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> */} } /> {/* have problemx` */} {/* } /> */} } /> } /> } /> } /> } /> } /> } /> } /> } /> } /> {/* TODO: resume DemoReactShop */} {/* } /> */} } /> } /> } /> } /> } /> } /> } /> { return ; }} /> ); }; 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, });