Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3682 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { lazy, Suspense } from 'react';
import { Routes, Route, Navigate } from 'react-router-dom';

/* Components */
import AuthRoute from './auth-routes';
import PrivateRoutes from './private-routes';
import Spinner from '@components/UI/Spinner';

/* Layouts */
import RootLayout from '@layouts/root';
import AppsNavigation from '@pages/apps-navigation/AppsNavigation';

import PrivateRoutesLayout from '@layouts/private-routes';

const HabitsRoutes = lazy(() => import('./habits/routes'));

/* Modules */
const KnowledgesRoutes = lazy(() => import('@knowledges/routes/KnowledgesRoutes'));
const MicrolearningRoutes = lazy(() => import('@microlearning/routes/MicrolearningRoutes'));
const MarketplaceRoutes = lazy(() => import('@marketplace/routes/MarketplaceRoutes'));
const InmailRoutes = lazy(() => import('@inmail/routes/InmailRoutes'));
const GroupRoutes = lazy(() => import('@groups/routes/GroupsRoutes'));

/* Layouts */
const AuthLayout = lazy(() => import('@layouts/auth-layout'));

/* Pages */
const Browsers = lazy(() => import('@pages/account-settings/browsers'));
const BasicSettings = lazy(() => import('@pages/account-settings/basic-settings'));
const ChangeImage = lazy(() => import('@pages/account-settings/change-image'));
const ChangePassword = lazy(() => import('@pages/account-settings/change-password'));
const Devices = lazy(() => import('@pages/account-settings/devices'));
const Ips = lazy(() => import('@pages/account-settings/ips'));
const Location = lazy(() => import('@pages/account-settings/location'));
const Notifications = lazy(() => import('@pages/account-settings/notifications'));
const Privacy = lazy(() => import('@pages/account-settings/privacy'));
const Transactions = lazy(() => import('@pages/account-settings/transactions'));
const CloseAccount = lazy(() => import('@pages/account-settings/close-account'));
const Login = lazy(() => import('@app/pages/auth/login'));
const Signup = lazy(() => import('@app/pages/auth/signup'));
// const Navigation = lazy(() => import('@pages/auth/navigation'))
const ForgotPassword = lazy(() => import('@pages/auth/forgot-password'));
const ActiveAccount = lazy(() => import('@pages/auth/active-account'));
const ResetPassword = lazy(() => import('@pages/auth/reset-password'));
const AbuseReportPage = lazy(() => import('@pages/abuse-report/abuse-repor-page'));
const AbuseReportViewPage = lazy(() => import('@pages/abuse-report/abuse-report-view-page'));
const ShorterPostPage = lazy(() => import('@pages/shorter/shorter-post-page'));
const TermsAndConditionsPage = lazy(
  () => import('@pages/terms-and-conditions/TermsAndConditionsPage')
);
const PrivacyPolicyPage = lazy(() => import('@pages/privacy-policy/PrivacyPolicy'));
const CookiesPage = lazy(() => import('@pages/cookies/CookiesPage'));
const ProfessionalismPolicy = lazy(
  () => import('@pages/professionalism-policy/ProfessionalismPolicy')
);
const AccountSettingsLayout = lazy(() => import('@layouts/account-settings'));
const DashboardPage = lazy(() => import('@pages/dashboard/dashboard-page'));
const MyConnectionsPage = lazy(() => import('@pages/connections/MyConnectionsPage'));
const InvitationsReceivedPage = lazy(() => import('@pages/connections/InvitationsReceivedPage'));
const InvitationsSendPage = lazy(() => import('@pages/connections/InvitationsSendPage'));
const PeopleYouMayKnowPage = lazy(() => import('@pages/connections/PeopleYouMayKnowPage'));
const PeopleBlockedPage = lazy(() => import('@pages/connections/PeopleBlockedPage'));
const MyProfilesPage = lazy(() => import('@pages/profiles/MyProfilesPage'));
const PeopleViewedMyProfilePage = lazy(() => import('@pages/profiles/PeopleViewedMyProfilePage'));
const SavedJobsPage = lazy(() => import('@pages/jobs/SavedJobsPage'));
const AppliedJobsPage = lazy(() => import('@pages/jobs/AppliedJobsPage'));
const MyCompanies = lazy(() => import('@pages/company/MyCompaniesPage'));
const FollowingCompaniesPage = lazy(() => import('@pages/company/CompaniesIFollowPage'));
const CompaniesWhenIWorkPage = lazy(() => import('@pages/company/CompaniesWhenIWorkPage'));
const CompanyRequestSendPage = lazy(() => import('@pages/company/CompanyRequestSendPage'));
const CompanyInvitationsReceivedPage = lazy(
  () => import('@pages/company/CompanyInvitationsReceivedPage')
);
const ProfileViewPage = lazy(() => import('@pages/profiles/ProfileViewPage'));
const ProfileEditPage = lazy(() => import('@pages/profiles/ProfileEditPage'));
const CompanyViewPage = lazy(() => import('@pages/company/CompanyViewPage'));
const NotificationsPage = lazy(() => import('@pages/notifications/NotificationsPage'));
const SearchPage = lazy(() => import('@pages/search/SearchPage'));

const PostViewPage = lazy(() => import('@pages/posts/PostViewPage'));
const MyCoachPage = lazy(() => import('@pages/my-coach/MyCoachPage'));
const MyCoachViewPage = lazy(() => import('@pages/my-coach/MyCoachViewPage'));
const JobViewPage = lazy(() => import('@pages/jobs/JobView'));
const CalendarPage = lazy(() => import('@pages/calendar/CalendarPage'));
const ImpersonatePage = lazy(() => import('@pages/impersonate/InpersonatePage'));

export default function AppRoutes() {
  return (
    <Suspense fallback={<Spinner absolute />}>
      <Routes>
        <Route element={<RootLayout />}>
          {/* Public routes */}
          <Route path='/shorter/:id' element={<ShorterPostPage />} />

          <Route path='/terms-and-conditions' element={<TermsAndConditionsPage />} />

          <Route path='/privacy-policy' element={<PrivacyPolicyPage />} />

          <Route path='/professionalism-policy' element={<ProfessionalismPolicy />} />

          <Route path='/cookies' element={<CookiesPage />} />

          {/* Authentication routes */}
          <Route path='/' element={<AuthRoute />}>
            <Route element={<AuthLayout />}>
              <Route index element={<Navigate to='signin' />} />
              <Route path='signin' element={<Login />} />
              <Route path='signup' element={<Signup />} />
              <Route path='forgot-password' element={<ForgotPassword />} />
              <Route path='reset-password/:uuid' element={<ResetPassword />} />
              <Route path='activate-account/:uuid' element={<ActiveAccount />} />
            </Route>
          </Route>

          {/* Private routes */}
          <Route element={<PrivateRoutes />}>
            <Route element={<PrivateRoutesLayout />}>
              <Route path='/habits/*' element={<HabitsRoutes />} />
              <Route path='/group/*' element={<GroupRoutes />} />
              <Route path='/marketplace/*' element={<MarketplaceRoutes />} />
              <Route path='/knowledge-area/*' element={<KnowledgesRoutes />} />
              <Route path='/microlearning/*' element={<MicrolearningRoutes />} />
              <Route path='/inmail/*' element={<InmailRoutes />} />

              <Route path='abuse-report'>
                <Route index element={<AbuseReportPage />} />
                <Route path='view/:id' element={<AbuseReportViewPage />} />
              </Route>

              <Route path='/dashboard'>
                <Route index element={<DashboardPage />} />
                <Route path='feed/:id' element={<DashboardPage />} />
              </Route>

              <Route path='/connection'>
                <Route index element={<Navigate to='my-connections' />} />
                <Route path='my-connections' element={<MyConnectionsPage />} />
                <Route path='invitations-sent' element={<InvitationsSendPage />} />
                <Route path='invitations-received' element={<InvitationsReceivedPage />} />
                <Route path='people-you-may-know' element={<PeopleYouMayKnowPage />} />
                <Route path='people-blocked' element={<PeopleBlockedPage />} />
              </Route>

              <Route path='/profile'>
                <Route index element={<Navigate to='my-profiles' />} />
                <Route path='view/:uuid' element={<ProfileViewPage />} />
                <Route path='people-viewed-profile' element={<PeopleViewedMyProfilePage />} />
                <Route path='my-profiles'>
                  <Route index element={<MyProfilesPage />} />
                  <Route path='edit/:uuid' element={<ProfileEditPage />} />
                </Route>
              </Route>

              <Route path='/job'>
                <Route index element={<Navigate to='saved-jobs' />} />
                <Route path='view/:uuid' element={<JobViewPage />} />
                <Route path='saved-jobs' element={<SavedJobsPage />} />
                <Route path='applied-jobs' element={<AppliedJobsPage />} />\
              </Route>

              <Route path='/company'>
                <Route index element={<Navigate to='my-companies' />} />
                <Route path='my-companies' element={<MyCompanies />} />
                <Route path='following-companies' element={<FollowingCompaniesPage />} />
                <Route path='i-work-with' element={<CompaniesWhenIWorkPage />} />
                <Route path='requests-sent' element={<CompanyRequestSendPage />} />
                <Route path='requests-sent' element={<CompanyRequestSendPage />} />
                <Route path='invitations-received' element={<CompanyInvitationsReceivedPage />} />
                <Route path='view/:uuid' element={<CompanyViewPage />} />
              </Route>

              <Route path='/my-coach'>
                <Route index element={<MyCoachPage />} />
                <Route path='questions/view/:uuid' element={<MyCoachViewPage />} />
              </Route>

              <Route path='/account-settings' element={<AccountSettingsLayout />}>
                <Route index element={<BasicSettings />} />
                <Route path='notifications' element={<Notifications />} />
                <Route path='change-password' element={<ChangePassword />} />
                <Route path='change-image' element={<ChangeImage />} />
                <Route path='location' element={<Location />} />
                <Route path='privacy' element={<Privacy />} />
                <Route path='browsers' element={<Browsers />} />
                <Route path='ips' element={<Ips />} />
                <Route path='devices' element={<Devices />} />
                <Route path='close-account' element={<CloseAccount />} />
                <Route path='transactions' element={<Transactions />} />
              </Route>

              <Route path='/notifications' element={<NotificationsPage />} />
              <Route path='/search/entity/:category' element={<SearchPage />} />
              <Route path='/calendar' element={<CalendarPage />} />
              <Route path='/signin/impersonate' element={<ImpersonatePage />} />
              <Route path='/post/:uuid' element={<PostViewPage />} />
              <Route path='/apps-navigation' element={<AppsNavigation />} />

              <Route path='*' element={<Navigate to='/dashboard' />} />
            </Route>
          </Route>
        </Route>
      </Routes>
    </Suspense>
  );
}