Merge branch 'master' into develop

# Conflicts:
#	packages/client/src/routes/client.js
#	packages/client/src/routes/confirm.js
#	packages/client/src/routes/general.js
#	packages/client/src/routes/portalSettings.js
#	packages/common/package.json
#	packages/components/scrollbar/styled-scrollbar.js
#	packages/editor/package.json
#	packages/shared/package.json
#	packages/shared/utils/component-loader.ts
This commit is contained in:
Alexey Safronov 2024-03-04 17:38:42 +04:00
commit 77b5986876
9 changed files with 329 additions and 208 deletions

View File

@ -1,6 +1,6 @@
{
"name": "docspace",
"version": "2.0.3",
"version": "2.0.4",
"private": true,
"workspaces": {
"packages": [

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/client",
"version": "2.0.3",
"version": "2.0.4",
"private": true,
"homepage": "",
"scripts": {

View File

@ -5,7 +5,7 @@ import loadable from "@loadable/component";
import PrivateRoute from "../components/PrivateRouteWrapper";
import PublicRoute from "../components/PublicRouteWrapper";
import Error404 from "@docspace/shared/components/errors/Error404";
import componentLoader from "@docspace/shared/utils/component-loader";
import ErrorBoundary from "../components/ErrorBoundaryWrapper";
import FilesView from "SRC_DIR/pages/Home/View/Files";
@ -14,41 +14,52 @@ import SettingsView from "SRC_DIR/pages/Home/View/Settings";
import { generalRoutes } from "./general";
const Client = loadable(() => import("../Client"));
const Client = loadable(() => componentLoader(() => import("../Client")));
const Home = loadable(() => import("../pages/Home"));
const Home = loadable(() => componentLoader(() => import("../pages/Home")));
const Sdk = loadable(() => import("../pages/Sdk"));
const Sdk = loadable(() => componentLoader(() => import("../pages/Sdk")));
const FormGallery = loadable(() => import("../pages/FormGallery"));
const PublicRoom = loadable(() => import("../pages/PublicRoom"));
const About = loadable(() => import("../pages/About"));
const Wizard = loadable(() => import("../pages/Wizard"));
const PreparationPortal = loadable(() => import("../pages/PreparationPortal"));
const PortalUnavailable = loadable(() => import("../pages/PortalUnavailable"));
const ErrorUnavailable = loadable(
() => import("../components/ErrorUnavailableWrapper"),
const FormGallery = loadable(() =>
componentLoader(() => import("../pages/FormGallery")),
);
const AccessRestricted = loadable(
() => import("@docspace/shared/components/errors/AccessRestricted"),
const PublicRoom = loadable(() =>
componentLoader(() => import("../pages/PublicRoom")),
);
const About = loadable(() => componentLoader(() => import("../pages/About")));
const Wizard = loadable(() => componentLoader(() => import("../pages/Wizard")));
const PreparationPortal = loadable(() =>
componentLoader(() => import("../pages/PreparationPortal")),
);
const PortalUnavailable = loadable(() =>
componentLoader(() => import("../pages/PortalUnavailable")),
);
const ErrorUnavailable = loadable(() =>
componentLoader(() => import("../components/ErrorUnavailableWrapper")),
);
const Error401 = loadable(
() => import("@docspace/shared/components/errors/Error401"),
const Error401 = loadable(() =>
componentLoader(() => import("@docspace/shared/components/errors/Error401")),
);
const Error403 = loadable(
() => import("@docspace/shared/components/errors/Error403"),
const Error403 = loadable(() =>
componentLoader(() => import("@docspace/shared/components/errors/Error403")),
);
const Error520 = loadable(() => import("../components/Error520Wrapper"));
const ErrorAccessRestricted = loadable(
() => import("@docspace/shared/components/errors/AccessRestricted"),
const Error520 = loadable(() =>
componentLoader(() => import("../components/Error520Wrapper")),
);
const ErrorOffline = loadable(
() => import("@docspace/shared/components/errors/ErrorOffline"),
const ErrorAccessRestricted = loadable(() =>
componentLoader(
() => import("@docspace/shared/components/errors/AccessRestricted"),
),
);
const ErrorOffline = loadable(() =>
componentLoader(
() => import("@docspace/shared/components/errors/ErrorOffline"),
),
);
const ClientRoutes = [
@ -413,7 +424,7 @@ const ClientRoutes = [
element: (
<PublicRoute>
<ErrorBoundary>
<AccessRestricted />
<ErrorAccessRestricted />
</ErrorBoundary>
</PublicRoute>
),

View File

@ -3,52 +3,69 @@ import loadable from "@loadable/component";
import ConfirmRoute from "../helpers/confirmRoute";
import ErrorBoundary from "../components/ErrorBoundaryWrapper";
import componentLoader from "@docspace/shared/utils/component-loader";
import Error404 from "@docspace/shared/components/errors/Error404";
import { AuthenticatedAction } from "../helpers/enums";
const Confirm = loadable(() => import("../pages/Confirm"));
const Confirm = loadable(() =>
componentLoader(() => import("../pages/Confirm")),
);
const ActivateUserForm = loadable(
() => import("../pages/Confirm/sub-components/activateUser")
const ActivateUserForm = loadable(() =>
componentLoader(() => import("../pages/Confirm/sub-components/activateUser")),
);
const CreateUserForm = loadable(
() => import("../pages/Confirm/sub-components/createUser")
const CreateUserForm = loadable(() =>
componentLoader(() => import("../pages/Confirm/sub-components/createUser")),
);
const ChangePasswordForm = loadable(
() => import("../pages/Confirm/sub-components/changePassword")
const ChangePasswordForm = loadable(() =>
componentLoader(
() => import("../pages/Confirm/sub-components/changePassword"),
),
);
const ActivateEmailForm = loadable(
() => import("../pages/Confirm/sub-components/activateEmail")
const ActivateEmailForm = loadable(() =>
componentLoader(
() => import("../pages/Confirm/sub-components/activateEmail"),
),
);
const ChangeEmailForm = loadable(
() => import("../pages/Confirm/sub-components/changeEmail")
const ChangeEmailForm = loadable(() =>
componentLoader(() => import("../pages/Confirm/sub-components/changeEmail")),
);
const ChangePhoneForm = loadable(
() => import("../pages/Confirm/sub-components/changePhone")
const ChangePhoneForm = loadable(() =>
componentLoader(() => import("../pages/Confirm/sub-components/changePhone")),
);
const ProfileRemoveForm = loadable(
() => import("../pages/Confirm/sub-components/profileRemove")
const ProfileRemoveForm = loadable(() =>
componentLoader(
() => import("../pages/Confirm/sub-components/profileRemove"),
),
);
const ChangeOwnerForm = loadable(
() => import("../pages/Confirm/sub-components/changeOwner")
const ChangeOwnerForm = loadable(() =>
componentLoader(() => import("../pages/Confirm/sub-components/changeOwner")),
);
const TfaAuthForm = loadable(
() => import("../pages/Confirm/sub-components/tfaAuth")
const TfaAuthForm = loadable(() =>
componentLoader(() => import("../pages/Confirm/sub-components/tfaAuth")),
);
const TfaActivationForm = loadable(
() => import("../pages/Confirm/sub-components/tfaActivation")
const TfaActivationForm = loadable(() =>
componentLoader(
() => import("../pages/Confirm/sub-components/tfaActivation"),
),
);
const RemovePortal = loadable(
() => import("../pages/Confirm/sub-components/removePortal")
const RemovePortal = loadable(() =>
componentLoader(() => import("../pages/Confirm/sub-components/removePortal")),
);
const DeactivatePortal = loadable(
() => import("../pages/Confirm/sub-components/deactivatePortal")
const DeactivatePortal = loadable(() =>
componentLoader(
() => import("../pages/Confirm/sub-components/deactivatePortal"),
),
);
const ContinuePortal = loadable(
() => import("../pages/Confirm/sub-components/continuePortal")
const ContinuePortal = loadable(() =>
componentLoader(
() => import("../pages/Confirm/sub-components/continuePortal"),
),
);
const Auth = loadable(() =>
componentLoader(() => import("../pages/Confirm/sub-components/auth")),
);
const Auth = loadable(() => import("../pages/Confirm/sub-components/auth"));
const confirmRoutes = [
{

View File

@ -1,11 +1,13 @@
import React from "react";
import { Navigate } from "react-router-dom";
import loadable from "@loadable/component";
import PrivateRoute from "../components/PrivateRouteWrapper";
import componentLoader from "@docspace/shared/utils/component-loader";
const Profile = loadable(() => import("../pages/Profile"));
const Profile = loadable(() =>
componentLoader(() => import("../pages/Profile")),
);
const generalRoutes = [
{

View File

@ -4,174 +4,242 @@ import loadable from "@loadable/component";
import PrivateRoute from "../components/PrivateRouteWrapper";
import ErrorBoundary from "../components/ErrorBoundaryWrapper";
import componentLoader from "@docspace/shared/utils/component-loader";
import Error404 from "@docspace/shared/components/errors/Error404";
import { generalRoutes } from "./general";
const PortalSettings = loadable(() => import("../pages/PortalSettings"));
const CustomizationSettings = loadable(
() => import("../pages/PortalSettings/categories/common/index.js"),
);
const LanguageAndTimeZoneSettings = loadable(
() =>
import(
"../pages/PortalSettings/categories/common/Customization/language-and-time-zone"
),
);
const WelcomePageSettings = loadable(
() =>
import(
"../pages/PortalSettings/categories/common/Customization/welcome-page-settings"
),
);
const DNSSettings = loadable(
() =>
import(
"../pages/PortalSettings/categories/common/Customization/dns-settings"
),
);
const PortalRenaming = loadable(
() =>
import(
"../pages/PortalSettings/categories/common/Customization/portal-renaming"
),
);
const WhiteLabel = loadable(
() => import("../pages/PortalSettings/categories/common/Branding/whitelabel"),
);
const CompanyInfoSettings = loadable(
() =>
import(
"../pages/PortalSettings/categories/common/Branding/companyInfoSettings"
),
);
const AdditionalResources = loadable(
() =>
import(
"../pages/PortalSettings/categories/common/Branding/additionalResources"
),
);
const SecuritySettings = loadable(
() => import("../pages/PortalSettings/categories/security/index.js"),
);
const TfaPage = loadable(
() => import("../pages/PortalSettings/categories/security/access-portal/tfa"),
);
const PasswordStrengthPage = loadable(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/passwordStrength"
),
);
const TrustedMailPage = loadable(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/trustedMail"
),
);
const IpSecurityPage = loadable(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/ipSecurity"
),
);
const BruteForceProtectionPage = loadable(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/bruteForceProtection"
),
);
const AdminMessagePage = loadable(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/adminMessage"
),
);
const SessionLifetimePage = loadable(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/sessionLifetime"
),
);
const Integration = loadable(
() => import("../pages/PortalSettings/categories/integration"),
);
const Payments = loadable(
() => import("../pages/PortalSettings/categories/payments"),
);
const Statistics = loadable(
() => import("../pages/PortalSettings/categories/storage-management"),
);
const QuotaPerRoom = loadable(
() =>
import(
"../pages/PortalSettings/categories/storage-management/sub-components/QuotaPerRoom.js"
),
);
const QuotaPerUser = loadable(
() =>
import(
"../pages/PortalSettings/categories/storage-management/sub-components/QuotaPerUser.js"
),
);
const ThirdParty = loadable(
() =>
import(
"../pages/PortalSettings/categories/integration/ThirdPartyServicesSettings"
),
const PortalSettings = loadable(() =>
componentLoader(() => import("../pages/PortalSettings")),
);
const DocumentService = loadable(
() =>
import("../pages/PortalSettings/categories/integration/DocumentService"),
const Statistics = loadable(() =>
componentLoader(
() => import("../pages/PortalSettings/categories/storage-management"),
),
);
const QuotaPerRoom = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/storage-management/sub-components/QuotaPerRoom.js"
),
),
);
const QuotaPerUser = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/storage-management/sub-components/QuotaPerUser.js"
),
),
);
const SingleSignOn = loadable(
() => import("../pages/PortalSettings/categories/integration/SingleSignOn"),
const CustomizationSettings = loadable(() =>
componentLoader(
() => import("../pages/PortalSettings/categories/common/index.js"),
),
);
const SPSettings = loadable(
() =>
import(
"../pages/PortalSettings/categories/integration/SingleSignOn/SPSettings"
),
const LanguageAndTimeZoneSettings = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/common/Customization/language-and-time-zone"
),
),
);
const SPMetadata = loadable(
() =>
import(
"../pages/PortalSettings/categories/integration/SingleSignOn/ProviderMetadata"
),
const WelcomePageSettings = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/common/Customization/welcome-page-settings"
),
),
);
const DNSSettings = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/common/Customization/dns-settings"
),
),
);
const PortalRenaming = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/common/Customization/portal-renaming"
),
),
);
const WhiteLabel = loadable(() =>
componentLoader(
() =>
import("../pages/PortalSettings/categories/common/Branding/whitelabel"),
),
);
const CompanyInfoSettings = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/common/Branding/companyInfoSettings"
),
),
);
const AdditionalResources = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/common/Branding/additionalResources"
),
),
);
const SecuritySettings = loadable(() =>
componentLoader(
() => import("../pages/PortalSettings/categories/security/index.js"),
),
);
const TfaPage = loadable(() =>
componentLoader(
() =>
import("../pages/PortalSettings/categories/security/access-portal/tfa"),
),
);
const PasswordStrengthPage = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/passwordStrength"
),
),
);
const TrustedMailPage = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/trustedMail"
),
),
);
const IpSecurityPage = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/ipSecurity"
),
),
);
const BruteForceProtectionPage = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/bruteForceProtection"
),
),
);
const AdminMessagePage = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/adminMessage"
),
),
);
const SessionLifetimePage = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/security/access-portal/sessionLifetime"
),
),
);
const Integration = loadable(() =>
componentLoader(
() => import("../pages/PortalSettings/categories/integration"),
),
);
const Payments = loadable(() =>
componentLoader(() => import("../pages/PortalSettings/categories/payments")),
);
// const ThirdParty = loadable(() =>
// componentLoader(
// () =>
// import(
// "../pages/PortalSettings/categories/integration/ThirdPartyServicesSettings"
// ),
// ),
// );
// const DocumentService = loadable(() =>
// componentLoader(
// () =>
// import("../pages/PortalSettings/categories/integration/DocumentService"),
// ),
// );
// const SingleSignOn = loadable(() =>
// componentLoader(
// () => import("../pages/PortalSettings/categories/integration/SingleSignOn"),
// ),
// );
const SPSettings = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/integration/SingleSignOn/SPSettings"
),
),
);
const SPMetadata = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/integration/SingleSignOn/ProviderMetadata"
),
),
);
const DeveloperTools = loadable(
() => import("../pages/PortalSettings/categories/developer-tools/index.js"),
const DeveloperTools = loadable(() =>
componentLoader(
() => import("../pages/PortalSettings/categories/developer-tools/index.js"),
),
);
const WebhookHistory = loadable(
() =>
import(
"../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookHistory"
),
const WebhookHistory = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookHistory"
),
),
);
const WebhookDetails = loadable(
() =>
import(
"../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookEventDetails"
),
const WebhookDetails = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/developer-tools/Webhooks/WebhookEventDetails"
),
),
);
const Backup = loadable(
() => import("../pages/PortalSettings/categories/data-management/index"),
const Backup = loadable(() =>
componentLoader(
() => import("../pages/PortalSettings/categories/data-management/index"),
),
);
const DeleteDataPage = loadable(
() => import("../pages/PortalSettings/categories/delete-data"),
const DeleteDataPage = loadable(() =>
componentLoader(
() => import("../pages/PortalSettings/categories/delete-data"),
),
);
const RestoreBackup = loadable(
() =>
import(
"../pages/PortalSettings/categories/data-management/backup/restore-backup/index"
),
const RestoreBackup = loadable(() =>
componentLoader(
() =>
import(
"../pages/PortalSettings/categories/data-management/backup/restore-backup/index"
),
),
);
const Bonus = loadable(() => import("../pages/Bonus"));
const Bonus = loadable(() => componentLoader(() => import("../pages/Bonus")));
const SimpleRoom = loadable(
() =>

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/login",
"version": "2.0.3",
"version": "2.0.4",
"private": true,
"homepage": "/login",
"scripts": {

View File

@ -1,6 +1,6 @@
{
"name": "@docspace/shared",
"version": "2.0.3",
"version": "2.0.4",
"private": true,
"scripts": {
"build": "echo 'skip it'",
@ -175,3 +175,4 @@
"react-dom": "^18.2.0"
}
}

View File

@ -0,0 +1,22 @@
export default function componentLoader(
lazyComponent: Function,
attemptsLeft: number = 3
) {
return new Promise((resolve, reject) => {
lazyComponent()
.then(resolve)
.catch((error: unknown) => {
// let us retry after 1500 ms
setTimeout(() => {
if (attemptsLeft === 1) {
reject(error);
return;
}
componentLoader(lazyComponent, attemptsLeft - 1).then(
resolve,
reject
);
}, 1500);
});
});
}