Advertisement
justfrenzy

CrackFlix - frontend /src/App.tsx

May 12th, 2024
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TypeScript 3.42 KB | Source Code | 0 0
  1. 'use strict';
  2. import { Route, Routes, useNavigate } from 'react-router-dom';
  3. import NavigationBar from './components/Nav/NavigationBar';
  4. import { Suspense, lazy, useContext } from 'react';
  5. import { AppContext, AppContextTypes } from './utils/AppContext';
  6. import HomePage from './pages/HomePage';
  7. const Movie = lazy(() => import('./pages/Movie'));
  8. const TV = lazy(() => import('./pages/TVshows'));
  9. const PopularMovie = lazy(() => import('./pages/Movie/Popular'));
  10. const TrendingMovie = lazy(() => import('./pages/Movie/Trending'));
  11. const NowPlayingMovie = lazy(() => import('./pages/Movie/NowPlaying'));
  12. const PopularTV = lazy(() => import('./pages/TV/Popular'));
  13. const TrendingTV = lazy(() => import('./pages/TV/Trending'));
  14. const NowPlayingTV = lazy(() => import('./pages/TV/NowPlaying'));
  15. const Filter = lazy(() => import('./pages/Filter'));
  16. const User = lazy(() => import('./pages/User'));
  17.  
  18. import Loader from './components/App/Loader';
  19. import Footer from './components/App/Footer';
  20. import Acc from './pages/Acc';
  21. import { Button } from '@nextui-org/react';
  22.  
  23. const App = (): JSX.Element => {
  24.     const { defaultLanguage, initLoad } =
  25.         useContext<AppContextTypes>(AppContext);
  26.  
  27.     if (initLoad) {
  28.         return <Loader lang={defaultLanguage} />;
  29.     }
  30.  
  31.     return (
  32.         <>
  33.             <NavigationBar />
  34.             <Suspense fallback={<Loader lang={defaultLanguage} />}>
  35.                 <Routes>
  36.                     {defaultLanguage ? (
  37.                         <>
  38.                             <Route
  39.                                 path="/"
  40.                                 element={<HomePage />}
  41.                             />
  42.                             <Route
  43.                                 path="/movie/:movieId"
  44.                                 element={<Movie />}
  45.                             />
  46.                             <Route
  47.                                 path="/tv/:tvId/:season/:episode"
  48.                                 element={<TV />}
  49.                             />
  50.                             <Route
  51.                                 path="/movie/popular"
  52.                                 element={<PopularMovie />}
  53.                             />
  54.                             <Route
  55.                                 path="/movie/trending"
  56.                                 element={<TrendingMovie />}
  57.                             />
  58.                             <Route
  59.                                 path="/movie/now_playing"
  60.                                 element={<NowPlayingMovie />}
  61.                             />
  62.                             <Route
  63.                                 path="/tv/popular"
  64.                                 element={<PopularTV />}
  65.                             />
  66.                             <Route
  67.                                 path="/tv/trending"
  68.                                 element={<TrendingTV />}
  69.                             />
  70.                             <Route
  71.                                 path="/tv/now_playing"
  72.                                 element={<NowPlayingTV />}
  73.                             />
  74.                             <Route
  75.                                 path="*"
  76.                                 element={<ErrorComp />}
  77.                             />
  78.                             <Route
  79.                                 path="/filter"
  80.                                 element={<Filter />}
  81.                             />
  82.                             <Route
  83.                                 path="/user/*"
  84.                                 element={<User />}
  85.                             />
  86.                             <Route
  87.                                 path="/acc/:username"
  88.                                 element={<Acc />}
  89.                             />
  90.                         </>
  91.                     ) : (
  92.                         <Route
  93.                             path="*"
  94.                             element={<Loader lang={defaultLanguage} />}
  95.                         />
  96.                     )}
  97.                 </Routes>
  98.             </Suspense>
  99.             <Footer />
  100.         </>
  101.     );
  102. };
  103.  
  104. export default App;
  105.  
  106. const ErrorComp = () => {
  107.     const { defaultLanguage } = useContext<AppContextTypes>(AppContext);
  108.     const navigate = useNavigate();
  109.     return (
  110.         <>
  111.             <div className="flex flex-col items-center justify-center gap-4 p-4">
  112.                 <h1 className="text-4xl text-center font-bold">404</h1>
  113.                 <p className="text-2xl text-center">
  114.                     {defaultLanguage === 'en-US'
  115.                         ? 'Page not Found'
  116.                         : 'Страницата не е намерена'}
  117.                 </p>
  118.                 <Button
  119.                     radius="full"
  120.                     color="primary"
  121.                     variant="shadow"
  122.                     onPress={() => navigate('/')}
  123.                     size="lg"
  124.                     className="text-xl text-center"
  125.                 >
  126.                     {defaultLanguage === 'en-US' ? 'Go Back' : 'Назад'}
  127.                 </Button>
  128.             </div>
  129.         </>
  130.     );
  131. };
  132.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement