Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3146 | Rev 3160 | 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, Outlet } from 'react-router-dom'

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

/* Providers */

/* Layouts */
import RootLayout from '@layouts/root'
import AppsNavigation from '@pages/apps-navigation/AppsNavigation'
import CreateHabitPage from '@pages/habits-and-skills/habits/create'

import PurposesPage from '@pages/habits-and-skills/purposes/purposes-page'
import CreatePurposePage from '@pages/habits-and-skills/purposes/create-purpose-page'
import EditPurposePage from '@pages/habits-and-skills/purposes/edit-purpose-page'
import ParadigmsLayout from '@layouts/habits-and-skills/paradigms-layout'
import ParadigmsPage from '@pages/habits-and-skills/paradigms/paradigms-page'
import CreateParadigmPage from '@pages/habits-and-skills/paradigms/create-paradigm-page'
import EditParadigmPage from '@pages/habits-and-skills/paradigms/edit-paradigm-page'
import HabitsLayout from '@layouts/habits-and-skills/habits-layout'

const InmailLayout = lazy(() => import('@layouts/inmail/inmail-layout'))
const AuthLayout = lazy(() => import('@layouts/auth/auth-layout'))
const HabitsAndSkillsLayout = lazy(() =>
  import('@layouts/habits-and-skills/root-layout')
)
const MicrolearningLayout = lazy(() =>
  import('@layouts/micro-learning/micro-learning-layout')
)

/* Pages */
const InmailPage = lazy(() => import('@pages/inmail/inmail-page'))
const MessageViewPage = lazy(() => import('@pages/inmail/message-view-page'))
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 ValuesPage = lazy(() => import('@pages/habits-and-skills/values-page'))
const PurposesLayout = lazy(() =>
  import('@layouts/habits-and-skills/purposes-layout')
)
const HabitsPage = lazy(() =>
  import('@pages/habits-and-skills/habits/habits-page')
)
const GoalsPage = lazy(() => import('@pages/habits-and-skills/goals-page'))
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 GroupsRequestsSendPage = lazy(() =>
  import('@pages/groups/GroupsRequestsSendPage')
)
const GroupsRequestsReceivedPage = lazy(() =>
  import('@pages/groups/GroupsRequestsReceivedPage')
)
const JoinedGroupsPage = lazy(() => import('@pages/groups/JoinedGroupsPage'))
const MyGroupsPage = lazy(() => import('@pages/groups/MyGroupsPage'))
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 GroupViewPage = lazy(() => import('@pages/groups/GroupPage'))
const GroupEditPage = lazy(() => import('@pages/groups/GroupEditPage'))

const MarketPlacePage = lazy(() => import('@pages/marketplace/MarketplacePage'))
const NotificationsPage = lazy(() =>
  import('@pages/notifications/NotificationsPage')
)
const SearchPage = lazy(() => import('@pages/search/SearchPage'))
const KnowledgeAreaPage = lazy(() =>
  import('@pages/knowledge-area/KnowledgeAreaPage')
)
const KnowledgeViewPage = lazy(() =>
  import('@pages/knowledge-area/KnowledgeViewPage')
)
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'))
const CapsulesPage = lazy(() => import('@pages/micro-learning/CapsulesPage'))
const CapsuleDetailsPage = lazy(() =>
  import('@pages/micro-learning/CapsuleInfoPage')
)
const SlidesPage = lazy(() => import('@pages/micro-learning/SlideViewPage'))
const ProgressPage = lazy(() => import('@pages/micro-learning/ProgressPage'))
const CompaniesPage = lazy(() => import('@pages/micro-learning/CompaniesPage'))
const CapsuleSlidesPage = lazy(() =>
  import('@pages/micro-learning/CapsuleViewPage')
)
const TimelinePage = lazy(() => import('@pages/micro-learning/TimelinePage'))
const ProfilePage = lazy(() => import('@pages/micro-learning/ProfilePage'))
const TopicsPage = lazy(() => import('@pages/micro-learning/TopicsPage'))
const TopicsViewPage = lazy(() => import('@pages/micro-learning/TopicViewPage'))

export default function AppRoutes() {
  return (
    <Suspense fallback={<Spinner />}>
      <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
              path='/habits-and-skills/*'
              element={<HabitsAndSkillsLayout />}
            >
              <Route path='purposes' element={<PurposesLayout />}>
                <Route index element={<PurposesPage />} />
                <Route path='create' element={<CreatePurposePage />} />
                <Route path='edit/:id' element={<EditPurposePage />} />
                <Route path='*' element={<Navigate to='purposes' />} />
              </Route>

              <Route path='paradigms' element={<ParadigmsLayout />}>
                <Route index element={<ParadigmsPage />} />
                <Route path='create' element={<CreateParadigmPage />} />
                <Route path='edit/:id' element={<EditParadigmPage />} />
                <Route path='*' element={<Navigate to='paradigms' />} />
              </Route>

              <Route path='values' element={<ValuesPage />} />

              <Route path='habits' element={<HabitsLayout />}>
                <Route index element={<HabitsPage />} />
                <Route path='create' element={<CreateHabitPage />} />
              </Route>

              <Route path='goals' element={<GoalsPage />} />

              <Route path='*' element={<Navigate to='habits' />} />
            </Route>

            <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='/group'>
              <Route index element={<Navigate to='requests-sent' />} />
              <Route
                path='requests-sent'
                element={<GroupsRequestsSendPage />}
              />
              <Route
                path='invitations-received'
                element={<GroupsRequestsReceivedPage />}
              />
              <Route path='joined-groups' element={<JoinedGroupsPage />} />
              <Route path='view/:uuid' element={<GroupViewPage />} />
              <Route path='my-groups'>
                <Route index element={<MyGroupsPage />} />
                <Route path='edit/:uuid' element={<GroupEditPage />} />
              </Route>
            </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='/knowledge-area'>
              <Route index element={<KnowledgeAreaPage />} />
              <Route path='view/:uuid' element={<KnowledgeViewPage />} />
            </Route>

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

            <Route
              path='/microlearning'
              element={
                <MicrolearningLayout>
                  <Outlet />
                </MicrolearningLayout>
              }
            >
              <Route index element={<CapsulesPage />} />

              <Route path='topics'>
                <Route index element={<TopicsPage />} />
                <Route path=':topicId/capsules' element={<TopicsViewPage />} />
              </Route>

              <Route path='capsules'>
                <Route path=':capsuleId/*' element={<CapsuleDetailsPage />} />
                <Route
                  path=':capsuleId/slides'
                  element={<CapsuleSlidesPage />}
                />
              </Route>

              <Route path='slides/:uuid' element={<SlidesPage />} />
              <Route path='companies'>
                <Route index element={<CompaniesPage />} />
                <Route path=':uuid' element={<ProgressPage />} />
              </Route>
              <Route path='timeline' element={<TimelinePage />} />
              <Route path='profile' element={<ProfilePage />} />
            </Route>

            <Route path='/inmail/*' element={<InmailLayout />}>
              <Route index element={<InmailPage />} />
              <Route path=':uuid' element={<MessageViewPage />} />
            </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='/marketplace' element={<MarketPlacePage />} />
            <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>
        </Route>
      </Routes>
    </Suspense>
  )
}