You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-11-28 05:03:59 +03:00
Add a function to flag keys for backup without scheduling a backup
For https://github.com/vector-im/riot-web/issues/10263 Starting/scheduling the backup won't help us because the token would be invalid from a server perspective. Instead, we should update what needs to be done and return a count.
This commit is contained in:
@@ -1208,6 +1208,19 @@ MatrixClient.prototype.scheduleAllGroupSessionsForBackup = async function() {
|
|||||||
await this._crypto.scheduleAllGroupSessionsForBackup();
|
await this._crypto.scheduleAllGroupSessionsForBackup();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks all group sessions as needing to be backed up without scheduling
|
||||||
|
* them to upload in the background.
|
||||||
|
* @returns {Promise<int>} Resolves to the number of sessions requiring a backup.
|
||||||
|
*/
|
||||||
|
MatrixClient.prototype.flagAllGroupSessionsForBackup = function() {
|
||||||
|
if (this._crypto === null) {
|
||||||
|
throw new Error("End-to-end encryption disabled");
|
||||||
|
}
|
||||||
|
|
||||||
|
return this._crypto.flagAllGroupSessionsForBackup();
|
||||||
|
};
|
||||||
|
|
||||||
MatrixClient.prototype.isValidRecoveryKey = function(recoveryKey) {
|
MatrixClient.prototype.isValidRecoveryKey = function(recoveryKey) {
|
||||||
try {
|
try {
|
||||||
decodeRecoveryKey(recoveryKey);
|
decodeRecoveryKey(recoveryKey);
|
||||||
|
|||||||
@@ -1288,6 +1288,18 @@ Crypto.prototype.backupGroupSession = async function(
|
|||||||
* upload in the background as soon as possible.
|
* upload in the background as soon as possible.
|
||||||
*/
|
*/
|
||||||
Crypto.prototype.scheduleAllGroupSessionsForBackup = async function() {
|
Crypto.prototype.scheduleAllGroupSessionsForBackup = async function() {
|
||||||
|
await this.flagAllGroupSessionsForBackup();
|
||||||
|
|
||||||
|
// Schedule keys to upload in the background as soon as possible.
|
||||||
|
this.scheduleKeyBackupSend(0 /* maxDelay */);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks all group sessions as needing to be backed up without scheduling
|
||||||
|
* them to upload in the background.
|
||||||
|
* @returns {Promise<int>} Resolves to the number of sessions requiring a backup.
|
||||||
|
*/
|
||||||
|
Crypto.prototype.flagAllGroupSessionsForBackup = async function() {
|
||||||
await this._cryptoStore.doTxn(
|
await this._cryptoStore.doTxn(
|
||||||
'readwrite',
|
'readwrite',
|
||||||
[
|
[
|
||||||
@@ -1305,9 +1317,7 @@ Crypto.prototype.scheduleAllGroupSessionsForBackup = async function() {
|
|||||||
|
|
||||||
const remaining = await this._cryptoStore.countSessionsNeedingBackup();
|
const remaining = await this._cryptoStore.countSessionsNeedingBackup();
|
||||||
this.emit("crypto.keyBackupSessionsRemaining", remaining);
|
this.emit("crypto.keyBackupSessionsRemaining", remaining);
|
||||||
|
return remaining;
|
||||||
// Schedule keys to upload in the background as soon as possible.
|
|
||||||
this.scheduleKeyBackupSend(0 /* maxDelay */);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307
|
/* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307
|
||||||
|
|||||||
Reference in New Issue
Block a user