Skip to content

Commit 8107f1d

Browse files
authored
Conform more of the codebase to strict types (matrix-org#11191)
1 parent 4044c2a commit 8107f1d

25 files changed

+88
-57
lines changed

src/ScalarMessaging.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,8 @@ async function setBotPower(
626626
success: true,
627627
});
628628
} catch (err) {
629-
sendError(event, err instanceof Error ? err.message : _t("Failed to send request."), err);
629+
const error = err instanceof Error ? err : undefined;
630+
sendError(event, error?.message ?? _t("Failed to send request."), error);
630631
}
631632
}
632633

src/SlashCommands.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,7 +1105,7 @@ export const Commands = [
11051105
try {
11061106
cli.forceDiscardSession(roomId);
11071107
} catch (e) {
1108-
return reject(e.message);
1108+
return reject(e instanceof Error ? e.message : e);
11091109
}
11101110
return success();
11111111
},
@@ -1134,7 +1134,7 @@ export const Commands = [
11341134
}),
11351135
);
11361136
} catch (e) {
1137-
return reject(e.message);
1137+
return reject(e instanceof Error ? e.message : e);
11381138
}
11391139
},
11401140
category: CommandCategories.advanced,

src/async-components/views/dialogs/security/CreateSecretStorageDialog.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ import FileSaver from "file-saver";
2020
import { logger } from "matrix-js-sdk/src/logger";
2121
import { IKeyBackupInfo } from "matrix-js-sdk/src/crypto/keybackup";
2222
import { TrustInfo } from "matrix-js-sdk/src/crypto/backup";
23-
import { CrossSigningKeys, MatrixError, UIAFlow } from "matrix-js-sdk/src/matrix";
23+
import { CrossSigningKeys, IAuthDict, MatrixError, UIAFlow } from "matrix-js-sdk/src/matrix";
2424
import { IRecoveryKey } from "matrix-js-sdk/src/crypto/api";
2525
import { CryptoEvent } from "matrix-js-sdk/src/crypto";
2626
import classNames from "classnames";
27+
import { UIAResponse } from "matrix-js-sdk/src/@types/uia";
2728

2829
import { MatrixClientPeg } from "../../../../MatrixClientPeg";
2930
import { _t, _td } from "../../../../languageHandler";
@@ -90,7 +91,7 @@ interface IState {
9091
accountPasswordCorrect: boolean | null;
9192
canSkip: boolean;
9293
passPhraseKeySelected: string;
93-
error?: string;
94+
error?: boolean;
9495
}
9596

