Skip to content

Commit b667ef9

Browse files
committed
Step 3.2: Stop using getComponent in code
1 parent d977865 commit b667ef9

18 files changed

+54
-93
lines changed

src/Analytics.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import { getCurrentLanguage, _t, _td, IVariables } from './languageHandler';
2323
import PlatformPeg from './PlatformPeg';
2424
import SdkConfig from './SdkConfig';
2525
import Modal from './Modal';
26-
import * as sdk from './index';
26+
import ErrorDialog from "./components/views/dialogs/ErrorDialog";
2727
import { SnakedObject } from "./utils/SnakedObject";
2828
import { IConfigOptions } from "./IConfigOptions";
2929

@@ -406,14 +406,12 @@ export class Analytics {
406406
{ expl: _td('Your device resolution'), value: resolution },
407407
];
408408

409-
// FIXME: Using an import will result in test failures
410409
const piwikConfig = SdkConfig.get("piwik");
411410
let piwik: Optional<SnakedObject<Extract<IConfigOptions["piwik"], object>>>;
412411
if (typeof piwikConfig === 'object') {
413412
piwik = new SnakedObject(piwikConfig);
414413
}
415414
const cookiePolicyUrl = piwik?.get("policy_url");
416-
const ErrorDialog = sdk.getComponent('dialogs.ErrorDialog');
417415
const cookiePolicyLink = _t(
418416
"Our complete cookie policy can be found <CookiePolicyLink>here</CookiePolicyLink>.",
419417
{},

src/AsyncWrapper.tsx

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ limitations under the License.
1717
import React, { ComponentType } from "react";
1818
import { logger } from "matrix-js-sdk/src/logger";
1919

20-
import * as sdk from './index';
2120
import { _t } from './languageHandler';
2221
import { IDialogProps } from "./components/views/dialogs/IDialogProps";
22+
import BaseDialog from "./components/views/dialogs/BaseDialog";
23+
import DialogButtons from "./components/views/elements/DialogButtons";
24+
import Spinner from "./components/views/elements/Spinner";
2325

2426
type AsyncImport<T> = { default: T };
2527

@@ -78,9 +80,6 @@ export default class AsyncWrapper extends React.Component<IProps, IState> {
7880
const Component = this.state.component;
7981
return <Component {...this.props} />;
8082
} else if (this.state.error) {
81-
// FIXME: Using an import will result in test failures
82-
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
83-
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
8483
return <BaseDialog onFinished={this.props.onFinished} title={_t("Error")}>
8584
{ _t("Unable to load! Check your network connectivity and try again.") }
8685
<DialogButtons primaryButton={_t("Dismiss")}
@@ -90,7 +89,6 @@ export default class AsyncWrapper extends React.Component<IProps, IState> {
9089
</BaseDialog>;
9190
} else {
9291
// show a spinner until the component is loaded.
93-
const Spinner = sdk.getComponent("elements.Spinner");
9492
return <Spinner />;
9593
}
9694
}

src/ContentMessages.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import { THREAD_RELATION_TYPE } from "matrix-js-sdk/src/models/thread";
2828

2929
import { IEncryptedFile, IMediaEventInfo } from "./customisations/models/IMediaEventContent";
3030
import dis from './dispatcher/dispatcher';
31-
import * as sdk from './index';
3231
import { _t } from './languageHandler';
3332
import Modal from './Modal';
3433
import Spinner from "./components/views/elements/Spinner";
@@ -47,6 +46,9 @@ import { decorateStartSendingTime, sendRoundTripMetric } from "./sendTimePerform
4746
import { TimelineRenderingType } from "./contexts/RoomContext";
4847
import RoomViewStore from "./stores/RoomViewStore";
4948
import { addReplyToMessageContent } from "./utils/Reply";
49+
import ErrorDialog from "./components/views/dialogs/ErrorDialog";
50+
import UploadFailureDialog from "./components/views/dialogs/UploadFailureDialog";
51+
import UploadConfirmDialog from "./components/views/dialogs/UploadConfirmDialog";
5052

5153
const MAX_WIDTH = 800;
5254
const MAX_HEIGHT = 600;
@@ -485,8 +487,6 @@ export default class ContentMessages {
485487
}
486488

487489
if (tooBigFiles.length > 0) {
488-
// FIXME: Using an import will result in Element crashing
489-
const UploadFailureDialog = sdk.getComponent("dialogs.UploadFailureDialog");
490490
const { finished } = Modal.createTrackedDialog<[boolean]>('Upload Failure', '', UploadFailureDialog, {
491491
badFiles: tooBigFiles,
492492
totalFiles: files.length,
@@ -503,8 +503,6 @@ export default class ContentMessages {
503503
for (let i = 0; i < okFiles.length; ++i) {
504504
const file = okFiles[i];
505505
if (!uploadAll) {
506-
// FIXME: Using an import will result in Element crashing
507-
const UploadConfirmDialog = sdk.getComponent("dialogs.UploadConfirmDialog");
508506
const { finished } = Modal.createTrackedDialog<[boolean, boolean]>('Upload Files confirmation',
509507
'', UploadConfirmDialog, {
510508
file,
@@ -686,8 +684,6 @@ export default class ContentMessages {
686684
{ fileName: upload.fileName },
687685
);
688686
}
689-
// FIXME: Using an import will result in Element crashing
690-
const ErrorDialog = sdk.getComponent("dialogs.ErrorDialog");
691687
Modal.createTrackedDialog('Upload failed', '', ErrorDialog, {
692688
title: _t('Upload Failed'),
693689
description: desc,

src/MatrixClientPeg.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import { verificationMethods } from 'matrix-js-sdk/src/crypto';
2727
import { SHOW_QR_CODE_METHOD } from "matrix-js-sdk/src/crypto/verification/QRCode";
2828
import { logger } from "matrix-js-sdk/src/logger";
2929

30-
import * as sdk from './index';
3130
import createMatrixClient from './utils/createMatrixClient';
3231
import SettingsStore from './settings/SettingsStore';
3332
import MatrixActionCreators from './actions/MatrixActionCreators';
@@ -37,6 +36,7 @@ import * as StorageManager from './utils/StorageManager';
3736
import IdentityAuthClient from './IdentityAuthClient';
3837
import { crossSigningCallbacks, tryToUnlockSecretStorageWithDehydrationKey } from './SecurityManager';
3938
import SecurityCustomisations from "./customisations/Security";
39+
import CryptoStoreTooNewDialog from "./components/views/dialogs/CryptoStoreTooNewDialog";
4040

4141
export interface IMatrixClientCreds {
4242
homeserverUrl: string;
@@ -200,9 +200,6 @@ class MatrixClientPegClass implements IMatrixClientPeg {
200200
} catch (e) {
201201
if (e && e.name === 'InvalidCryptoStoreError') {
202202
// The js-sdk found a crypto DB too new for it to use
203-
// FIXME: Using an import will result in test failures
204-
const CryptoStoreTooNewDialog =
205-
sdk.getComponent("views.dialogs.CryptoStoreTooNewDialog");
206203
Modal.createDialog(CryptoStoreTooNewDialog);
207204
}
208205
// this can happen for a number of reasons, the most likely being

src/SecurityManager.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import { logger } from "matrix-js-sdk/src/logger";
2525
import { ComponentType } from "react";
2626

2727
import Modal from './Modal';
28-
import * as sdk from './index';
2928
import { MatrixClientPeg } from './MatrixClientPeg';
3029
import { _t } from './languageHandler';
3130
import { isSecureBackupRequired } from './utils/WellKnownUtils';
@@ -34,6 +33,7 @@ import RestoreKeyBackupDialog from './components/views/dialogs/security/RestoreK
3433
import SettingsStore from "./settings/SettingsStore";
3534
import SecurityCustomisations from "./customisations/Security";
3635
import QuestionDialog from "./components/views/dialogs/QuestionDialog";
36+
import InteractiveAuthDialog from "./components/views/dialogs/InteractiveAuthDialog";
3737

3838
// This stores the secret storage private keys in memory for the JS SDK. This is
3939
// only meant to act as a cache to avoid prompting the user multiple times
@@ -360,8 +360,6 @@ export async function accessSecretStorage(func = async () => { }, forceReset = f
360360
throw new Error("Secret storage creation canceled");
361361
}
362362
} else {
363-
// FIXME: Using an import will result in test failures
364-
const InteractiveAuthDialog = sdk.getComponent("dialogs.InteractiveAuthDialog");
365363
await cli.bootstrapCrossSigning({
366364
authUploadDeviceSigningKeys: async (makeRequest) => {
367365
const { finished } = Modal.createTrackedDialog(

src/Terms.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ import { SERVICE_TYPES } from 'matrix-js-sdk/src/service-types';
1919
import { logger } from "matrix-js-sdk/src/logger";
2020

2121
import { MatrixClientPeg } from './MatrixClientPeg';
22-
import * as sdk from '.';
2322
import Modal from './Modal';
23+
import TermsDialog from "./components/views/dialogs/TermsDialog";
2424

2525
export class TermsNotSignedError extends Error {}
2626

@@ -189,8 +189,6 @@ export async function dialogTermsInteractionCallback(
189189
extraClassNames?: string,
190190
): Promise<string[]> {
191191
logger.log("Terms that need agreement", policiesAndServicePairs);
192-
// FIXME: Using an import will result in test failures
193-
const TermsDialog = sdk.getComponent("views.dialogs.TermsDialog");
194192

195193
const { finished } = Modal.createTrackedDialog<[boolean, string[]]>('Terms of Service', '', TermsDialog, {
196194
policiesAndServicePairs,

src/components/structures/HomePage.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import AutoHideScrollbar from './AutoHideScrollbar';
2121
import { getHomePageUrl } from "../../utils/pages";
2222
import { _tDom } from "../../languageHandler";
2323
import SdkConfig from "../../SdkConfig";
24-
import * as sdk from "../../index";
2524
import dis from "../../dispatcher/dispatcher";
2625
import { Action } from "../../dispatcher/actions";
2726
import BaseAvatar from "../views/avatars/BaseAvatar";
@@ -33,6 +32,7 @@ import MatrixClientContext from "../../contexts/MatrixClientContext";
3332
import MiniAvatarUploader, { AVATAR_SIZE } from "../views/elements/MiniAvatarUploader";
3433
import Analytics from "../../Analytics";
3534
import PosthogTrackers from "../../PosthogTrackers";
35+
import EmbeddedPage from "./EmbeddedPage";
3636

3737
const onClickSendDm = () => {
3838
Analytics.trackEvent('home_page', 'button', 'dm');
@@ -94,8 +94,6 @@ const HomePage: React.FC<IProps> = ({ justRegistered = false }) => {
9494
const pageUrl = getHomePageUrl(config);
9595

9696
if (pageUrl) {
97-
// FIXME: Using an import will result in wrench-element-tests failures
98-
const EmbeddedPage = sdk.getComponent('structures.EmbeddedPage');
9997
return <EmbeddedPage className="mx_HomePage" url={pageUrl} scrollbar={true} />;
10098
}
10199

src/components/views/auth/Welcome.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ limitations under the License.
1717
import React from 'react';
1818
import classNames from "classnames";
1919

20-
import * as sdk from "../../../index";
2120
import SdkConfig from '../../../SdkConfig';
2221
import AuthPage from "./AuthPage";
2322
import { _td } from "../../../languageHandler";
2423
import SettingsStore from "../../../settings/SettingsStore";
2524
import { UIFeature } from "../../../settings/UIFeature";
2625
import LanguageSelector from "./LanguageSelector";
26+
import EmbeddedPage from "../../structures/EmbeddedPage";
2727

2828
// translatable strings for Welcome pages
2929
_td("Sign in with SSO");
@@ -34,9 +34,6 @@ interface IProps {
3434

3535
export default class Welcome extends React.PureComponent<IProps> {
3636
public render(): React.ReactNode {
37-
// FIXME: Using an import will result in wrench-element-tests failures
38-
const EmbeddedPage = sdk.getComponent("structures.EmbeddedPage");
39-
4037
const pagesConfig = SdkConfig.getObject("embedded_pages");
4138
let pageUrl = null;
4239
if (pagesConfig) {

src/components/views/dialogs/InfoDialog.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ import React, { ReactNode, KeyboardEvent } from 'react';
1919
import classNames from "classnames";
2020

2121
import { _t } from '../../../languageHandler';
22-
import * as sdk from '../../../index';
2322
import { IDialogProps } from "./IDialogProps";
23+
import BaseDialog from "./BaseDialog";
24+
import DialogButtons from "../elements/DialogButtons";
2425

2526
interface IProps extends IDialogProps {
2627
title?: string;
@@ -44,9 +45,6 @@ export default class InfoDialog extends React.Component<IProps> {
4445
};
4546

4647
render() {
47-
// FIXME: Using a regular import will break the app
48-
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
49-
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
5048
return (
5149
<BaseDialog
5250
className="mx_InfoDialog"

src/components/views/dialogs/QuestionDialog.tsx

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ limitations under the License.
1818
import React from 'react';
1919
import classNames from "classnames";
2020

21-
import * as sdk from '../../../index';
2221
import { _t } from '../../../languageHandler';
2322
import { IDialogProps } from "./IDialogProps";
23+
import BaseDialog from "./BaseDialog";
24+
import DialogButtons from "../elements/DialogButtons";
2425

2526
interface IProps extends IDialogProps {
2627
title?: string;
@@ -58,10 +59,6 @@ export default class QuestionDialog extends React.Component<IProps> {
5859
};
5960

6061
public render(): JSX.Element {
61-
// Converting these to imports breaks wrench tests
62-
const BaseDialog = sdk.getComponent('views.dialogs.BaseDialog');
63-
const DialogButtons = sdk.getComponent('views.elements.DialogButtons');
64-
6562
let primaryButtonClass = "";
6663
if (this.props.danger) {
6764
primaryButtonClass = "danger";

0 commit comments

Comments
 (0)