Skip to content
Snippets Groups Projects
Select Git revision
  • cffda38e44b47935db63c1c73758db3acc39e08d
  • master default protected
2 results

router.tsx

Blame
  • Ziwei Wang's avatar
    Ziwei Wang authored
    This is only the skeleton and the UI will be implemented when wireframes for the web version are ready
    The original components and their routes are preserved for now.
    
    Change-Id: Ib0900fdd78d6ab5058b7b0278ce92d4741f8be5a
    cffda38e
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    router.tsx 4.10 KiB
    /*
     * Copyright (C) 2022 Savoir-faire Linux Inc.
     *
     * This program is free software; you can redistribute it and/or modify
     * it under the terms of the GNU Affero General Public License as
     * published by the Free Software Foundation; either version 3 of the
     * License, or (at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU Affero General Public License for more details.
     *
     * You should have received a copy of the GNU Affero General Public
     * License along with this program.  If not, see
     * <https://www.gnu.org/licenses/>.
     */
    import { createBrowserRouter, createRoutesFromElements, Outlet, Route } from 'react-router-dom';
    
    import App, { appLoader } from './App';
    import CustomizeProfile from './components/AccountSettings/CustomizeProfile';
    import LinkedDevices from './components/AccountSettings/LinkedDevices';
    import ManageAccount from './components/AccountSettings/ManageAccount';
    import ContactList from './components/ContactList';
    import ConversationView from './components/ConversationView';
    import Header from './components/Header';
    import SettingSidebar from './components/SettingSidebar';
    import AuthProvider from './contexts/AuthProvider';
    import CallManagerProvider from './contexts/CallManagerProvider';
    import ConversationProvider from './contexts/ConversationProvider';
    import MessengerProvider from './contexts/MessengerProvider';
    import UserMediaProvider from './contexts/UserMediaProvider';
    import WebSocketProvider from './contexts/WebSocketProvider';
    import { RouteParams } from './hooks/useUrlParams';
    import AccountSettings from './pages/AccountSettings';
    import AdminLogin from './pages/AdminLogin';
    import AdminPanel from './pages/AdminPanel';
    import AdminSetup from './pages/AdminSetup';
    import GeneralSettings from './pages/GeneralSettings';
    import Login from './pages/Login';
    import Messenger from './pages/Messenger';
    import Registration from './pages/Registration';
    export type ConversationRouteParams = RouteParams<{ conversationId?: string }, Record<string, never>>;
    
    export const router = createBrowserRouter(
      createRoutesFromElements(
        <Route path="/" element={<App />} loader={appLoader}>
          <Route path="login" element={<Login />} />
          <Route path="register" element={<Registration />} />
          <Route path="admin" element={<AdminPanel />} />
          <Route path="admin/login" element={<AdminLogin />} />
          <Route path="admin/setup" element={<AdminSetup />} />
          <Route
            element={
              <AuthProvider>
                <WebSocketProvider>
                  <UserMediaProvider>
                    <CallManagerProvider>
                      <Header />
                      <Outlet />
                    </CallManagerProvider>
                  </UserMediaProvider>
                </WebSocketProvider>
              </AuthProvider>
            }
          >
            <Route
              element={
                <MessengerProvider>
                  <Outlet />
                </MessengerProvider>
              }
            >
              <Route index element={<Messenger />} />
              <Route path="conversation" element={<Messenger />} />
              <Route
                path="conversation/:conversationId"
                element={
                  <Messenger>
                    <ConversationProvider>
                      <ConversationView />
                    </ConversationProvider>
                  </Messenger>
                }
              />
            </Route>
            <Route element={<SettingSidebar />}>
              <Route path="settings/account/manage-account" element={<ManageAccount />} />
              <Route path="settings/account/customize-profile" element={<CustomizeProfile />} />
              <Route path="settings/account/linked-devices" element={<LinkedDevices />} />
              <Route path="settings/general/appearance" element={<GeneralSettings />} />
    
              <Route path="settings-account" element={<AccountSettings />} />
              <Route path="settings-general" element={<GeneralSettings />} />
            </Route>
            <Route path="contacts" element={<ContactList />} />
          </Route>
        </Route>
      )
    );