Fix display of devices without encryption support in Settings dialog (#10977)
* Update tests to demonstrate broken behaviour * Fixes and comments * Remove exception swallowing This seems like it causes more problems than it solves.
This commit is contained in:
parent
796ed35e75
commit
5593872b7a
5 changed files with 193 additions and 79 deletions
|
@ -18,7 +18,13 @@ import { IMyDevice } from "matrix-js-sdk/src/matrix";
|
|||
|
||||
import { ExtendedDeviceInformation } from "../../../../utils/device/parseUserAgent";
|
||||
|
||||
export type DeviceWithVerification = IMyDevice & { isVerified: boolean | null };
|
||||
export type DeviceWithVerification = IMyDevice & {
|
||||
/**
|
||||
* `null` if the device is unknown or has not published encryption keys; otherwise a boolean
|
||||
* indicating whether the device has been cross-signed by a cross-signing key we trust.
|
||||
*/
|
||||
isVerified: boolean | null;
|
||||
};
|
||||
export type ExtendedDeviceAppInfo = {
|
||||
// eg Element Web
|
||||
appName?: string;
|
||||
|
|
|
@ -22,15 +22,14 @@ import { MatrixClient } from "matrix-js-sdk/src/matrix";
|
|||
* @param client - reference to the MatrixClient
|
||||
* @param deviceId - ID of the device to be checked
|
||||
*
|
||||
* @returns `true` if the device has been correctly cross-signed. `false` if the device is unknown or not correctly
|
||||
* cross-signed. `null` if there was an error fetching the device info.
|
||||
* @returns `null` if the device is unknown or has not published encryption keys; otherwise a boolean
|
||||
* indicating whether the device has been cross-signed by a cross-signing key we trust.
|
||||
*/
|
||||
export const isDeviceVerified = async (client: MatrixClient, deviceId: string): Promise<boolean | null> => {
|
||||
try {
|
||||
const trustLevel = await client.getCrypto()?.getDeviceVerificationStatus(client.getSafeUserId(), deviceId);
|
||||
return trustLevel?.crossSigningVerified ?? false;
|
||||
} catch (e) {
|
||||
console.error("Error getting device cross-signing info", e);
|
||||
const trustLevel = await client.getCrypto()?.getDeviceVerificationStatus(client.getSafeUserId(), deviceId);
|
||||
if (!trustLevel) {
|
||||
// either no crypto, or an unknown/no-e2e device
|
||||
return null;
|
||||
}
|
||||
return trustLevel.crossSigningVerified;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue