Private
Readonly
cryptoPrivate
devicePrivate
devicesPrivate
dirtyPrivate
hasReadonly
keyPrivate
keyPrivate
resolvePrivate
savePrivate
savePrivate
savePrivate
Readonly
serialiserPrivate
syncPrivate
userPrivate
doFire off download update requests for the given users, and update the device list tracking status for them, and the keyDownloadsInProgressByUser map for them.
resolves when all the users listed have been updated. rejects if there was a problem updating any of the users.
list of userIds
Ensures up to date keys for a list of users are stored in the session store, downloading and storing them if they're not (or if forceDownload is true).
A promise which resolves to a map userId->deviceId->DeviceInfo.
The users to fetch.
Always download the keys even if cached.
Rest
...args: Parameters<CryptoEventHandlerMap[T]>Rest
...args: Parameters<CryptoEventHandlerMap[T]>Find a device by curve25519 identity key
encryption algorithm
curve25519 key to match
Private
getthe list of users to list keys for.
Get the stored keys for a single device
device, or undefined if we don't know about this device
Get the stored device keys for a user id
list of devices, or null if we haven't managed to get a list of devices for this user yet.
the user to list keys for.
Mark the cached device list for the given user outdated.
If we are not tracking this user's devices, we'll do nothing. Otherwise we flag the user as needing an update.
This doesn't actually set off an update, so that several users can be batched together. Call refreshOutdatedDeviceLists() for that.
Optional
event: EventEmitterEvents | EmittedEventsSave the device tracking state to storage, if any changes are pending other than updating the sync token
The actual save will be delayed by a short amount of time to aggregate multiple writes to the database.
true if the data was saved, false if it was not (eg. because no changes were pending). The promise will only resolve once the data is saved, so may take some time to resolve.
Time in ms before which the save actually happens. By default, the save is delayed for a short period in order to batch multiple writes, but this behaviour can be disabled by passing 0.
Set the stored device data for a user, in raw object form Used only by internal class DeviceListUpdateSerialiser
the user to get data for
deviceId->{object}
the new devices
Sets the sync token that the app will pass as the 'since' to the /sync endpoint next time it syncs. The sync token must always be set after any changes made as a result of data in that sync since setting the sync token to a newer one will mean those changed will not be synced from the server if a new client starts up with that data.
The sync token
flag the given user for device-list tracking, if they are not already.
This will mean that a subsequent call to refreshOutdatedDeviceLists() will download the device list for the user, and that subsequent calls to invalidateUserDeviceList will trigger more updates.
Mark the given user as no longer being tracked for device-list updates.
This won't affect any in-progress downloads, which will still go on to complete; it will just mean that we don't think that we have an up-to-date list for future calls to downloadKeys.
Generated using TypeDoc
Typed Event Emitter class which can act as a Base Model for all our model and communication events. This makes it much easier for us to distinguish between events, as we now need to properly type this, so that our events are not stringly-based and prone to silly typos.