1
0
mirror of https://github.com/matrix-org/matrix-react-sdk.git synced 2025-08-09 08:42:50 +03:00

Shuttle secrets via credentials and avoid calling doSetLoggedIn twice

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski
2024-03-25 15:44:54 +00:00
parent 274999c533
commit fbfb0f4729
3 changed files with 6 additions and 13 deletions

View File

@@ -798,11 +798,7 @@ async function createOidcTokenRefresher(credentials: IMatrixClientCreds): Promis
* *
* @returns {Promise} promise which resolves to the new MatrixClient once it has been started * @returns {Promise} promise which resolves to the new MatrixClient once it has been started
*/ */
async function doSetLoggedIn( async function doSetLoggedIn(credentials: IMatrixClientCreds, clearStorageEnabled: boolean): Promise<MatrixClient> {
credentials: IMatrixClientCreds,
clearStorageEnabled: boolean,
secrets?: QRSecretsBundle,
): Promise<MatrixClient> {
checkSessionLock(); checkSessionLock();
credentials.guest = Boolean(credentials.guest); credentials.guest = Boolean(credentials.guest);
@@ -873,7 +869,7 @@ async function doSetLoggedIn(
checkSessionLock(); checkSessionLock();
dis.fire(Action.OnLoggedIn); dis.fire(Action.OnLoggedIn);
await startMatrixClient(client, /*startSyncing=*/ !softLogout, secrets); await startMatrixClient(client, /*startSyncing=*/ !softLogout, credentials.secrets);
return client; return client;
} }

View File

@@ -66,6 +66,7 @@ export interface IMatrixClientCreds {
guest?: boolean; guest?: boolean;
pickleKey?: string; pickleKey?: string;
freshLogin?: boolean; freshLogin?: boolean;
secrets?: QRSecretsBundle;
} }
/** /**

View File

@@ -27,7 +27,7 @@ import type { MSC4108SignInWithQR } from "matrix-js-sdk/src/rendezvous";
import LoginWithQRFlow from "./LoginWithQRFlow"; import LoginWithQRFlow from "./LoginWithQRFlow";
import { getOidcClientId } from "../../../utils/oidc/registerClient"; import { getOidcClientId } from "../../../utils/oidc/registerClient";
import SdkConfig from "../../../SdkConfig"; import SdkConfig from "../../../SdkConfig";
import { completeDeviceAuthorizationGrant, completeLoginWithQr } from "../../../Lifecycle"; import { completeDeviceAuthorizationGrant } from "../../../Lifecycle";
/** /**
* The intention of this enum is to have a mode that scans a QR code instead of generating one. * The intention of this enum is to have a mode that scans a QR code instead of generating one.
@@ -284,10 +284,8 @@ export default class LoginWithQR extends React.Component<IProps, IState> {
// wait for secrets: // wait for secrets:
const { secrets } = await rendezvous.loginStep5(credentials.deviceId); const { secrets } = await rendezvous.loginStep5(credentials.deviceId);
await completeLoginWithQr(credentials, secrets);
// done // done
this.props.onFinished(credentials); this.props.onFinished({ ...credentials, secrets });
} else { } else {
// MSC4108-Flow: ExistingScanned // MSC4108-Flow: ExistingScanned
const homeserverBaseUrl = homeserverBaseUrlFromStep1; const homeserverBaseUrl = homeserverBaseUrlFromStep1;
@@ -354,10 +352,8 @@ export default class LoginWithQR extends React.Component<IProps, IState> {
// wait for secrets // wait for secrets
const { secrets } = await this.state.rendezvous.loginStep5(credentials.deviceId); const { secrets } = await this.state.rendezvous.loginStep5(credentials.deviceId);
await completeLoginWithQr(credentials, secrets);
// done // done
this.props.onFinished(credentials); this.props.onFinished({ ...credentials, secrets });
} }
}; };