diff --git a/packages/webapp/src/components/App.tsx b/packages/webapp/src/components/App.tsx
index 1a78ef10e..d8f3d21a1 100644
--- a/packages/webapp/src/components/App.tsx
+++ b/packages/webapp/src/components/App.tsx
@@ -1,4 +1,5 @@
// @ts-nocheck
+import { lazy, Suspense } from 'react';
import { Router, Switch, Route } from 'react-router';
import { createBrowserHistory } from 'history';
import { QueryClientProvider, QueryClient } from 'react-query';
@@ -11,25 +12,26 @@ import 'moment/locale/es-us';
import AppIntlLoader from './AppIntlLoader';
import { EnsureAuthenticated } from '@/components/Guards/EnsureAuthenticated';
import GlobalErrors from '@/containers/GlobalErrors/GlobalErrors';
-import DashboardPrivatePages from '@/components/Dashboard/PrivatePages';
-import { Authentication } from '@/containers/Authentication/Authentication';
-import LazyLoader from '@/components/LazyLoader';
import { SplashScreen, DashboardThemeProvider } from '../components';
import { queryConfig } from '../hooks/query/base';
-import { EnsureUserEmailVerified } from './Guards/EnsureUserEmailVerified';
-import { EnsureAuthNotAuthenticated } from './Guards/EnsureAuthNotAuthenticated';
import { EnsureUserEmailNotVerified } from './Guards/EnsureUserEmailNotVerified';
-const EmailConfirmation = LazyLoader({
- loader: () => import('@/containers/Authentication/EmailConfirmation'),
-});
-const RegisterVerify = LazyLoader({
- loader: () => import('@/containers/Authentication/RegisterVerify'),
-});
-const OneClickDemoPage = LazyLoader({
- loader: () => import('@/containers/OneClickDemo/OneClickDemoPage'),
-});
+const DashboardPrivatePages = lazy(
+ () => import('@/components/Dashboard/PrivatePages'),
+);
+const AuthenticationPage = lazy(
+ () => import('@/containers/Authentication/AuthenticationPage'),
+);
+const EmailConfirmation = lazy(
+ () => import('@/containers/Authentication/EmailConfirmation'),
+);
+const RegisterVerify = lazy(
+ () => import('@/containers/Authentication/RegisterVerify'),
+);
+const OneClickDemoPage = lazy(
+ () => import('@/containers/OneClickDemo/OneClickDemoPage'),
+);
/**
* App inner.
@@ -38,36 +40,27 @@ function AppInsider({ history }) {
return (
-
-
- } />
-
-
-
-
-
-
-
+
+
+
+ } />
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ }
+ />
+ } />
+ } />
+
+
+
diff --git a/packages/webapp/src/components/Dashboard/PrivatePages.tsx b/packages/webapp/src/components/Dashboard/PrivatePages.tsx
index 85e91dead..fc81a9b55 100644
--- a/packages/webapp/src/components/Dashboard/PrivatePages.tsx
+++ b/packages/webapp/src/components/Dashboard/PrivatePages.tsx
@@ -1,35 +1,37 @@
// @ts-nocheck
-import React from 'react';
+import React, { lazy } from 'react';
import { Switch, Route } from 'react-router';
import Dashboard from '@/components/Dashboard/Dashboard';
-import SetupWizardPage from '@/containers/Setup/WizardSetupPage';
-import EnsureOrganizationIsReady from '../Guards/EnsureOrganizationIsReady';
-import EnsureOrganizationIsNotReady from '../Guards/EnsureOrganizationIsNotReady';
import { PrivatePagesProvider } from './PrivatePagesProvider';
+import EnsureOrganizationIsReady from '../Guards/EnsureOrganizationIsReady';
+import { EnsureAuthenticated } from '../Guards/EnsureAuthenticated';
+import { EnsureUserEmailVerified } from '../Guards/EnsureUserEmailVerified';
import '@/style/pages/Dashboard/Dashboard.scss';
+const SetupWizardPage = lazy(
+ () => import('@/containers/Setup/WizardSetupPage'),
+);
/**
* Dashboard inner private pages.
*/
export default function DashboardPrivatePages() {
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ } />
+
+
+
+
+
+
+
+
+
);
}
diff --git a/packages/webapp/src/components/LazyLoader.tsx b/packages/webapp/src/components/LazyLoader.tsx
deleted file mode 100644
index 99008d973..000000000
--- a/packages/webapp/src/components/LazyLoader.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-// @ts-nocheck
-import * as React from 'react';
-import * as Loadable from 'react-loadable';
-
-const Loader = (config) =>
- Loadable({
- loading: (props) => {
- if (props.error) {
- /* tslint:disable */
- console.error(`======= DefaultLoader Error =======`);
- console.error(props.error);
- console.error(`======= DefaultLoader Error =======`);
- /* tslint:enable */
- return null;
- }
- return null;
- },
- delay: 250,
- ...config
- });
-
-export default Loader;
diff --git a/packages/webapp/src/components/Preferences/PreferencesContentRoute.tsx b/packages/webapp/src/components/Preferences/PreferencesContentRoute.tsx
index 9de4144f6..199b08a56 100644
--- a/packages/webapp/src/components/Preferences/PreferencesContentRoute.tsx
+++ b/packages/webapp/src/components/Preferences/PreferencesContentRoute.tsx
@@ -1,21 +1,33 @@
// @ts-nocheck
-import React from 'react';
+import React, { Suspense } from 'react';
import { Route, Switch } from 'react-router-dom';
-import preferencesRoutes from '@/routes/preferences';
+import { getPreferenceRoutes } from '@/routes/preferences';
+import { Spinner } from '@blueprintjs/core';
+import { Box } from '../Layout';
export default function DashboardContentRoute() {
+ const preferencesRoutes = getPreferenceRoutes();
+
return (
-
- {preferencesRoutes.map((route, index) => (
-
- ))}
-
+
+
+
+ }
+ >
+
+ {preferencesRoutes.map((route, index) => (
+
+ ))}
+
+
);
}
diff --git a/packages/webapp/src/containers/Authentication/Authentication.tsx b/packages/webapp/src/containers/Authentication/Authentication.tsx
index 408dc78f0..e82856b04 100644
--- a/packages/webapp/src/containers/Authentication/Authentication.tsx
+++ b/packages/webapp/src/containers/Authentication/Authentication.tsx
@@ -2,10 +2,12 @@
import { Route, Switch, useLocation } from 'react-router-dom';
import BodyClassName from 'react-body-classname';
import styled from 'styled-components';
+import { Suspense } from 'react';
import { TransitionGroup, CSSTransition } from 'react-transition-group';
+import { Spinner } from '@blueprintjs/core';
import authenticationRoutes from '@/routes/authentication';
-import { Icon, FormattedMessage as T } from '@/components';
+import { Box, Icon, FormattedMessage as T } from '@/components';
import { AuthMetaBootProvider } from './AuthMetaBoot';
import '@/style/pages/Authentication/Auth.scss';
@@ -20,7 +22,15 @@ export function Authentication() {
-
+
+
+
+ }
+ >
+
+
diff --git a/packages/webapp/src/containers/Authentication/AuthenticationPage.tsx b/packages/webapp/src/containers/Authentication/AuthenticationPage.tsx
new file mode 100644
index 000000000..522d157c1
--- /dev/null
+++ b/packages/webapp/src/containers/Authentication/AuthenticationPage.tsx
@@ -0,0 +1,10 @@
+import { EnsureAuthNotAuthenticated } from "@/components/Guards/EnsureAuthNotAuthenticated";
+import { Authentication } from "./Authentication";
+
+export default function AuthenticationPage() {
+ return (
+
+
+
+ );
+}
diff --git a/packages/webapp/src/containers/Setup/WizardSetupPage.tsx b/packages/webapp/src/containers/Setup/WizardSetupPage.tsx
index d61eb39bd..56b9de509 100644
--- a/packages/webapp/src/containers/Setup/WizardSetupPage.tsx
+++ b/packages/webapp/src/containers/Setup/WizardSetupPage.tsx
@@ -2,14 +2,17 @@
import React from 'react';
import SetupRightSection from './SetupRightSection';
import SetupLeftSection from './SetupLeftSection';
+import EnsureOrganizationIsNotReady from '@/components/Guards/EnsureOrganizationIsNotReady';
import '@/style/pages/Setup/SetupPage.scss';
export default function WizardSetupPage() {
return (
-
-
-
-
+
+
+
+
+
+
);
-};
\ No newline at end of file
+}
diff --git a/packages/webapp/src/routes/authentication.tsx b/packages/webapp/src/routes/authentication.tsx
index 7ce79dbbc..ed2e25e40 100644
--- a/packages/webapp/src/routes/authentication.tsx
+++ b/packages/webapp/src/routes/authentication.tsx
@@ -1,43 +1,35 @@
// @ts-nocheck
-import LazyLoader from '@/components/LazyLoader';
+import { lazy } from 'react';
const BASE_URL = '/auth';
export default [
{
path: `${BASE_URL}/login`,
- component: LazyLoader({
- loader: () => import('@/containers/Authentication/Login'),
- }),
+ component: lazy(() => import('@/containers/Authentication/Login')),
},
{
path: `${BASE_URL}/send_reset_password`,
- component: LazyLoader({
- loader: () => import('@/containers/Authentication/SendResetPassword'),
- }),
+ component: lazy(
+ () => import('@/containers/Authentication/SendResetPassword'),
+ ),
},
{
path: `${BASE_URL}/reset_password/:token`,
- component: LazyLoader({
- loader: () => import('@/containers/Authentication/ResetPassword'),
- }),
+ component: lazy(() => import('@/containers/Authentication/ResetPassword')),
},
{
path: `${BASE_URL}/invite/:token/accept`,
- component: LazyLoader({
- loader: () => import('@/containers/Authentication/InviteAccept'),
- }),
+ component: lazy(() => import('@/containers/Authentication/InviteAccept')),
},
{
path: `${BASE_URL}/register/email_confirmation`,
- component: LazyLoader({
- loader: () => import('@/containers/Authentication/EmailConfirmation'),
- }),
+ component: lazy(
+ () => import('@/containers/Authentication/EmailConfirmation'),
+ ),
},
{
path: `${BASE_URL}/register`,
- component: LazyLoader({
- loader: () => import('@/containers/Authentication/Register'),
- }),
+ component: lazy(() => import('@/containers/Authentication/Register')),
},
];
diff --git a/packages/webapp/src/routes/preferences.tsx b/packages/webapp/src/routes/preferences.tsx
index 58f69f77f..5a9795c4d 100644
--- a/packages/webapp/src/routes/preferences.tsx
+++ b/packages/webapp/src/routes/preferences.tsx
@@ -1,88 +1,96 @@
// @ts-nocheck
import { lazy } from 'react';
-import General from '@/containers/Preferences/General/General';
-import Users from '../containers/Preferences/Users/Users';
-import Roles from '../containers/Preferences/Users/Roles/RolesForm/RolesFormPage';
-import Accountant from '@/containers/Preferences/Accountant/Accountant';
-import Currencies from '@/containers/Preferences/Currencies/Currencies';
-import Item from '@/containers/Preferences/Item';
-// import SMSIntegration from '../containers/Preferences/SMSIntegration';
-import DefaultRoute from '../containers/Preferences/DefaultRoute';
-import Warehouses from '../containers/Preferences/Warehouses';
-import Branches from '../containers/Preferences/Branches';
-import Invoices from '../containers/Preferences/Invoices/PreferencesInvoices';
-import { PreferencesCreditNotes } from '../containers/Preferences/CreditNotes/PreferencesCreditNotes';
-import { PreferencesEstimates } from '@/containers/Preferences/Estimates/PreferencesEstimates';
-import { PreferencesReceipts } from '@/containers/Preferences/Receipts/PreferencesReceipts';
-
-import BillingPage from '@/containers/Subscriptions/BillingPage';
const BASE_URL = '/preferences';
-export default [
+export const getPreferenceRoutes = () => [
{
path: `${BASE_URL}/general`,
- component: General,
+ component: lazy(() => import('@/containers/Preferences/General/General')),
exact: true,
},
{
path: `${BASE_URL}/users`,
- component: Users,
+ component: lazy(() => import('../containers/Preferences/Users/Users')),
exact: true,
},
{
path: `${BASE_URL}/invoices`,
- component: Invoices,
+ component: lazy(
+ () => import('../containers/Preferences/Invoices/PreferencesInvoices'),
+ ),
exact: true,
},
{
path: `${BASE_URL}/credit-notes`,
- component: PreferencesCreditNotes,
+ component: lazy(() =>
+ import(
+ '../containers/Preferences/CreditNotes/PreferencesCreditNotes'
+ ).then((module) => ({ default: module.PreferencesCreditNotes })),
+ ),
exact: true,
},
{
path: `${BASE_URL}/estimates`,
- component: PreferencesEstimates,
+ component: lazy(() =>
+ import('@/containers/Preferences/Estimates/PreferencesEstimates').then(
+ (module) => ({ default: module.PreferencesEstimates }),
+ ),
+ ),
exact: true,
},
{
path: `${BASE_URL}/receipts`,
- component: PreferencesReceipts,
+ component: lazy(() =>
+ import('@/containers/Preferences/Receipts/PreferencesReceipts').then(
+ (module) => ({ default: module.PreferencesReceipts }),
+ ),
+ ),
exact: true,
},
{
path: `${BASE_URL}/roles`,
- component: Roles,
+ component: lazy(
+ () =>
+ import('../containers/Preferences/Users/Roles/RolesForm/RolesFormPage'),
+ ),
exact: true,
},
{
path: `${BASE_URL}/roles/:id`,
- component: Roles,
+ component: lazy(
+ () =>
+ import('../containers/Preferences/Users/Roles/RolesForm/RolesFormPage'),
+ ),
exact: true,
},
{
path: `${BASE_URL}/currencies`,
- component: Currencies,
+ component: lazy(
+ () => import('@/containers/Preferences/Currencies/Currencies'),
+ ),
exact: true,
},
{
path: `${BASE_URL}/warehouses`,
- component: Warehouses,
+ component: lazy(() => import('../containers/Preferences/Warehouses')),
exact: true,
},
{
path: `${BASE_URL}/branches`,
- component: Branches,
+ component: lazy(() => import('../containers/Preferences/Branches')),
exact: true,
},
{
path: `${BASE_URL}/accountant`,
- component: Accountant,
+ component: lazy(
+ () => import('@/containers/Preferences/Accountant/Accountant'),
+ ),
exact: true,
},
{
path: `${BASE_URL}/items`,
- component: Item,
+ component: lazy(() => import('@/containers/Preferences/Item')),
exact: true,
},
// {
@@ -92,12 +100,12 @@ export default [
// },
{
path: `${BASE_URL}/billing`,
- component: BillingPage,
+ component: lazy(() => import('@/containers/Subscriptions/BillingPage')),
exact: true,
},
{
path: `${BASE_URL}/`,
- component: DefaultRoute,
+ component: lazy(() => import('../containers/Preferences/DefaultRoute')),
exact: true,
},
];