69ee8fd96a
* Add commercial licence and update config files * Update license in headers * Revert "Update license in headers" This reverts commit 7ed7949485e88889a9ffc8075a9df1f8e936777e. * Update only spdx id * Remove LicenseRef- from package.json LicenseRef- no longer allowed in npm v3 package.json This fixes the warning in the logs and failing build check.
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 OR LicenseRef-Element-Commercial
|
|
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() ?? []);
|
|
}
|