* Copyright headers 1 * Licence headers 2 * Copyright Headers 3 * Copyright Headers 4 * Copyright Headers 5 * Copyright Headers 6 * Copyright headers 7 * Add copyright headers for html and config file * Replace license files and update package.json * Update with CLA * lint
60 lines
1.8 KiB
TypeScript
60 lines
1.8 KiB
TypeScript
/*
|
|
Copyright 2024 New Vector Ltd.
|
|
Copyright 2023 The Matrix.org Foundation C.I.C.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
|
|
Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
import { Device, MatrixClient } from "matrix-js-sdk/src/matrix";
|
|
|
|
/**
|
|
* Get crypto information on a specific device.
|
|
*
|
|
* Only devices with Crypto support are returned. If the MatrixClient doesn't support cryptography, `undefined` is
|
|
* returned.
|
|
*
|
|
* @param client - Matrix Client.
|
|
* @param userId - ID of the user owning the device.
|
|
* @param deviceId - ID of the device.
|
|
* @param downloadUncached - If true, download the device list for users whose device list we are not
|
|
* currently tracking. Defaults to false.
|
|
*
|
|
* @returns Information on the device if it is known.
|
|
*/
|
|
export async function getDeviceCryptoInfo(
|
|
client: MatrixClient,
|
|
userId: string,
|
|
deviceId: string,
|
|
downloadUncached?: boolean,
|
|
): Promise<Device | undefined> {
|
|
const crypto = client.getCrypto();
|
|
if (!crypto) {
|
|
// no crypto support, no device.
|
|
return undefined;
|
|
}
|
|
|
|
const deviceMap = await crypto.getUserDeviceInfo([userId], downloadUncached);
|
|
return deviceMap.get(userId)?.get(deviceId);
|
|
}
|
|
|
|
/**
|
|
* Get the IDs of the given user's devices.
|
|
*
|
|
* Only devices with Crypto support are returned. If the MatrixClient doesn't support cryptography, an empty Set is
|
|
* returned.
|
|
*
|
|
* @param client - Matrix Client.
|
|
* @param userId - ID of the user to query.
|
|
*/
|
|
|
|
export async function getUserDeviceIds(client: MatrixClient, userId: string): Promise<Set<string>> {
|
|
const crypto = client.getCrypto();
|
|
if (!crypto) {
|
|
return new Set();
|
|
}
|
|
|
|
const deviceMap = await crypto.getUserDeviceInfo([userId]);
|
|
return new Set(deviceMap.get(userId)?.keys() ?? []);
|
|
}
|