diff --git a/src/Analytics.tsx b/src/Analytics.tsx
index 6a1608b63f..ce8287de56 100644
--- a/src/Analytics.tsx
+++ b/src/Analytics.tsx
@@ -21,7 +21,7 @@ import { getCurrentLanguage, _t, _td, IVariables } from './languageHandler';
import PlatformPeg from './PlatformPeg';
import SdkConfig from './SdkConfig';
import Modal from './Modal';
-import ErrorDialog from './components/views/dialogs/ErrorDialog';
+import * as sdk from './index';
const hashRegex = /#\/(groups?|room|user|settings|register|login|forgot_password|home|directory)/;
const hashVarRegex = /#\/(group|room|user)\/.*$/;
@@ -390,6 +390,8 @@ export class Analytics {
{ expl: _td('Your device resolution'), value: resolution },
];
+ // FIXME: Using an import will result in test failures
+ const ErrorDialog = sdk.getComponent('dialogs.ErrorDialog');
Modal.createTrackedDialog('Analytics Details', '', ErrorDialog, {
title: _t('Analytics'),
description:
diff --git a/src/AsyncWrapper.tsx b/src/AsyncWrapper.tsx
index 5d3531be62..ef8924add8 100644
--- a/src/AsyncWrapper.tsx
+++ b/src/AsyncWrapper.tsx
@@ -16,11 +16,9 @@ limitations under the License.
import React, { ComponentType } from "react";
+import * as sdk from './index';
import { _t } from './languageHandler';
import { IDialogProps } from "./components/views/dialogs/IDialogProps";
-import BaseDialog from "./components/views/dialogs/BaseDialog";
-import Spinner from "./components/views/elements/Spinner";
-import DialogButtons from "./components/views/elements/DialogButtons";
type AsyncImport = { default: T };
@@ -79,6 +77,9 @@ export default class AsyncWrapper extends React.Component {
const Component = this.state.component;
return ;
} else if (this.state.error) {
+ // FIXME: Using an import will result in test failures
+ const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
+ const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
return
{ _t("Unable to load! Check your network connectivity and try again.") }
{
;
} else {
// show a spinner until the component is loaded.
+ const Spinner = sdk.getComponent("elements.Spinner");
return ;
}
}
diff --git a/src/MatrixClientPeg.ts b/src/MatrixClientPeg.ts
index 7b3c069412..063c5f4cad 100644
--- a/src/MatrixClientPeg.ts
+++ b/src/MatrixClientPeg.ts
@@ -23,6 +23,7 @@ import { MemoryStore } from 'matrix-js-sdk/src/store/memory';
import * as utils from 'matrix-js-sdk/src/utils';
import { EventTimeline } from 'matrix-js-sdk/src/models/event-timeline';
import { EventTimelineSet } from 'matrix-js-sdk/src/models/event-timeline-set';
+import * as sdk from './index';
import createMatrixClient from './utils/createMatrixClient';
import SettingsStore from './settings/SettingsStore';
import MatrixActionCreators from './actions/MatrixActionCreators';
@@ -34,7 +35,6 @@ import IdentityAuthClient from './IdentityAuthClient';
import { crossSigningCallbacks, tryToUnlockSecretStorageWithDehydrationKey } from './SecurityManager';
import { SHOW_QR_CODE_METHOD } from "matrix-js-sdk/src/crypto/verification/QRCode";
import SecurityCustomisations from "./customisations/Security";
-import CryptoStoreTooNewDialog from "./components/views/dialogs/CryptoStoreTooNewDialog";
export interface IMatrixClientCreds {
homeserverUrl: string;
@@ -219,6 +219,9 @@ class _MatrixClientPeg implements IMatrixClientPeg {
} catch (e) {
if (e && e.name === 'InvalidCryptoStoreError') {
// The js-sdk found a crypto DB too new for it to use
+ // FIXME: Using an import will result in test failures
+ const CryptoStoreTooNewDialog =
+ sdk.getComponent("views.dialogs.CryptoStoreTooNewDialog");
Modal.createDialog(CryptoStoreTooNewDialog);
}
// this can happen for a number of reasons, the most likely being
diff --git a/src/SecurityManager.ts b/src/SecurityManager.ts
index b6736cb69c..6805dfde19 100644
--- a/src/SecurityManager.ts
+++ b/src/SecurityManager.ts
@@ -17,6 +17,7 @@ limitations under the License.
import { ICryptoCallbacks, ISecretStorageKeyInfo } from 'matrix-js-sdk/src/matrix';
import { MatrixClient } from 'matrix-js-sdk/src/client';
import Modal from './Modal';
+import * as sdk from './index';
import { MatrixClientPeg } from './MatrixClientPeg';
import { deriveKey } from 'matrix-js-sdk/src/crypto/key_passphrase';
import { decodeRecoveryKey } from 'matrix-js-sdk/src/crypto/recoverykey';
@@ -28,8 +29,6 @@ import RestoreKeyBackupDialog from './components/views/dialogs/security/RestoreK
import SettingsStore from "./settings/SettingsStore";
import SecurityCustomisations from "./customisations/Security";
import { DeviceTrustLevel } from 'matrix-js-sdk/src/crypto/CrossSigning';
-import InteractiveAuthDialog from "./components/views/dialogs/InteractiveAuthDialog";
-import QuestionDialog from "./components/views/dialogs/QuestionDialog";
// This stores the secret storage private keys in memory for the JS SDK. This is
// only meant to act as a cache to avoid prompting the user multiple times
@@ -69,6 +68,7 @@ export class AccessCancelledError extends Error {
}
async function confirmToDismiss(): Promise {
+ const QuestionDialog = sdk.getComponent("dialogs.QuestionDialog");
const [sure] = await Modal.createDialog(QuestionDialog, {
title: _t("Cancel entering passphrase?"),
description: _t("Are you sure you want to cancel entering passphrase?"),
@@ -354,6 +354,8 @@ export async function accessSecretStorage(func = async () => { }, forceReset = f
throw new Error("Secret storage creation canceled");
}
} else {
+ // FIXME: Using an import will result in test failures
+ const InteractiveAuthDialog = sdk.getComponent("dialogs.InteractiveAuthDialog");
await cli.bootstrapCrossSigning({
authUploadDeviceSigningKeys: async (makeRequest) => {
const { finished } = Modal.createTrackedDialog(
diff --git a/src/Terms.ts b/src/Terms.ts
index d07555e567..351d1c0951 100644
--- a/src/Terms.ts
+++ b/src/Terms.ts
@@ -18,8 +18,8 @@ import classNames from 'classnames';
import { SERVICE_TYPES } from 'matrix-js-sdk/src/service-types';
import { MatrixClientPeg } from './MatrixClientPeg';
+import * as sdk from '.';
import Modal from './Modal';
-import TermsDialog from './components/views/dialogs/TermsDialog';
export class TermsNotSignedError extends Error {}
@@ -189,6 +189,8 @@ export function dialogTermsInteractionCallback(
): Promise {
return new Promise((resolve, reject) => {
console.log("Terms that need agreement", policiesAndServicePairs);
+ // FIXME: Using an import will result in test failures
+ const TermsDialog = sdk.getComponent("views.dialogs.TermsDialog");
Modal.createTrackedDialog('Terms of Service', '', TermsDialog, {
policiesAndServicePairs,