9697
/*
@@ -279,7 +280,9 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
279280
});
280281
};
281282

282-
private doBootstrapUIAuth = async (makeRequest: (authData: any) => Promise<{}>): Promise<void> => {
283+
private doBootstrapUIAuth = async (
284+
makeRequest: (authData: IAuthDict) => Promise<UIAResponse<void>>,
285+
): Promise<void> => {
283286
if (this.state.canUploadKeysWithPasswordOnly && this.state.accountPassword) {
284287
await makeRequest({
285288
type: "m.login.password",
@@ -385,7 +388,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
385388
phase: Phase.Migrate,
386389
});
387390
} else {
388-
this.setState({ error: e });
391+
this.setState({ error: true });
389392
}
390393
logger.error("Error bootstrapping secret storage", e);
391394
}

src/components/structures/auth/Registration.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,11 @@ export default class Registration extends React.Component<IProps, IState> {
246246
}
247247
} catch (e) {
248248
if (serverConfig !== this.latestServerConfig) return; // discard, serverConfig changed from under us
249-
if (e.httpStatus === 401) {
249+
if (e instanceof MatrixError && e.httpStatus === 401) {
250250
this.setState({
251251
flows: e.data.flows,
252252
});
253-
} else if (e.httpStatus === 403 || e.errcode === "M_FORBIDDEN") {
253+
} else if (e instanceof MatrixError && (e.httpStatus === 403 || e.errcode === "M_FORBIDDEN")) {
254254
// Check for 403 or M_FORBIDDEN, Synapse used to send 403 M_UNKNOWN but now sends 403 M_FORBIDDEN.
255255
// At this point registration is pretty much disabled, but before we do that let's
256256
// quickly check to see if the server supports SSO instead. If it does, we'll send

src/components/views/dialogs/ChangelogDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ export default class ChangelogDialog extends React.Component<IProps, State> {
6060
const body = await res.json();
6161
this.setState({ [repo]: body.commits });
6262
} catch (err) {
63-
this.setState({ [repo]: err.message });
63+
this.setState({ [repo]: err instanceof Error ? err.message : _t("Unknown error") });
6464
}
6565
}
6666

src/components/views/dialogs/LogoutDialog.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ interface IState {
3939
shouldLoadBackupStatus: boolean;
4040
loading: boolean;
4141
backupInfo: IKeyBackupInfo | null;
42-
error?: string;
4342
}
4443

4544
export default class LogoutDialog extends React.Component<IProps, IState> {
@@ -75,7 +74,6 @@ export default class LogoutDialog extends React.Component<IProps, IState> {
7574
logger.log("Unable to fetch key backup status", e);
7675
this.setState({
7776
loading: false,
78-
error: e,
7977
});
8078
}
8179
}

src/components/views/dialogs/ReportEventDialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ export default class ReportEventDialog extends React.Component<IProps, IState> {
272272
logger.error(e);
273273
this.setState({
274274
busy: false,
275-
err: e.message,
275+
err: e instanceof Error ? e.message : String(e),
276276
});
277277
}
278278
};

src/components/views/dialogs/security/CreateCrossSigningDialog.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ limitations under the License.
1818
import React from "react";
1919
import { CrossSigningKeys } from "matrix-js-sdk/src/client";
2020
import { logger } from "matrix-js-sdk/src/logger";
21-
import { UIAFlow } from "matrix-js-sdk/src/matrix";
21+
import { AuthDict, MatrixError, UIAFlow } from "matrix-js-sdk/src/matrix";
22+
import { UIAResponse } from "matrix-js-sdk/src/@types/uia";
2223

2324
import { MatrixClientPeg } from "../../../../MatrixClientPeg";
2425
import { _t } from "../../../../languageHandler";
@@ -79,7 +80,7 @@ export default class CreateCrossSigningDialog extends React.PureComponent<IProps
7980
// no keys which would be a no-op.
8081
logger.log("uploadDeviceSigningKeys unexpectedly succeeded without UI auth!");
8182
} catch (error) {
82-
if (!error.data || !error.data.flows) {
83+
if (!(error instanceof MatrixError) || !error.data || !error.data.flows) {
8384
logger.log("uploadDeviceSigningKeys advertised no flows!");
8485
return;
8586
}
@@ -92,7 +93,9 @@ export default class CreateCrossSigningDialog extends React.PureComponent<IProps
9293
}
9394
}
9495

95-
private doBootstrapUIAuth = async (makeRequest: (authData: any) => Promise<{}>): Promise<void> => {
96+
private doBootstrapUIAuth = async (
97+
makeRequest: (authData: AuthDict) => Promise<UIAResponse<void>>,
98+
): Promise<void> => {
9699
if (this.state.canUploadKeysWithPasswordOnly && this.state.accountPassword) {
97100
await makeRequest({
98101
type: "m.login.password",

src/components/views/dialogs/security/RestoreKeyBackupDialog.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ interface IState {
5555
backupInfo: IKeyBackupInfo | null;
5656
backupKeyStored: Record<string, ISecretStorageKeyInfo> | null;
5757
loading: boolean;
58-
loadError: string | null;
58+
loadError: boolean | null;
5959
restoreError: {
6060
errcode: string;
6161
} | null;
@@ -66,7 +66,7 @@ interface IState {
6666
passPhrase: string;
6767
restoreType: RestoreType | null;
6868
progress: {
69-
stage: ProgressState;
69+
stage: ProgressState | string;
7070
total?: number;
7171
successes?: number;
7272
failures?: number;
@@ -304,7 +304,7 @@ export default class RestoreKeyBackupDialog extends React.PureComponent<IProps,
304304
} catch (e) {
305305
logger.log("Error loading backup status", e);
306306
this.setState({
307-
loadError: e,
307+
loadError: true,
308308
loading: false,
309309
});
310310
}

src/components/views/elements/LazyRenderList.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ export default class LazyRenderList<T = any> extends React.Component<IProps<T>,
9292
this.state = LazyRenderList.getDerivedStateFromProps(props, {} as IState) as IState;
9393
}
9494

95-
public static getDerivedStateFromProps(props: IProps<unknown>, state: IState): Partial<IState> | null {
95+
public static getDerivedStateFromProps<T>(props: IProps<T>, state: IState): Partial<IState> | null {
9696
const range = LazyRenderList.getVisibleRangeFromProps(props);
9797
const intersectRange = range.expand(props.overflowMargin);
9898
const renderRange = range.expand(props.overflowItems);
@@ -105,7 +105,7 @@ export default class LazyRenderList<T = any> extends React.Component<IProps<T>,
105105
return null;
106106
}
107107

108-
private static getVisibleRangeFromProps(props: IProps<unknown>): ItemRange {
108+
private static getVisibleRangeFromProps<T>(props: IProps<T>): ItemRange {
109109
const { items, itemHeight, scrollTop, height } = props;
110110
const length = items ? items.length : 0;
111111
const topCount = Math.min(Math.max(0, Math.floor(scrollTop / itemHeight)), length);

0 commit comments

Comments
 (0)